There is no API key. Every call below works against the public API as written. The only thing you may want first is a partner
refId for attribution.Prerequisites
- A live campaign on a vault, pool, or token you care about. Campaigns are set up with the Boost team (see Launch a Campaign).
- Node 18+ or any runtime with a global
fetch, andviemfor the claim step. - Optionally, a partner
refIdso Boost can attribute your traffic. Ask the Boost team to register one.
The Mental Model in 30 Seconds
Two things explain most of the API:- Two chains per campaign. Positions are tracked on the event chain (
target.chainId); claims are submitted on the reward chain (id.chainId). They match for most campaigns and differ for cross-chain ones. Filter by the event chain, connect wallets to the reward chain. - Earned is not claimable. Rewards accrue continuously, but they only become claimable once a merkle root covering them is published on-chain. Show
accumulatedRewardsin the earnings row; drive the button offclaims.get().claimable.
Step 1: Install
viem is a peer dependency (>=2.21.3 <3) because the claim helpers accept a viem WalletClient. Prefer raw REST? Every step below shows the underlying endpoint. See the API reference.
Step 2: Create a Client
refId is sent as the x-boost-ref-id header on every request; it is attribution, not authentication. Omit it and everything still works.
Full configuration in the SDK reference.
Step 3: Find a Campaign
Look up active campaigns rewarding the position you care about. Match on the event chain and the target address.target.poolId instead of the address. To browse rather than look up, use campaigns.list with chainId and status filters.
Discovery hides campaigns that require a Forwarder deposit unless you pass
includeForwarderRequired: true. If your integration routes deposits through the Forwarder, opt in. See Forwarder Deposits.Step 4: Show What They’ve Earned
accumulatedRewards is the lifetime accrual, the number that ticks up. It is not the claimable number. Only campaigns the user has already entered appear here; to find campaigns they could earn from, call campaigns.list with userAddress.
Step 5: Claim
Fetch the proof, guard the obvious failure modes, then submit.tbi.claim will fetch the proof itself if you omit it, but fetching first lets you check claimable before prompting a wallet.
address no matter who sends the transaction, so relayer and account-abstraction flows work with no special handling.
Put It Together
A complete vault-to-claim flow:What’s Next
Display Campaign Stats
Show a live APR next to your pool: one request, no wallet needed.
Show User Rewards
Earned versus claimable, and every UI state in between.
Claim Rewards
Simulating, batching, gas sponsorship, and non-viem stacks.
TypeScript SDK
The full client surface, configuration, and wagmi integration.