subscribe message. Topic names are case-insensitive for the pair segment at input time and are normalized by Stabyl. Examples use the canonical topic key USD_NGN.
Topic Catalog
Supported candle intervals are
1m, 5m, 15m, 1h, 4h, and 1d.
Subscribing to a private topic without the required scope returns an error
with code forbidden.
orderbook.* is not supported. Subscribe to exact order book topics such as
orderbook.USD_NGN.Subscription Response
When a subscription succeeds, the server responds withsubscribed.
Data Envelope
All topic updates use the same outer envelope:seq for WebSocket recovery. Payloads may also include their own domain sequence fields.
Order Book Payloads
Anorderbook.{pair_key} message can carry either a snapshot-style payload or a delta batch.
Snapshot style payload:
- Fetch
GET /partner/exchange/orderbook/USD%2FNGN/snapshot. - Subscribe to
orderbook.USD_NGNwithsnapshot: true. - Apply updates in
seqorder. - If a gap is detected, fetch a fresh REST snapshot and resume from the new baseline.
Trade Payload
trades.{pair_key} and trades.* carry public trade tape updates.
GET /partner/exchange/trades for backfills and WebSocket trades for live updates.
Ticker Payload
ticker.{pair_key} and ticker.* carry current 24-hour market statistics.
open, high, low, last, price_change,
price_change_pct, best_bid, and best_ask are null when there is no
data for them.
Candle Payload
candles.{pair_key}.{interval} and candles.* carry OHLCV candle updates.
Private Order Update
user.orders carries order updates for your account. Subscribe with an API key that has trades:view.
order_id is a deprecated alias of id; read id. status is one of
pending, cancelling, replacing, accepted, partially_filled,
filled, cancelled, rejected, or expired. Treat filled, cancelled,
rejected, and expired as terminal. Confirm final state with
GET /partner/exchange/orders/{order_id} when needed.
Private Fill Update
user.fills carries fills for your account. It does not expose counterparty identity.
applied_fee_bps and maker_rebate are present only when they apply to the
fill.
Resume
Sendresume when reconnecting:
user.orders, user.fills, user.balances, and user.credit. Wildcard topics such as trades.* and the user.fills.batch topic are not replayed. If the server cannot resume, it may omit replayed messages or send connection_reset. Rebuild the affected topic from REST, then continue processing new data messages.