Skip to main content
API updates and changes in reverse chronological order.
August 2026: Additive integrator fees and one flat rate limit

Set your own fee, keep all of it

  • integratorFeeBps on /swap, /instructions, and /cpi/route-accounts charges your own fee on top of Vulcx’s. You keep 100% of it, paid on-chain to your referrer wallet in the same transaction as the swap.
  • It replaces the referral share. Your rate and Vulcx’s platformFeeBps are 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 return 400 rather than failing on-chain.
  • Responses now report the breakdown separately: platformFeeBps / platformFeeAmount and integratorFeeBps / integratorFeeAmount, alongside the pool fee in feeAmount.
  • See Fees.
feeAmount has always been the DEX pool fee, but the reference described it as the aggregator fee. Vulcx’s own cut is platformFeeAmount. If you were reading feeAmount as what Vulcx takes, it was never that number.

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 /swap or /instructions build 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 quoteId now also carries quoteSignature (base58 Ed25519 over the canonical vulcx-quote-v1 message) and quoteExpiresAtMs — provable prices you can verify offline.
  • New public endpoint GET /.well-known/vulcx-quote-signer serves 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, and excludeDexes constrain routing so the account set stays inside what your program pre-provisioned. Constrained requests bypass caches and never split; excluding moonit lifts the authority-writable requirement.
  • Per-request referrer fee share: a referrer wallet on /swap, /instructions, and /cpi/route-accounts earns the protocol’s on-chain referral share, paid in the output token. CPI responses include referrerAta (must pre-exist).
  • vulcx-cpi Rust crate: typed route-CPI builders (RouteAccounts, RouteArgs, per-hop structs, invoke_route_signed) with CI parity tests against the deployed program, plus an api-feature from_api_response bridge that parses /cpi/route-accounts JSON 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 400 for 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

  • sessionAccount on POST /api/v1/instructions builds 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 (requiredTokenAccounts in 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 adds sessionAccount, referrer, and the signed-quote fields.
July 2026: Firm quotes — the price you see is the price you commit

Firm quotes

  • quoteId on every quote: GET /api/v1/quote responses and WebSocket quote pushes now carry a quoteId, validForMs (~3s), and firmForMs (~400ms).
  • Route pinning: pass quoteId to POST /api/v1/swap or POST /api/v1/instructions to replay the exact quoted route with min-out anchored to the quoted price — no silent re-quote.
  • Firm redemption: add "firm": true within firmForMs and slippage collapses to the server’s firm margin (10 bps) around the quoted price — price-or-fail; drift past the margin returns 409 before any transaction is built.
  • New error contract: 410 quote expired, 409 route gone / price drifted, 403 quoteId from another key, 400 request 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/sdk surfaces quoteId/firm plus QuoteExpiredError/QuoteStaleError; the widget redeems quoteIds automatically and re-quotes on 409/410.
  • Slippage fix: builders now send the raw quote and the on-chain program applies slippageBps exactly once — the enforced min-out equals the displayed minAmountOut. Previously the effective tolerance was ~2× the requested bps, so expect slippage failures to now trip at the advertised threshold.
See the full guide: Firm quotes.
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.
Supported DEXs on Fogo: Valiant (concentrated liquidity), Fluxbeam (AMM), Moonit (bonding curves).Features: multi-hop routing (up to 5 hops), ExactIn/ExactOut modes, slippage protection, price impact severity classification, Address Lookup Table (ALT) support.
Last modified on August 31, 2026