REST API
The REST API is read-only apart from POST /action, which is how every state
change is submitted — see Signed actions. No
authentication is needed for reads.
Base URLs are listed in
Networks and endpoints. The interactive,
always-current reference is generated from the live schema:
Nord API and Proton API. Each deployment also serves its own
reference at GET /docs and its schema at GET /openapi.json; treat those as
the source of truth if this page and the deployment differ.
Exchange and markets
| Endpoint | Purpose |
|---|---|
GET /info | Markets, tokens, decimals, and IDs — fetch this first |
GET /markets/live | Live pricing state for every market |
GET /market/{market_id}/live | Live pricing state for one market |
GET /market/{market_id}/orderbook | Orderbook snapshot with an updateId |
GET /market/{market_id}/stats | Rolling market statistics |
GET /market/{market_id}/history/PT1H | Hourly market history |
GET /trades | Trades, filterable and paginated |
GET /order/{order_id} and /order/{order_id}/trades | One order and its fills |
GET /tokens/{token_id}/stats | Token statistics |
GET /fee/brackets/info | Fee tier brackets |
GET /market/{market_id}/fees/{fee_kind}/{account_id} | Deprecated. Fee for an account in a market, by fill role |
GET /timestamp | Server time, required when signing actions |
GET /state/info | Engine version and latest action ID, nonce, timestamp, and paused flag |
GET /state/info/hist | Engine version history by action ID |
GET /health | Health of every service; returns 503 if any is degraded (unstable) |
GET /health/{service} | Health of one service, such as execution or settlement; returns 503 only if it is degraded (unstable) |
Accounts
| Endpoint | Purpose |
|---|---|
GET /user/{pubkey} | Accounts owned by a wallet |
GET /account/{account_id} | Balances, positions, and margin state |
GET /account/{account_id}/orders | Order history |
GET /account/{account_id}/orders/open | Open orders |
GET /account/{account_id}/position/summary | Position summary |
GET /account/{account_id}/pnl/summary | Realized and unrealized PnL |
GET /account/{account_id}/history/{kind} | Paginated history |
GET /account/{account_id}/triggers | Pending and active triggers on the account |
GET /account/{account_id}/triggers/history/placements | Trigger placement history |
GET /account/{account_id}/triggers/history/finalisations | Trigger finalization history |
GET /account/{account_id}/fee/tier | Effective fee tier |
GET /account/{account_id}/fees/withdrawal | Quoted withdrawal fee |
GET /event/last-acked-nonce | Highest acknowledged nonce for a signer |
GET /action/last-executed-id | Last executed action ID |
GET /accounts/liquidations/takes | Liquidation takes across all accounts |
History kind is one of deposit, withdrawal, transfer, funding, pnl,
position, liquidation, fee-tier, vault/deposit, or vault/withdrawal.
Accounts are addressed by numeric account ID, not by wallet address — see Accounts and sessions for how to resolve one.
Liquidation history
Take-all liquidation history contains one row per transferred market, with
its market ID, health transition, and system fee. Preserve all rows
for an action. A take-all without positions produces one quote-balance row.
For the v22 changes to liquidation history and /health, see the
v22 changelog entry.
Vaults
GET /vaults, GET /vault/{vault_id},
GET /vault/{vault_id}/user/{account_id}, and
GET /account/{account_id}/vault-user-states.
| Endpoint | Purpose |
|---|---|
GET /vault/{vault_id}/history/config | Vault configuration changes |
GET /vault/{vault_id}/history/deposit | Vault deposits |
GET /vault/{vault_id}/history/withdrawal | Vault withdrawals |
GET /vault/{vault_id}/history/epoch | Vault epochs |
Conventions
- Scaled integers. Prices, sizes, and amounts are integers scaled by the
market's
priceDecimals/sizeDecimalsor the token'sdecimals. Read them from/infoand descale before displaying. ABTCUSDprice of724336withpriceDecimals: 1is72433.6. - Pagination. History endpoints take
pageSizeand a cursor (startInclusive), plussince/untilRFC3339 bounds where applicable. - Timestamps. RFC3339 in requests;
/timestampis the authority for signing. - Schemas.
GET /openapi.json,GET /proton/openapi.json, andGET /schema.protoare served by every deployment, so you can generate clients and protobuf bindings for the exact version you are talking to.
For anything latency-sensitive, stream instead of polling — WebSocket streams.