Appearance
Data Types
Exact integers
Values that can exceed JavaScript's safe-integer range are decimal strings. This includes sequences, large IDs, timestamps, ticks, lots, token atoms, and shares.
json
{
"timestamp_ns": "1785441661123456789",
"sequence": "812",
"price_ticks": "6500000",
"size_base_lots": "12"
}Small bounded values such as market_id, subaccount_id, counts, fee rates, and leverage are JSON integers.
Timestamps
Response timestamps use Unix nanoseconds encoded as decimal strings and end in _ns. open_time_ms and candle-style range parameters use Unix milliseconds.
Quantities
| Suffix | Unit |
|---|---|
_ticks | Raw order-book price ticks |
_base_lots | Base-asset order-book lots |
_quote_lots | Quote-asset order-book lots |
_token_atoms | Smallest denomination of the identified token |
_100th_bps | Hundredths of one basis point |
_bps | Basis points |
TokenAtoms is used for either asset. There are no separate base-atom and quote-atom wire types.
Market metadata provides the scale factors required for exact conversion:
text
quote_lots_per_base_unit = price_ticks * quote_lots_per_base_unit_per_tick
quote_lots = quote_lots_per_base_unit * size_base_lots / base_lots_per_base_unit
base_token_atoms = size_base_lots * base_atoms_per_base_lot
quote_token_atoms = quote_lots * quote_atoms_per_quote_lotPagination
Paginated endpoints accept limit and cursor. Pass the returned next_cursor unchanged to request the next page. next_cursor is omitted when no later page exists.
Optional fields
Absent optional values are omitted. null is reserved for values whose absence has domain meaning, such as an empty side of the BBO or an initial WebSocket previous_sequence.
Token identifiers and symbols
A token is identified by its canonical token_id, such as token_1ac7v8kuyc52rvwjl8wz8huj2fv47nj5gqj0yyyymjlp5r29n7yyqm0948t, in balances, transfers, and market metadata. Use it as the key. A symbol is a label:
- The margin token's symbol is
USDC, the same name/v1/inforeports asquote_token. - A perpetual market's symbol is its base asset's name, for example
btc. - The chain registers a spot asset by id and decimals only, so no ticker exists for it. A spot token's
symbol, and thesymbolof a spot market built on it, is its fulltoken_id. A symbol is never a shortened id.
Every Transfer carries the canonical token_id. A row that moves perpetual margin (a margin deposit or withdrawal, or a margin transfer between subaccounts) also has venue: "perps_margin"; rows that move the subaccount's token balance have no venue.
The margin token's id comes from the node's configuration, which the gateway reads once and keeps. Until it has been read, because the node has not been reachable since the gateway started, the margin token's symbol is its id instead of USDC, and margin rows keep the label USDC in token_id (their venue is still set).
Margin buckets
A funding payment's bucket and a liquidation's bucket say which margin bucket was charged: cross, or isolated:<market_id> for the isolated position in that market, such as isolated:1.
Order lifecycle
An order's status is one of:
| Status | Meaning |
|---|---|
active | Resting on the book. |
placed | Accepted and no longer on the book without having been canceled: filled, or an ioc order whose unfilled part was dropped. |
canceled | Removed before it filled completely. |
expired | Reserved for orders the exchange removes on its own. The exchange has no order that expires, so no order has this status today. |
remaining_size_base_lots is the size still resting on the book. It is 0 for every order that is not active. Size that has already traded is not part of it: read /v1/fills for how much of an order filled.
A stop or take-profit order is active while it waits for its trigger, whatever its time in force (fok and post_only are rejected for it); the time in force applies to the order it becomes.