Build on a verifiable claim layer for Solana.
Indexer GraphQL, three SDKs, and four on-chain programs. The page below documents the v1.1 surface — the SDK and the hosted indexer aren't shipped yet. Until then, integrate directly against the on-chain program (the Anchor IDL is in the repo).
Quickstart · 30 seconds to first query
Every refinery, snapshot, and claim is queryable through one endpoint. No auth required for read; sign-with-wallet for writes.
Fetch active refineries
GRAPHQL# curl https://api.sof.xyz/v1/graphql query ActiveRefineries { refineries(status: ACTIVE, first: 20) { id token { symbol mint } pool { remaining total } snapshots(last: 5) { merkleRoot holders takenAt } operator { wallet reputation verified } closesAt } }
Submit a claim
TS · @sof/sdkimport { SOF, Cluster } from "@sof/sdk"; const sof = new SOF({ cluster: Cluster.MainnetBeta }); // auto-detects eligibility from on-chain balance const proof = await sof.eligibility({ refineryId: "REF…3xQ", wallet: pubkey, }); if (proof.eligible) { const tx = await sof.claim(proof); await wallet.signAndSend(tx); }
API endpoints
REST + GraphQL + WebSocket. Free tier: 50,000 requests / month per key. Pro tier: pay-as-you-go.
SDKs
Three first-party clients. All open-source, all support both web and Node. Rust SDK is server-only.
Guides
Walkthroughs covering the most common integrations.
Launch your first refinery
End-to-end: from token mint to first claim. ~12 minutes.
Embed a claim button on your site
Drop-in React component for token-holder rewards. ~5 minutes.
Build a leaderboard with the indexer
Subscribe to claims, rank wallets by frequency. ~15 minutes.
Verify a refinery's program on-chain
Match deployed bytecode against the verified hash.
Reputation oracle integration
Read another wallet's reputation in your own program.
Self-hosting the indexer
Run the indexer locally for backtesting or private claims.