Error classes
Public read endpoints can return endpoint-specific 4xx and 5xx responses. The table below summarizes the request-submissionHttpError classes most relevant to trading clients. InvalidRequestPayload is the coarse public class for malformed request bodies, including missing or partially populated replay-window fields.
| Error reason | Status | Recovery |
|---|---|---|
InvalidRequestPayload | 400 | Correct request schema or serialization |
SignerNotFound | 401 | Sign with the correct trader wallet |
InvalidRecvWindow | 400 | Keep replay window within accepted bounds |
SessionUnauthorized | 401 | Rotate or repair delegated session payload |
Forbidden | 403 | Stop and inspect policy/access posture |
KycNotFound | 404 | Resolve KYC state before retry |
IllegalNonce / ExpiredTimestamp / FutureTimestamp | 412 | Rebuild the request with valid replay fields |
NotAcceptingRequests | 421 | Retry only after confirming the operator can accept durable sequencing work; this can reflect pending durable commit or temporary sequencing-path unavailability rather than a simple client routing mistake |
InvalidEncryption | 422 | Re-encrypt payload with current key material |
SafetyFailure | 422 | Fix payload or account/risk state before retry |
RateLimit | 429 | Retry with bounded exponential backoff |
InternalServerError | 500 | Retry cautiously after health checks |
ServiceUnavailable | 503 | Treat as transient market-price unavailability; retry only after checking price availability and operator health |
Current spec caveat
The runtimeHttpError union is broader than the current generated operator client-request OpenAPI enum. Use Error Reference when you need the authoritative union rather than the generated subset.
Error payload handling
| Payload field | Contract |
|---|---|
error_reason | The coarse routing class for retry, abort, or escalation decisions |
safety_failure | Present for request-validation failures; parse it for deterministic retry versus fix-before-retry behavior instead of treating every 422 the same |
message | Human-readable operator detail; useful for logs, but not a replacement for machine handling on error_reason and safety_failure |
Key safety failures
| Reason | Meaning |
|---|---|
SignatureRecoveryMismatch | signer mismatch during EIP-712 validation |
OMFLessThanIMF | post-trade margin safety constraint violated |
PriceNotMultipleOfTickSize | price violates market tick-size rule |
OrderAmountNotMultipleOfMinOrderSize | amount violates minimum size multiple |
MaxTakerPriceDeviationBreached | price-deviation guard rejected request |
TooManyOrders | open-order cap reached for strategy and market |
421 and 503 interpretation
| Status | Typical operator cause | Client posture |
|---|---|---|
421 NotAcceptingRequests | The sequencer cannot currently admit the request path, including pending durable-commit replay outcomes or temporary request-path unavailability | Pause writes, recheck health, then retry with bounded attempts |
503 ServiceUnavailable | A request hit MarketPriceNotAvailable during validation | Retry only after price inputs recover and the operator is healthy again |