August 2026: Additive integrator fees and one flat rate limit
Set your own fee, keep all of it
integratorFeeBpson/swap,/instructions, and/cpi/route-accountscharges your own fee on top of Vulcx’s. You keep 100% of it, paid on-chain to yourreferrerwallet in the same transaction as the swap.- It replaces the referral share. Your rate and Vulcx’s
platformFeeBpsare now independent rates that add — yours is no longer a percentage carved out of ours. Their sum is capped at 100 bps; over-cap requests return400rather than failing on-chain. - Responses now report the breakdown separately:
platformFeeBps/platformFeeAmountandintegratorFeeBps/integratorFeeAmount, alongside the pool fee infeeAmount. - See Fees.
One rate limit, for everyone
- Rate limits no longer vary by plan. Every key gets the same published budget: 100 cost units/second, burst 200. Plans differ only in how many keys you may hold.
- Buckets are debited by request cost, not request count: a quote costs 1, a pools or CPI call 3, a
/swapor/instructionsbuild 5. That is 100 quotes/second, or 20 builds/second, or any mix. - The previously published per-plan ladder (free 5 rps, pro 50, scale 150, enterprise 500) never matched what the service enforced. If you sized an integration against it, you have more headroom than you were told, not less.
- See Rate limits.
July 2026: Signed quotes, the CPI toolkit, and Fogo Sessions firm mode
Signed quotes
- Every quote with a
quoteIdnow also carriesquoteSignature(base58 Ed25519 over the canonicalvulcx-quote-v1message) andquoteExpiresAtMs— provable prices you can verify offline. - New public endpoint
GET /.well-known/vulcx-quote-signerserves the verification key, message format, and encoding. See Firm quotes → Signed quotes.
CPI toolkit
- Route corridors on
POST /api/v1/cpi/route-accounts:allowedIntermediateMints(max 16),maxHops, andexcludeDexesconstrain routing so the account set stays inside what your program pre-provisioned. Constrained requests bypass caches and never split; excludingmoonitlifts the authority-writable requirement. - Per-request referrer fee share: a
referrerwallet on/swap,/instructions, and/cpi/route-accountsearns the protocol’s on-chain referral share, paid in the output token. CPI responses includereferrerAta(must pre-exist). vulcx-cpiRust crate: typed route-CPI builders (RouteAccounts,RouteArgs, per-hop structs,invoke_route_signed) with CI parity tests against the deployed program, plus anapi-featurefrom_api_responsebridge that parses/cpi/route-accountsJSON into typed builders and fails loudly on layout drift.- WebSocket
subscribe_route: the stream now pushes CPI route templates ({"type":"route","seq",…}), only when the template — route plan, accounts, or LUTs — actually changes. Liquidation keepers fire with zero HTTP round-trips. Max 32 route subscriptions per connection. - Structured
400for multi-hop ExactOut naming the ExactIn-with-buffer pattern, instead of an opaque on-chain failure. - See the updated On-Chain Swaps (CPI) guide.
Fogo Sessions
sessionAccountonPOST /api/v1/instructionsbuilds session-shaped routes: the session account signs, the wallet’s ATAs hold the funds, the aggregator’s session-signer PDA rides along, and no ATA-create/SOL-wrap instructions are emitted (requiredTokenAccountsin the response lists what must exist). Session routes are currently Valiant-V1-only.- Widget 0.4.0 firm mode:
setSession(adapter)runs swaps as firm (price-or-fail) session sends — no wallet popup, price locked to what the user saw. SDK 0.4.0 addssessionAccount,referrer, and the signed-quote fields.
July 2026: Firm quotes — the price you see is the price you commit
Firm quotes
quoteIdon every quote:GET /api/v1/quoteresponses and WebSocket quote pushes now carry aquoteId,validForMs(~3s), andfirmForMs(~400ms).- Route pinning: pass
quoteIdtoPOST /api/v1/swaporPOST /api/v1/instructionsto replay the exact quoted route with min-out anchored to the quoted price — no silent re-quote. - Firm redemption: add
"firm": truewithinfirmForMsand slippage collapses to the server’s firm margin (10 bps) around the quoted price — price-or-fail; drift past the margin returns409before any transaction is built. - New error contract:
410quote expired,409route gone / price drifted,403quoteId from another key,400request mismatch. See Error Codes. - Stream invalidation: the WebSocket stream pushes
{"type":"invalidate","quoteId"}when a broadcast quote drifts past the firm margin. - SDK 0.3.0 / Widget 0.3.0:
@vulcx/sdksurfacesquoteId/firmplusQuoteExpiredError/QuoteStaleError; the widget redeems quoteIds automatically and re-quotes on409/410. - Slippage fix: builders now send the raw quote and the on-chain program applies
slippageBpsexactly once — the enforced min-out equals the displayedminAmountOut. Previously the effective tolerance was ~2× the requested bps, so expect slippage failures to now trip at the advertised threshold.
March 2026: Initial public release on Fogo
Initial release
- GET /api/v1/quote: Get best swap route with price impact and fee breakdown.
- POST /api/v1/swap: Build unsigned swap transactions with optional simulation.
- POST /api/v1/instructions: Get raw instructions for custom transaction composition.
- GET /health: Service health check.