Fast API provides multiple data streams for various exchange data:
- L2 Order Book Data
- Trade Events
- Per Account Order Events
Book Ticker
| Schema | Frequency | Description |
|---|---|---|
{symbol}@bookTicker | Real-time | Real time updates to the best bid/ask price for an order book. |
Try It
btcusd@bookTickerdisconnected
Code
| Field | Type | Description |
|---|---|---|
u | number | Update ID |
E | number | Event time (nanoseconds) |
s | string | Symbol |
b | string | Best bid price |
B | string | Best bid quantity |
a | string | Best ask price |
A | string | Best ask quantity |
L2 Partial Depth Streams
| Schema | Frequency | Description |
|---|---|---|
{symbol}@depth5 | Periodic (1s) | Periodic snapshot of the top 5 levels once per second |
{symbol}@depth10 | Periodic (1s) | Top 10 levels |
{symbol}@depth20 | Periodic (1s) | Top 20 levels |
{symbol}@depth5@100ms | Periodic (100ms) | Top 5 levels every 100 milliseconds |
{symbol}@depth10@100ms | Periodic (100ms) | Top 10 levels |
{symbol}@depth20@100ms | Periodic (100ms) | Top 20 levels |
Try It
btcusd@depth10@100msdisconnected
Code
| Field | Type | Description |
|---|---|---|
lastUpdateId | number | Last update ID |
bids | array | Array of [price, quantity] |
asks | array | Array of [price, quantity] |
L2 Differential Depth Streams
| Schema | Frequency | Description |
|---|---|---|
{symbol}@depth | Periodic (1s) | List of all changed price levels in the last second |
{symbol}@depth@100ms | Periodic (100ms) | In the last 100 milliseconds |
Try It
btcusd@depth@100msdisconnected
Quantity zero indicates price level removal.
Code
| Field | Type | Description |
|---|---|---|
e | string | Event type ("depthUpdate") |
E | number | Event time (nanoseconds) |
s | string | Symbol |
U | number | First update ID in this event |
u | number | Last update ID in this event |
b | array | Bid updates [price, quantity] |
a | array | Ask updates [price, quantity] |
Trade Stream
| Schema | Frequency | Description |
|---|---|---|
{symbol}@trade | Real-time | Real time trade executions |
Try It
btcusd@tradedisconnected
Code
| Field | Type | Description |
|---|---|---|
E | number | Event time (nanoseconds) |
s | string | Symbol |
t | number | Trade ID |
p | string | Price |
q | string | Quantity |
m | boolean | Is buyer the maker |
Order Events
Requires an authenticated session
| Schema | Frequency | Description |
|---|---|---|
orders@account | Real-time | Real time order activity for the account associated with the authenticated API key |
orders@session | Real-time | Real time order activity for the authenticated API key |
Code
| Field | Type | Description |
|---|---|---|
E | number | Event time (nanoseconds) |
s | string | Symbol |
i | number | Order ID |
c | string | Client Order ID |
S | string | Side, BUY / SELL |
o | string | Type, LIMIT / MARKET |
X | string | Status, NEW / OPEN / FILLED / PARTIALLY_FILLED / CANCELED / REJECTED / MODIFIED |
p | string | Order price |
P | string | Stop price |
q | string | Original quantity |
z | string | Remaining quantity |
Z | string | Executed quantity. For FILLED / PARTIALLY_FILLED events, this is the quantity filled in the last execution. For CANCELED and other events, this is the cumulative quantity filled over the lifetime of the order. |
L | string | Last execution price |
t | number | Trade ID |
r | string | Rejection reason |
T | number | Update time (nanoseconds) |
O | string | Event outcome for event contracts, YES / NO |
Fields with empty or zero values may be omitted from the event.
Rejection Reasons
When an order is REJECTED, the r field contains one of:
| Reason | Description |
|---|---|
MarketNotOpen | Market is closed or paused |
InsufficientFunds | Account lacks sufficient balance |
InvalidPrice | Price violates constraints |
LimitPriceOffTick | Price does not align with tick size |
InvalidQuantity | Quantity below minimum or off increment |
InvalidStopPrice | Stop price violates constraints |
InvalidTotalSpend | Total spend calculation error |
DuplicateOrder | Duplicate client order ID |
InsufficientLiquidity | Not enough liquidity at price |
UnknownInstrument | Trading pair does not exist |
Cancellation Reasons
When an order is CANCELED by the system, the r field contains one of:
| Reason | Description |
|---|---|
SelfCrossPrevented | Self-trade prevention triggered |
FillOrKillWouldNotFill | FOK order could not fill completely |
ImmediateOrCancelWouldPost | IOC order would post to book |
MakerOrCancelWouldTake | MOC order would take liquidity |
AuctionCancelled | Auction-related cancellation |
ExceedsPriceLimits | Price moved beyond limits |
Balance Updates
Requires an authenticated session
| Schema | Frequency | Description |
|---|---|---|
balances@account | Real-time | Real time balance updates for the account associated with the authenticated API key |
balances@account@1s | Periodic (1s) | Periodic snapshot of all balances every second for the account associated with the authenticated API key |
The balances@account stream pushes updates in real time whenever a balance change occurs, and only includes the assets that changed. The balances@account@1s stream sends a complete snapshot of all account balances every second, regardless of whether they changed. On subscribe, balances@account@1s will immediately send the current balances if available.
Code
| Field | Type | Description |
|---|---|---|
e | string | Event type ("balanceUpdate") |
E | number | Event time (nanoseconds) |
u | number | Time of the last account update (nanoseconds) |
B | array | Balance updates |
a | string | Asset code |
f | string | Asset balance |
Last modified on

