error object always has three fields:
The numeric error code. Negative codes are JSON-RPC / transport-level; positive codes are Derive application errors
(see the catalog below).
A short, stable human-readable summary.
Optional detail (e.g. the offending field or protocol reason). Always present on the wire — it is
null when there is
no detail.JSON-RPC base codes
The standard JSON-RPC 2.0 codes cover malformed or unroutable requests before any application logic runs.Transport & session codes
See Rate limits for how the two-tier limiter works and how to read
your live limits, and Authentication for the session-login and
action-signing layers behind the 401/403 and 14xxx codes.
Application error catalog
Application errors use positive codes grouped by numeric range. Codes are stable; gaps within a range are reserved.Internal 8xxx codes (e.g. counterparty/feed diagnostics) are intentionally omitted from this reference — they are
server-side signals, not client-actionable, and are excluded from public docs.
9xxx — Confirmation timeouts
The order was accepted but a downstream confirmation did not arrive in time. Query order state before resubmitting.10xxx — Accounts, transfers & margin
Rejections from account, session-key, and subaccount-level constraints before an order reaches the book.11000–11035 — Orders & matching
Order-lifecycle rejections from the matching engine.11050–11055 — Trigger orders
Stop / trigger-order specific rejections.A parallel 11150–11155 code range for trigger-order rejects appears in the reject-message mapping and may surface
for some persisted trigger rejections. Handle trigger rejects by
name/message rather than hard-coding 11050 vs
11150.