Skip to main content
Each table covers a single endpoint and is updated from support tickets at each release. Jump straight to the endpoint you’re calling.
Building error-handling logic or LLM tools? Read /resources/errors.json — it mirrors every row on this page in machine-readable form, with endpoint, status, match, cause, fix, and docs fields per error.

Delta V2 API

GET /v2/delta/prices

SymptomRoot causeFix
400 No route for a same-chain pairToken pair has no liquidity, or srcDecimals / destDecimals are wrongRe-check decimals against the token contract; try mode=ALL on GET /v2/quote to see whether Market can route it
400 No route for a crosschain pairdestChainId lane not supported by any active bridge for this tokenCall GET /v2/delta/prices/bridge-routes to see which lanes + tokens are supported
route.bridge is null on a crosschain quotesrcToken and destToken happen to be the same address on different chains and the bridge collapsedCompare route.origin.input.token.chainId vs route.destination.output.token.chainId directly; don’t infer crosschain from bridge !== null alone
alternatives is emptySame-chain quotes never return alternatives — only crosschainUse route directly for same-chain; check alternatives.length > 0 before showing a bridge picker
partner.feePercent higher than expectedRegistered partner fee + partnerFeeBps override compoundedSet partnerFeeBps=0 (or omit) to use the registered fee only; passing both stacks them
400 Token not supportedOne of srcToken / destToken isn’t whitelisted on chainIdCall GET /v2/delta/prices/is-token-supported before quoting
Updated from support tickets at each release. Last updated: 2026-05-27.

POST /v2/delta/orders/build

SymptomRoot causeFix
400 route validation failedroute object was mutated, re-stringified, or had numeric fields cast to numbers (they’re strings)Pass route from GET /v2/delta/prices verbatim — don’t normalize, sort, or re-encode amounts
400 missing deadlinedeadline is required on every Delta order; the build call rejects when it’s absentPass deadline as unix seconds (e.g. Math.floor(Date.now() / 1000) + 3600); past it the order is unfillable
400 InvalidTWAPParams / InvalidTWAPBuyParamsTWAP / TWAPBuy without interval, numSlices, and a totals fieldProvide all four: interval (seconds, ≥ 60), numSlices (≥ 2), totalSrcAmount (TWAP), or totalDestAmount + maxSrcAmount (TWAPBuy)
400 InvalidTWAPSrcAmount / InvalidTWAPBuyDestAmountSlice amount in route.origin doesn’t equal floor(total / numSlices)Re-quote per slice with amount = floor(total / numSlices) and pass the totals separately; non-divisible remainders are intentional and you can’t ship slice×n
400 InvalidExternalOrderParamsorderType: ExternalOrder without handler and dataEncode handler-specific bytes into data and pass the on-chain handler address as handler
400 InvalidProductiveOrderParamsorderType: ProductiveOrder without strategyPass the on-chain strategy address as strategy
slippage results in much worse fills than expectedSlippage is in basis points, not percent: 100 = 1.00%, not 100%Convert mental percent to bps: 0.5% → 50, 1% → 100, 5% → 500 (max 10_000 = 100%)
Updated from support tickets at each release. Last updated: 2026-06-09.

POST /v2/delta/orders

SymptomRoot causeFix
400 Invalid signatureSigned payload doesn’t match order byte-for-byteSign toSign from POST /v2/delta/orders/build exactly; pass order: toSign.value to submit (not the whole toSign object)
400 Order expiredLong pause between build and submit; deadline already passed when relayer validatedRebuild on submit-time, or pass a longer deadline (seconds since epoch) at build
400 InsufficientAllowanceUser approved the wrong spender — usually the Augustus router instead of the Delta contractApprove route.spender (returned by GET /v2/delta/prices) — the Delta contract, not Augustus
400 InsufficientBalanceSource-token balance dropped between price and submitRe-quote and rebuild; show the user a fresh balance before signing
200 OK then stuck at PENDINGNo agent bid the auction (size, pair, or chain) within the windowPoll GET /v2/delta/orders/; cancel via POST /v2/delta/orders/cancel and re-quote if past your SLA
Order transitions to SUSPENDEDAllowance was revoked or balance moved post-submissionRe-approve and the relayer will pick the order back up
Updated from support tickets at each release. Last updated: 2026-05-27.

POST /v2/delta/orders/cancel

SymptomRoot causeFix
400 Invalid signatureCancellation EIP-712 typed data assembled wrong (wrong chainId or wrong domain)Sign the relayer’s cancel payload — the SDK’s signCancelDeltaOrderRequest handles this for you
400 Order already settledOne or more orderIds are in a terminal state (COMPLETED, FAILED, EXPIRED, CANCELLED)Pre-filter orderIds to those with status in PENDING / AWAITING_SIGNATURE / ACTIVE / SUSPENDED
200 OK but order doesn’t move to CANCELLINGAn auction had already started for that order — cancellation queues but won’t kill an in-flight fillWait one polling interval; the order moves to CANCELLED once the relayer confirms
400 orderIds.length > 100Tried to batch-cancel too many in one callChunk into batches of ≤ 100
Updated from support tickets at each release. Last updated: 2026-05-27.

Market API

GET /prices

SymptomRoot causeFix
400 Invalid srcToken or Invalid destTokenNative ETH sent as 0x0 or lowercase 0xeee...eUse the mixed-case placeholder 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
422 Unsupported chainnetwork not in the supported-chain list for the current API hostHit GET /chains to confirm the live list; see Chains & contracts
priceRoute.maxImpactReached: truePrice impact exceeds the configured ceiling for this routeReduce trade size, split into hops, or pass an explicit higher maxImpact if your product accepts the risk
Stale priceRoute rejected by POST /transactions/:chainIdMore than ~30s elapsed between quote and tx-build, route became invalidRe-quote and pass the fresh priceRoute verbatim; never cache across user gestures
429 from the gatewayFree-tier rate limit hit, or your Pro plan quota exceededSee Pro API accounts to lift rate limits, or back off and retry
Updated from support tickets at each release. Last updated: 2026-05-15.

POST /transactions/:chainId

SymptomRoot causeFix
400 Invalid priceRoute or Stale priceRoutepriceRoute modified between quote and tx-build, or older than ~30sPass the priceRoute block from GET /prices verbatim; re-quote if more than ~30s elapsed
Calldata reverts on-chain with INSUFFICIENT_OUTPUTSlippage tolerance too tight for current market depthIncrease slippage (in bps) on the rebuild, or surface a higher tolerance to the user before retrying
Calldata reverts with TransferHelper: TRANSFER_FROM_FAILEDERC-20 allowance to the v6.2 router insufficient (or pointed at the legacy v5 router)Approve the Augustus v6.2 router address — see Chains & contracts; migrating off v5 → Augustus v5 → v6.2
txData gas estimate fails on the user’s RPCRPC gas estimation can’t simulate the exact block conditionsUse the gas field returned in the response as a baseline + 15–25% headroom
Calldata builds for the wrong chainnetwork path parameter mismatched against the priceRoute.networkAlways derive :network from priceRoute.network, not from a client-side variable
422 Partner not allowedYour partner tier doesn’t permit the requested fee/surplus configurationDrop the disallowed param, or upgrade to a Pro API account
Updated from support tickets at each release. Last updated: 2026-05-15.
Last modified on June 11, 2026