Submit signed quote legs atomically
POST/trade/submit
Idempotent on (quote_id, quote_index). The per-leg signed payload IS the
authorization proof; no ownership_proof is required here. Re-quote (410 quote_stale) if the cached snapshot expired between issue and submit.
A quote that carries your integrator fee (integrator_fee_bps > 0 on any leg) can
only be submitted with the same X-API-Key that quoted it; anything else is 403 quote_integrator_mismatch and nothing is broadcast. Zero-fee quotes are unaffected.
Request
Responses
- 200
- 400
- 403
- 404
- 409
- 410
- 422
- 429
- 503
Partial-broadcast tolerated: legs that landed appear under results,
legs that hit an invariant break appear under failed_legs with a
generic internal_error code so the agent can reconcile on-chain.
Malformed body, incomplete submit, or quote_index not in snapshot.
A wallet on the request was flagged by sanctions screening. Permanent; do not retry with the same wallet.
Unknown or expired quote_id.
A leg under (quote_id, quote_index) was already submitted.
Snapshot expired between issue and submit; re-quote.
You sent acknowledged_warnings and it does not match the warnings served with this
quote_id. Only reachable when the field is present; omitting it always proceeds.
Sliding window exceeded: per-IP or per-(IP, wallet), plus a per-organisation bucket (shared across all of your keys) whenever a valid X-API-Key is presented. Retry-After header carries delta-seconds.
Sanctions screening could not be completed and the request was rejected (fail-closed). Transient; back off and retry.