Skip to content

Error reference#

REST#

Failed requests return an HTTP error status; order-level failures also carry an error_code (ApiErrorCode) in the response body (OrderSummary.error_code, order status messages).

HTTP statuses#

Status Meaning
400 Bad signature — X-SIGN does not match the request. The body is plain text, Invalid Signature (7003), not JSON
401 Unauthorized — missing/invalid API key
403 Forbidden — the API key is read-only and the endpoint creates or cancels orders (see Get started)
429 Rate limit exceeded — the JSON body gives reason and retry_after_ms, the Retry-After header the wait in seconds; see Rate limits
  • A bad signature returns 400 on every endpoint, with the plain-text body above. The per-endpoint pages of the API Reference do not list this case; their 401 row means a missing or unknown API key.
  • A request whose X-TIMESTAMP is more than X-RECV-WINDOW ms (default 5000) in the past is rejected before it reaches the endpoint, but not with 401: the gateway currently answers it with a generic server error (5xx). If every request fails that way, check your clock first.

error_code values#

Authentication / request

Code Description
AUTHENTICATION_ERROR Key not recognized or not permitted
INVALID_SIGNATURE X-SIGN does not match the payload
INVALID_API_KEY Unknown API key
INVALID_TIMESTAMP X-TIMESTAMP outside the receive window
INVALID_REQUEST Malformed request
INVALID_PARAM A parameter failed validation
BATCH_OVERSIZE Too many orders in one batch call

Order validation

Code Description
INVALID_ORDER Order rejected at validation
INVALID_QUANTITY Quantity missing, non-positive, or below exchange minimum
QUANTITY_EXCEED Quantity above the allowed maximum
INVALID_SYMBOL Symbol unknown on the target exchange
INVALID_EXCHANGE Exchange not supported or not connected for the account
INVALID_TRADE_STRATEGY Unknown strategy value
INVALID_LIMIT_PRICE Limit price fails validation
INVALID_WOULD_PRICE Would price fails validation
INVALID_TRIGGER_PRICE Trigger price fails validation
INVALID_END_TIME End time in the past or before start time
INVALID_TRADE_TIME Execution window fails validation
INVALID_FEE Fee parameter fails validation

Execution / exchange

Code Description
INSUFFICIENT_FUNDS Not enough balance on the venue
EXCHANGE_ERROR Exchange rejected the request (unmapped venue error)
EXCHANGE_NOT_AVAILABLE Venue unreachable or in maintenance
NETWORK_ERROR Transient connectivity failure
SLIPPAGE_EXCEEDED Fill would exceed the slippage tolerance
EXPIRY_REACHED Order expired before completing
PARENT_ORDER_WAS_TERMINATED Child rejected because the parent was cancelled/finished
MAX_FEE_PER_GAS_IS_TOO_LOW DEX: gas fee cap too low
MAX_PRIORITY_FEE_PER_GAS_IS_TOO_LOW DEX: priority fee too low

Platform

Code Description
RATE_LIMIT_EXCEEDED Account request budget exhausted
DDOS_PROTECTION Venue anti-abuse triggered — reduce request rate
EMS_INSTANCES_DOWN Execution engine temporarily unavailable
SYSTEM_ERROR Internal error
SYSTEM_BUSY Platform under load — retry
OTHER Unclassified

WebSocket#

Every subscribe/unsubscribe gets a {code, message} response:

Code Meaning
0 OK — ack; message echoes your request
5 RATE_LIMIT_EXCEEDED — a message limit, a subscription limit, or the account's connection limit (connection limit reached (N per account), then close 1008); see Rate limits
8054 exchange missing or invalid
7002 Invalid request — unparseable message or missing method
7001 Internal error — the subscription stream terminated; re-subscribe

Close codes: 1001 idle timeout (no client message for 5 min), 1008 policy violation (rate limits, invalid listenKey).