API reference
The HTTP API behind the site and the SDK. Amounts are base units as decimal strings; times are ISO 8601.
Routes
| Route | What it answers |
|---|---|
| GET /v1/quote | Quote a swap and its fee plans |
| POST /v1/swap/build | Build an unsigned swap |
| POST /v1/send | Relay wallet-signed bytes with the vault rebate address |
| GET /v1/transactions/:id | Follow a relayed transaction and rebate |
| GET /v1/fees | Read Helius priority fees and Jito landed tips |
| GET /v1/fees/plan | Plan a sample swap at every speed |
| GET /v1/tokens | Browse token vaults |
| GET /v1/tokens/search | Search token identities by name, symbol, or mint |
| GET /v1/tokens/:mint | Read a vault, its auction, burns and rebates |
| GET /v1/auctions | Browse live auctions and vaults ready to start |
| POST /v1/vault/open/build | Build an open-vault transaction |
| POST /v1/auction/start/build | Build a start-auction transaction |
| POST /v1/burn/build | Build a balance burn or atomic buy and burn |
| GET /v1/balances | Read native SOL and token balances for a wallet |
| GET /v1/stats | Totals, program config and protocol vault |
| POST /v1/protocol/route/build | Build permissionless routing of the protocol holding balance |
The same contract is published as OpenAPI at /openapi.json on the API’s origin, and as the typed client in @backburn/contract.
A swap, call by call
GET /v1/quotewithfrom,toandamount. The answer carries the out amount, the minimum received, the route, the vault the rebate goes to and the fee plan at every speed.POST /v1/swap/buildwith thewallet, thequoteIdand aspeed. The answer is an unsigned v0 transaction, base64.- Sign it with
signTransaction. Do not send it yourself: the relay is what carries the rebate address. POST /v1/sendwith the signed bytes and thebuildId.GET /v1/transactions/:iduntil its state settles. Once it lands,rebatesays what the vault received from this trade.
Requests and answers
| Route | Send | Answer |
|---|---|---|
| /quote | from, to, amount, wallet, slippageBps | id, from, to, inputAmount, outputAmount, minimumReceived, slippageBps, priceImpactPct, route, vault, feePlans, expiresAt, asOf |
| /swap/build | wallet, quoteId, speed | id, action, transactionBase64, expiresAt, lastValidBlockHeight, contextSlot, feePlan, vault, quote, burn, fixture |
| /send | transactionBase64, buildId, mint, speed | id, buildId, action, state, signature, mint, vault, feePlan, inputAmount, outputAmount, slot, rebate, error, createdAt, updatedAt |
| /transactions/:id | id | id, buildId, action, state, signature, mint, vault, feePlan, inputAmount, outputAmount, slot, rebate, error, createdAt, updatedAt |
| /fees | mint | global, mint, forMint, unit, tips, tipUnit, asOf |
| /fees/plan | from, to, amount, wallet, transactionBase64 | amount, plans, asOf |
| /tokens | cursor, limit, search, sort, order | items, page, asOf |
| /tokens/search | q, limit | items, asOf |
| /tokens/:mint | burnsCursor, rebatesCursor, limit | token, vault, burns, rebates, asOf |
| /auctions | cursor, limit, sort, order | live, ready, asOf |
| /vault/open/build | wallet, mint, speed | id, action, transactionBase64, expiresAt, lastValidBlockHeight, contextSlot, feePlan, vault, quote, burn, fixture |
| /auction/start/build | wallet, mint, speed | id, action, transactionBase64, expiresAt, lastValidBlockHeight, contextSlot, feePlan, vault, quote, burn, fixture |
| /burn/build | wallet, mint, speed, mode, maxTokenAmount, maxBuyLamports, slippageBps | id, action, transactionBase64, expiresAt, lastValidBlockHeight, contextSlot, feePlan, vault, quote, burn, fixture |
| /balances | wallet, mints | items, asOf |
| /stats | nothing | totalReceivedLamports, tokensBurnedCount, burnsCount, recentBurns, programId, config, vaultRentLamports, protocol, asOf |
| /protocol/route/build | wallet, speed | id, action, transactionBase64, expiresAt, lastValidBlockHeight, contextSlot, feePlan, vault, quote, burn, fixture |
Errors
Every failure is one envelope: a stable code, a sentence, whether retrying can help, and the stage that failed.
{
"error": {
"code": "NO_ROUTE",
"message": "No route between these tokens for this amount.",
"retryable": false,
"stage": "build"
}
}