Skip to main content

HTTP-level classes for request submission

Error reasonStatusMeaningClient action
InvalidRequestPayload400Decrypted payload could not be parsed as a request, including missing or partially populated replay-window fieldsFix serialization or replay-window field pairing before retry
InvalidRecvWindow400Receive-window value is invalidFix timing window before retry
SignerNotFound401Recovered signer is not recognizedUse the correct trader wallet
SessionUnauthorized401Delegated session payload failed policy checksRotate or repair session payload
Forbidden403Request understood but refused by server policyStop and inspect access posture
KycNotFound404Required KYC state is missing or expiredResolve KYC state before retry
IllegalNonce412Nonce conflicted with replay-window duplicate-state policyGenerate a fresh nonce and replay-window tuple that is not treated as duplicate
ExpiredTimestamp412Request timestamp is too oldRebuild request with current timestamp
FutureTimestamp412Request timestamp is too far in the futureCorrect client clock and rebuild request
NotAcceptingRequests421Sequencing is not currently admitting the request path, including leader or readiness transitions and pending durable-commit casesPause writes, confirm readiness, then retry with bounds
InvalidEncryption422Payload could not be decryptedRe-encrypt with fresh key material
SafetyFailure422Request violated execution or risk guardsRepair payload, then resign and re-encrypt
RateLimit429Request quota exceededBack off and retry
InternalServerError500Internal server faultRetry cautiously after health checks
ServiceUnavailable503Service unavailable, including missing mark-price stateRetry with jitter

Use this page when

If you need…Use this page because…
the canonical public error lookupit centralizes HTTP classes, safety failures, and realtime rejection surfaces
to distinguish retryable faults from payload or state defectsit pairs reason classes with client action
the broader runtime union rather than the narrower generated artifact viewthis page already calls out spec omissions and current runtime authority

Source-alignment note

This reference reflects the runtime ErrorReason mapping used by API code. The generated operator client-request OpenAPI artifact currently exposes a narrower ErrorReason enum and does not yet list every replay or session reason in this table. Treat this page as the canonical public lookup derived from runtime source until those artifacts converge. Current generated-spec omissions:
  • InvalidRecvWindow
  • ExpiredTimestamp
  • FutureTimestamp
  • SessionUnauthorized

Replay-window note

The live sequencing contract is stricter than “always increase a global nonce by one” and also more nuanced than “any new nonce is fine.” Freshness is determined by the replay window plus duplicate-marker state. Missing or partially populated replay-window fields map to InvalidRequestPayload rather than to a standalone public error enum. Current regression coverage explicitly includes fresh lower-nonce CancelOrder and CancelAll requests that remain admissible when they are non-duplicate and still inside the valid receive window.

Recovery grouping

Error familyPublic recovery rule
malformed payload or schema failurefail fast, repair payload, then rebuild
signer, session, or encryption failurerepair identity or cryptographic material before retry
replay-window or nonce failurerebuild timestamp and nonce context instead of blindly resending
safety failurefix product, price, amount, collateral, or strategy state before retry
rate-limit and service-availability failurebounded retry with backoff, jitter, and health awareness

Retry classes

Retry classPublic reading
do not retry unchangedmalformed payloads, signer/session/encryption defects, and safety failures
retry only after rebuilding request contextreplay-window, timestamp, and nonce failures
bounded retry is appropriaterate limits, service unavailability, and leader/readiness transitions

Error payload shape

FieldTypeNotes
error_reasonenumTop-level error class returned by the API
safety_failureenum or nullPresent when error_reason is SafetyFailure
messagestringHuman-readable error detail

Safety failure variants

These variants are declared in core/common/src/types/primitives.rs.
VariantMeaning
TraderNotFoundTrader address not found in verified state
NotEnoughCollateralCollateral below required minimum
NoStrategiesTrader has no strategies
StrategyNotFoundStrategy identifier not found for trader
SignatureRecoveryMismatchEIP-712 signer mismatch
InsuranceFundContributionNotFoundInsurance-fund contribution not found
MaxOrderNotionalBreachedOrder notional exceeds max limit
MaxTakerPriceDeviationBreachedTaker price exceeds max deviation from mark price
OrderNotFoundOrder hash not found
OMFLessThanIMFPost-execution open margin fraction below initial margin fraction
MaxWithdrawAmountBreachedCollateral withdrawal exceeds max allowed amount
MaxDDXWithdrawAmountBreachedDDX withdrawal exceeds max allowed amount
TooMuchCollateralToWithdrawDDXDDX withdrawal would violate collateral cap
MaxInsuranceFundWithdrawBreachedInsurance-fund withdrawal exceeds max
OrderPriceNegOrder price is negative
OrderAmountZeroNegOrder amount is zero or negative
OrderAmountNotMultipleOfMinOrderSizeOrder amount is not a minimum-size multiple
OrderTypeIncompatibleWithPriceOrder type and price fields are inconsistent
PriceNotMultipleOfTickSizePrice is not a tick-size multiple
UnsupportedMarketSymbol is unsupported
UnsupportedCurrencyCurrency unsupported (USDC is required)
TooManyOrdersToo many open orders for strategy/market
WithdrawAmountZeroNegCollateral withdrawal is zero or negative
WithdrawDDXAmountZeroNegDDX withdrawal is zero or negative
WithdrawInsuranceFundZeroNegInsurance-fund withdrawal is zero or negative
AccessDeniedTrader access denied
CancelNoLiquidityForMarketNo open liquidity to cancel for symbol
UnsupportedTraderUpdateTrader update type unsupported
MarketPriceNotAvailableMark price unavailable for symbol

Realtime rejection surfaces

SurfaceCarrierNotes
Subscription-control failureACKNOWLEDGE.result.errorCorrelate by echoed request nonce; missing or mismatched nonce is anomalous control-plane behavior
Order-domain rejectionORDER_UPDATE rejection fieldsConnection may still be healthy
Strategy-domain rejectionSTRATEGY_UPDATE rejection fieldsOften linked to withdrawal attempts
Trader-domain rejectionTRADER_UPDATE rejection fieldsIncludes trader-level state actions

421 and 503 note

NotAcceptingRequests and ServiceUnavailable are not generic placeholders. In the current runtime mappings they can represent leader/readiness transitions, pending durable-commit state, unavailable sequencing paths, or missing mark-price readiness. Treat them as recoverable service-state signals rather than as proof that the original payload was valid.

What this page does not replace

NeedUse instead
step-by-step recovery procedureHow to Handle API Errors and Recovery
event-by-event lifecycle semanticsOrder and Account Event Reference
family-level REST error framingREST Errors

Boundary rule

Treat this page as the canonical public error lookup. Identify the class and recovery posture here first, then move to the relevant family page or how-to for execution detail.
Last modified on April 13, 2026