$EX5 pre-sale is open — Seed tier · 500M fixed supply · 50% burn · KYC via EX5 ExchangeJOIN →
EX5 API · REST & WEBSOCKET

Errors & rate limits

Every error carries a machine-readable key. This page lists the error formats, the HTTP status codes in use and the rate limits of the REST and WebSocket APIs.

Error format

SourceBody
Authentication (all services){"errors":["authz.invalid_session"]} — sent with Content-Type: text/plain; parse the body as JSON anyway.
Market data, account, wallet (/api/v2/peatio){"errors":["public.market.doesnt_exist"]} — an array of keys.
Order entry (/api/v2/finex){"error":"error.invalid_request"} — a single key. Rate limiting answers the JSON string "Too Many Requests".

HTTP status codes

StatusMeaning
200 / 201 / 204Success; 201 for created resources (including accepted orders), 204 for deletions.
400Malformed JSON or an invalid field.
401Authentication failed, or the account may not perform the action.
403Account level too low for the endpoint.
404Unknown route or record.
422Validation error, for example an unknown market or an out-of-range limit.
429Order-entry rate limit exceeded.
503Too many requests or connections from your IP address.
500Server error; retry later and contact support with the x-request-id header.

Common error keys

KeyWhat to do
public.market.doesnt_existCheck the market id against GET /api/v2/peatio/public/markets.
pagination.invalid_limitUse a page size between 1 and the endpoint's maximum.
account.withdraw.not_permittedYour account level is below the requirement (level 3 for withdrawals).
order.action_level.not_permittedPlacing orders needs account level 2 (verified phone number).
error.invalid_requestThe order breaks a market rule: precision, minimum amount or price range.
error.bad_requestInvalid JSON or field format — for example a decimal in exponent notation.
authz.nonce_expiredSynchronise your clock; the nonce must be within 5 seconds of server time.
authz.invalid_signatureSign the string nonce + kid with your secret, hex-encoded.

For authentication errors see the full list.

Rate limits

ScopeLimitWhen exceeded
All requests, per IP addressAbout 260 requests per minute with short bursts; 100 concurrent connections (WebSockets included)503
Order entry (create, cancel, cancel all), per account50 requests per 10 seconds429 "Too Many Requests"
WebSocket messages you sendAt most 512 bytes eachConnection closed with code 1009

These are the current values and can change. Back off exponentially after a 429 or 503, cache market and currency lists, and use WebSocket streams instead of polling tickers or order books.