Skip to main content

Error Codes

All error responses use the same format:

HTTP status codes

API errors

Authentication errors (all /api/v1/* endpoints)

Quote errors (GET /api/v1/quote)

Swap errors (POST /api/v1/swap)

A failed simulation is not an error status. The request returns 200 with simulation.success: false and the failure detail in the body — check that field rather than the HTTP status.
GET /quote will return an ExactOut quote over a Fluxbeam or Moonit route, because the DEX restriction is enforced when the transaction is built, not when the route is priced. Handle the 400 at /swap or /instructions rather than assuming a successful quote implies an executable ExactOut swap.

Instructions errors (POST /api/v1/instructions)

Firm-quote errors (POST /api/v1/swap, POST /api/v1/instructions with quoteId)

See Firm quotes for how quoteId and firm work.

Simulation result errors

When skipSimulation is false, the swap response includes a simulation object:

On-chain errors

These surface after a signed transaction is submitted — in the transaction’s error and program logs, not in an HTTP response. They come from two sources: the Vulcx aggregator program itself, and the Solana runtime / SPL Token program underneath it.

Vulcx aggregator program errors

Anchor custom errors from program Vu1cUxynmbPUsFqVz51FJJ2y69vX2yrkTS13ajomd9D. In a failed transaction they appear as Custom(<code>) on the aggregator instruction and by name in the program logs. Administration and validation errors (6000 InvalidAmount, 6004 InvalidIndex, 60126015 InvalidFeeRecipient / FeeTooHigh / InvalidAdmin / ProtocolNotInitialized, 6018 InvalidStepCount) occur only on protocol-admin instructions or malformed hand-built transactions — not on engine-built swaps.

Solana runtime & SPL Token errors

These are not Vulcx program errors — they come from the network or the token program, so they carry no 6xxx code.
Last modified on August 31, 2026