Read before integrating
Limits decide how many orders per second you can send and how large each one can be; fees decide whether a book is worth quoting at all. Market makers get a dedicated risk tier that has to be assigned — integrating on the default tier hits a wall at 20 orders per 10 seconds.
Traders are mapped to a tier by address; anything unmapped falls to the default tier. The market-maker tier is assigned per address by operations — confirm yours is mapped before you integrate.
| Tier | Per-order notional | Frozen collateral | Place rate | Cancel rate |
|---|---|---|---|---|
default (retail)default | 10 000 USDC | 50 000 USDC | 20 / 10s | 60 / 10s |
market-makermarket-maker | 50 000 USDC | 5 000 000 USDC | 3 000 / 10s | 3 000 / 10s |
The engine enforces a separate net-exposure cap: 100,000 shares per trader per market (10,000,000 in E2). Frozen collateral covers resting orders only, while exposure covers filled positions — the two caps govern different things and trip independently.
Fee rates are versioned per market and expressed in ppm (parts per million). The maker and taker legs are charged separately and every fill carries the fee actually taken on each leg.
The currently effective rate is not exposed over the public REST surface — ask operations for the ppm values on your categories and markets when you integrate. The fee actually charged is reported per fill in the fill event.
| Item | Value | On exceeding |
|---|---|---|
| Orders per batch place | 1–15 | The whole batch returns 400; nothing is partially accepted |
| Orders per batch cancel | 1–1000 | The whole batch returns 400 |
| How rate limiting is charged | One token per order | If the bucket cannot cover the whole batch the whole request returns 429 with nothing admitted — back off and resend the batch |
| Heartbeat interval | 5s | The recommended send cadence |
| Heartbeat timeout | 10s | On timeout the server cancels every resting order you own (cancel-on-disconnect) |
Batch sizes and the heartbeat window come from @fathom/exchange-sdk — the same constants feed both the server and this page, so they cannot drift.
Conversions between the fixed-point units are on Numeric conventions; retry policy once a limit trips is on Errors; the onboarding order is on Market Maker onboarding.