Rate limits

Request budgets, open orders per symbol, and minimum order sizes.

Wellat uses Binance's rate-limit model and headers. CCXT's enableRateLimit (on by default) reads them and paces your bot without configuration.

Buckets

BucketKeyed byLimitHeader on every response
Request weightAPI key on signed routes, your IP on public routes1,200 weight per minuteX-MBX-USED-WEIGHT-1M
Order countAPI key, order placements only50 per 10 seconds and 1,200 per minuteX-MBX-ORDER-COUNT-10S, X-MBX-ORDER-COUNT-1M

Each route has a weight, listed on the Spot, Futures and Market data pages. Windows are calendar-aligned (the minute bucket resets on the minute). Weight is charged before the request is executed and is not refunded on error.

Order placements (POST /api/v3/order, POST /fapi/v1/order, POST /fapi/v1/algoOrder) count against both buckets. Cancels and reads count only as weight.

When you go over

ResponseMeaning
429 { "code": -1003, "msg": "Too many requests; current limit is 1200 request weight per 1 MINUTE." }Weight exhausted. Retry-After says how many seconds until the window resets.
429 { "code": -1015, "msg": "Too many new orders; current limit is 50 orders per 10 SECONDS." }Order count exhausted.
418 { "code": -1003, "msg": "Way too much request weight used; banned until <ms>." }Ten 429s inside one minute. The key (or IP) is banned for two minutes; every request in that time answers 418.

CCXT raises RateLimitExceeded for -1003 and -1015 and DDoSProtection for 418. Back off on Retry-After; do not retry in a tight loop, because each rejected request still counts toward the 418 threshold. The ban is per key on signed routes and per IP on public routes. Both the gateway and the trading engine enforce the same budgets.

Budgeting

A typical loop:

CallWeightPer minute at 5 s cadence
ticker/bookTicker for one symbol224
openOrders for one symbol (spot)672
account (spot)20240
One createOrder112
Total348 of 1,200

exchangeInfo costs 20 on spot: load markets once at start-up, not every loop. allOrders and myTrades cost 20 each; page them by startTime rather than polling them whole.

Public-route weight is per IP. If several bots share an egress IP they share that budget; signed calls are per key and do not.

Open orders per symbol

Wellat sets no cap of its own. Symbol filters are passed through from Binance, so the MAX_NUM_ORDERS filter in exchangeInfo is Binance's: 200 resting orders per symbol on spot and on USDⓈ-M futures, with a separate MAX_NUM_ALGO_ORDERS cap for TP / SL legs. Copiers mirror the same set of resting orders on their own accounts, so the same cap applies to each of them.

In practice the binding constraint is margin, not order count. On futures every resting entry locks its initial margin at placement, for your strategy and for every copier, so a ladder of 18 entries commits 18 slices of collateral before the first fill.

Minimum order size

Binance's filters apply unchanged and are returned per symbol by exchangeInfo:

FilterWhat it constrains
LOT_SIZEquantity must be at least minQty and a multiple of stepSize.
PRICE_FILTERprice must be a multiple of tickSize.
NOTIONAL (spot) / MIN_NOTIONAL (futures)quantity × price must be at least the minimum notional. It is 5 USDT on most pairs and higher on a few, such as BTCUSDT futures. Read the filter rather than assuming.

An order that fails a filter is rejected with 400 before anything is recorded. CCXT's amountToPrecision and priceToPrecision apply the step and tick sizes for you; the notional minimum you must check yourself.

Copiers are scaled, not rounded up. Each copier receives your order sized to their own balance (spot) or collateral fraction at your leverage (futures), snapped down to stepSize. If a copier's scaled order falls under minQty or the minimum notional, that order is skipped for that copier and logged; it is not raised to the minimum. A ladder of many small entries therefore reaches small copiers only on its larger rungs. Size each entry so that the smallest copier share you expect still clears the minimum notional.
Request budgets, open orders per symbol, and minimum order sizes.


Did this page help you?