Overview
The V3 API is the current version of BOB Gateway. It adds non-EVM chains (Tron & Solana), richer settlement data, and cross-chain token swaps with affiliate fees. V1 and V2 endpoints remain reachable, but they are superseded and receive no new features — new integrations should target/v3, and existing ones should migrate.
If you use the
@gobob/bob-sdk SDK, you don’t call versioned endpoints directly — the SDK calls /v3 under the hood. Skip to Migrating the SDK for the package-level changes. The endpoint sections below are for integrators calling the API directly.I'm on V2
Multi-chain, chain-aware
register-tx, USD on order info, tokenSwap affiliates.I'm on V1
Everything in V1 → V2, then everything in V2 → V3.
What changed at a glance
Upgrade from V2
1. Change the base path
Every endpoint moves from/v2/... to /v3/.... The route names are unchanged.
2. Update get-quote parameters
Three parameters were removed and two were added. Supplying a removed parameter is rejected by the gateway.
3. Update register-tx bodies
The onramp body is unchanged. For offramp and tokenSwap, evm_txhash is replaced by src_tx_hash + src_chain — the source-chain transaction identifier and the chain it was broadcast on.
4. Handle the tagged transaction union from create-order
Because orders can now settle on EVM, Tron, or Solana, POST /v3/create-order returns a tagged GatewayTxData union for offramp/tokenSwap. Dispatch on type:
Addresses and token identifiers are
0x… on EVM chains and Base58 on Tron/Solana. Use GET /v3/get-routes to discover supported token identifiers per chain.5. Read USD values from order info
srcInfo, dstInfo, settled transfers (received_tokens / refunded_tokens), and pending_btc_payment now each carry an optional usd field, valued at order time. In V2, usd appeared only on quote amounts and fee-breakdown lines. Existing code keeps working; opt in by reading the new field where you display fiat estimates.
6. Affiliate fees on tokenSwap
onramp and offramp keep the V2 multi-recipient affiliates list. tokenSwap is different: the fee is charged by the aggregator (Bungee/Velora) on the source chain, and aggregators allow only one partner fee per swap. A tokenSwap quote embeds a single resolved affiliate ({ address, bps }); passing more than one affiliate returns the new TOO_MANY_AFFILIATES error. See the Monetization section for details.
7. New error codes
Handle these V3 additions alongside your existing error handling:Gateway no longer exposes a
bumpFeeTx EVM transaction for X-to-BTC orders — it manages BTC-payout fee bumps internally. Track the outgoing payout via status.inProgress.pending_btc_payment ({ txid, amount, usd }) instead.V2 upgrade checklist
- Repoint all endpoints from
/v2to/v3. - Add
ownerAddresstoget-quote; addrefundAddressfor onramps where desired. - Remove
gasRefill,strategyTarget, andstrategyMessagefromget-quote. - Swap
evm_txhashforsrc_tx_hash+src_chaininofframp/tokenSwapregister-txbodies. - Dispatch on the
create-ordertransactiontype(evm/tron/solana). - Send exactly one affiliate on
tokenSwapquotes. - Handle
MISSING_OWNER_ADDRESS,TOO_MANY_AFFILIATES,AFFILIATE_FEES_NOT_SUPPORTED_FOR_ROUTE.
Upgrade from V1
V1 → V3 is V1 → V2 followed by V2 → V3. Apply the V1 → V2 changes below, then work through everything in Upgrade from V2.V1 → V2 changes
1
Affiliate fees: affiliateId → affiliates
V1’s single
affiliateId parameter is replaced by an affiliates list of comma-separated <address>:<bps> pairs, so a quote can split fees across multiple recipients (1 bps = 0.01%).2
Third route: layerZero → tokenSwap
The V1
layerZero variant is replaced by tokenSwap (EVM↔EVM token swaps in V2; cross-chain in V3). The variant key changes in both the create-order body and the register-tx body.3
get-orders is now paginated
V1’s Loop on
GET /v1/get-orders/{user_address} returned a bare JSON array. V2 returns a paginated object and accepts cursor and limit query parameters.nextCursor (null/absent means the last page) instead of reading the whole array at once.4
USD values and price impact on quotes
V2 quote amounts use
GatewayTokenAmountV2, which carries an optional usd field on every token amount and on each fee-breakdown line. V2 quotes also expose priceImpact (a fraction) and priceImpactUsd. These are additive — read them where you want to display fiat estimates or slippage.V1 → V3 checklist
- Replace
affiliateIdwith theaffiliateslist. - Rename the
layerZerovariant totokenSwapincreate-orderandregister-tx. - Switch
get-ordersparsing to the paginated{ orders, nextCursor }shape. - Then apply the full V2 upgrade checklist.
Migrating the SDK
The@gobob/bob-sdk SDK hides the API version — upgrading the package moves you to /v3. Two breaking changes at the SDK surface matter when you upgrade:
1
Constructor takes an options object
2
getQuote params: affiliates array + required ownerAddress
gasRefill, strategyTarget, and strategyMessage are no longer sent to the gateway.3
getOrders is paginated and status is discriminated
getOrders returns { orders, nextCursor }, and each order.status is a discriminated object (inProgress / success / failed / refunded) rather than a bare string. See the integration guide for the full read pattern.Next Steps
Integration Guide
The full V3 integration walkthrough
API Reference
Complete V3 endpoint documentation
Fees
The full fee and affiliate model
Supported Routes
Chains and tokens available on V3