API reference

The HTTP API behind the site and the SDK. Amounts are base units as decimal strings; times are ISO 8601.

Routes

RouteWhat it answers
GET /v1/quoteQuote a swap and its fee plans
POST /v1/swap/buildBuild an unsigned swap
POST /v1/sendRelay wallet-signed bytes with the vault rebate address
GET /v1/transactions/:idFollow a relayed transaction and rebate
GET /v1/feesRead Helius priority fees and Jito landed tips
GET /v1/fees/planPlan a sample swap at every speed
GET /v1/tokensBrowse token vaults
GET /v1/tokens/searchSearch token identities by name, symbol, or mint
GET /v1/tokens/:mintRead a vault, its auction, burns and rebates
GET /v1/auctionsBrowse live auctions and vaults ready to start
POST /v1/vault/open/buildBuild an open-vault transaction
POST /v1/auction/start/buildBuild a start-auction transaction
POST /v1/burn/buildBuild a balance burn or atomic buy and burn
GET /v1/balancesRead native SOL and token balances for a wallet
GET /v1/statsTotals, program config and protocol vault
POST /v1/protocol/route/buildBuild 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

  1. GET /v1/quote with from, to and amount. The answer carries the out amount, the minimum received, the route, the vault the rebate goes to and the fee plan at every speed.
  2. POST /v1/swap/build with the wallet, the quoteId and a speed. The answer is an unsigned v0 transaction, base64.
  3. Sign it with signTransaction. Do not send it yourself: the relay is what carries the rebate address.
  4. POST /v1/send with the signed bytes and the buildId.
  5. GET /v1/transactions/:id until its state settles. Once it lands, rebate says what the vault received from this trade.

Requests and answers

RouteSendAnswer
/quotefrom, to, amount, wallet, slippageBpsid, from, to, inputAmount, outputAmount, minimumReceived, slippageBps, priceImpactPct, route, vault, feePlans, expiresAt, asOf
/swap/buildwallet, quoteId, speedid, action, transactionBase64, expiresAt, lastValidBlockHeight, contextSlot, feePlan, vault, quote, burn, fixture
/sendtransactionBase64, buildId, mint, speedid, buildId, action, state, signature, mint, vault, feePlan, inputAmount, outputAmount, slot, rebate, error, createdAt, updatedAt
/transactions/:ididid, buildId, action, state, signature, mint, vault, feePlan, inputAmount, outputAmount, slot, rebate, error, createdAt, updatedAt
/feesmintglobal, mint, forMint, unit, tips, tipUnit, asOf
/fees/planfrom, to, amount, wallet, transactionBase64amount, plans, asOf
/tokenscursor, limit, search, sort, orderitems, page, asOf
/tokens/searchq, limititems, asOf
/tokens/:mintburnsCursor, rebatesCursor, limittoken, vault, burns, rebates, asOf
/auctionscursor, limit, sort, orderlive, ready, asOf
/vault/open/buildwallet, mint, speedid, action, transactionBase64, expiresAt, lastValidBlockHeight, contextSlot, feePlan, vault, quote, burn, fixture
/auction/start/buildwallet, mint, speedid, action, transactionBase64, expiresAt, lastValidBlockHeight, contextSlot, feePlan, vault, quote, burn, fixture
/burn/buildwallet, mint, speed, mode, maxTokenAmount, maxBuyLamports, slippageBpsid, action, transactionBase64, expiresAt, lastValidBlockHeight, contextSlot, feePlan, vault, quote, burn, fixture
/balanceswallet, mintsitems, asOf
/statsnothingtotalReceivedLamports, tokensBurnedCount, burnsCount, recentBurns, programId, config, vaultRentLamports, protocol, asOf
/protocol/route/buildwallet, speedid, 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.

json
{
  "error": {
    "code": "NO_ROUTE",
    "message": "No route between these tokens for this amount.",
    "retryable": false,
    "stage": "build"
  }
}