Rate Limit Rules
IP Limit
HTTP IP limit
You are allowed to send 600 requests within a 5-second window per IP by default. This limit applies to all traffic directed to api.bybit.com, api.bybick.com, and local site hostnames such as api.bybit.kz.
If you encounter the error "403, access too frequent", it indicates that your IP has exceeded the allowed request frequency. In this case, you should terminate all HTTP sessions and wait for at least 10 minutes. The ban will be lifted automatically.
We do not recommend running your application at the very edge of these limits in case abnormal network activity results in an unexpected violation.
Websocket IP limit
- Do not establish more than 500 connections within a 5-minute window. This limit applies to all connections directed to
stream.bybit.comas well as local site hostnames such asstream.bybit.kz. - Do not frequently connect and disconnect the connection
- Do not establish more than 1,000 connections per IP for market data. The connection limits are counted separately for Spot, Linear, Inverse, and Options markets
API Rate Limit
If you receive "retCode": 10006, "retMsg": "Too many visits!" in the JSON response, you have hit the API rate limit.
The API rate limit is based on the rolling time window per second and UID. In other words, it is per second per UID. Every request to the API returns response header shown in the code panel:
X-Bapi-Limit-Status- your remaining requests for current endpointX-Bapi-Limit- your current limit for current endpointX-Bapi-Limit-Reset-Timestamp- the timestamp indicating when your request limit resets if you have exceeded your rate_limit. Otherwise, this is just the current timestamp (it may not exactly matchtimeNow).
Http Response Header Example
▶Response Headers
Content-Type: application/json; charset=utf-8
Content-Length: 141
X-Bapi-Limit: 10
X-Bapi-Limit-Status: 9
X-Bapi-Limit-Reset-Timestamp: 1672738134824
API Rate Limit Table
Trade
| Method | Path | UTA2.0 Pro | upgradable | |||
|---|---|---|---|---|---|---|
| inverse | linear | option | spot | |||
| POST | /v5/order/create | 10/s | 10/s | 20/s | Y | |
| /v5/order/amend | 10/s | 10/s | 10/s | Y | ||
| /v5/order/cancel | 10/s | 10/s | 20/s | Y | ||
| /v5/order/cancel-all | 10/s | 1/s | 20/s | Y | ||
| /v5/order/create-batch | 10/s | 10/s | 20/s | Y | ||
| /v5/order/amend-batch | 10/s | 10/s | 20/s | Y | ||
| /v5/order/cancel-batch | 10/s | 10/s | 20/s | Y | ||
| /v5/order/disconnected-cancel-all | 5/s | N | ||||
| /v5/order/pre-check | 10/s | 10/s | 20/s | Y | ||
| GET | /v5/order/realtime | 50/s | N | |||
| /v5/order/history | 50/s | N | ||||
| /v5/execution/list | 50/s | N | ||||
| /v5/order/spot-borrow-check | - | 50/s | N | |||
| POST | /v5/fcombobot/getlimit | 10/s | - | - | N | |
| /v5/fcombobot/create | 10/s | - | - | N | ||
| /v5/fcombobot/close | 10/s | - | - | N | ||
| /v5/fcombobot/detail | 10/s | - | - | N | ||
| /v5/fgridbot/validate | 10/s | - | - | N | ||
| /v5/fgridbot/create | 10/s | - | - | N | ||
| /v5/fgridbot/close | 10/s | - | - | N | ||
| /v5/fgridbot/detail | 10/s | - | - | N | ||
| /v5/fmartingalebot/getlimit | 10/s | - | - | N | ||
| /v5/fmartingalebot/create | 100/s | - | - | N | ||
| /v5/fmartingalebot/close | 10/s | - | - | N | ||
| /v5/fmartingalebot/detail | 10/s | - | - | N | ||
| /v5/grid/validate-input | - | 100/s | N | |||
| /v5/grid/create-grid | - | 3/s | N | |||
| /v5/grid/close-grid | - | 3/s | N | |||
| /v5/grid/query-grid-detail | - | 10/s | N | |||
| /v5/dca/create-bot | - | 3/s | N | |||
| /v5/dca/close-bot | - | 3/s | N | |||
| /v5/strategy/create | 100/s | - | 100/s | N | ||
| GET | /v5/strategy/list | 200/s | - | 200/s | N | |
| /v5/strategy/order-list | 200/s | - | 200/s | N | ||
| POST | /v5/strategy/stop | 100/s | - | 100/s | N | |
Position
| Method | Path | UTA2.0 Pro | upgradable | |||
|---|---|---|---|---|---|---|
| inverse | linear | option | spot | |||
| GET | /v5/position/list | 50/s | - | N | ||
| /v5/position/closed-pnl | 50/s | - | - | N | ||
| /v5/position/get-closed-positions | - | - | 50/s | - | N | |
| /v5/position/move-history | 10/s | N | ||||
| POST | /v5/position/set-leverage | 10/s | - | - | N | |
| /v5/position/switch-mode | - | 10/s | - | - | N | |
| /v5/position/trading-stop | 10/s | - | N | |||
| /v5/position/set-auto-add-margin | - | 10/s | - | - | N | |
| /v5/position/add-margin | 10/s | - | - | N | ||
| /v5/position/confirm-pending-mmr | 10/s | - | - | N | ||
| /v5/position/move-positions | 10/s | N | ||||
Account
| Method | Path | Limit | upgradable | |
|---|---|---|---|---|
| GET | /v5/account/wallet-balance | accountType=UNIFIED | 50/s | N |
| /v5/account/withdrawal | 50/s | N | ||
| /v5/account/borrow-history | 50/s | N | ||
| /v5/account/borrow | 1/s | N | ||
| /v5/account/repay | 1/s | N | ||
| /v5/account/no-convert-repay | 1/s | N | ||
| /v5/account/collateral-info | 50/s | N | ||
| /v5/asset/coin-greeks | 50/s | N | ||
| /v5/account/transaction-log | accountType=UNIFIED | 50/s | N | |
| /v5/account/fee-rate | 5/s | N | ||
| /v5/account/info | 50/s | N | ||
| /v5/account/instruments-info | 10/s | N | ||
| /v5/account/mmp-state | - | N | ||
| /v5/account/option-asset-info | - | N | ||
| /v5/account/pay-info | 50/s | N | ||
| /v5/account/query-dcp-info | 5/s | N | ||
| /v5/account/smp-group | 5/s | N | ||
| /v5/account/trade-info-for-analysis | 50/s | N | ||
| /v5/account/user-setting-config | 50/s | N | ||
| POST | /v5/account/mmp-modify | 5/s | N | |
| /v5/account/mmp-reset | 5/s | N | ||
| /v5/account/quick-repayment | 1/s | N | ||
| /v5/account/set-collateral-switch | - | N | ||
| /v5/account/set-collateral-switch-batch | 5/s | N | ||
| /v5/account/set-delta-mode | - | N | ||
| /v5/account/set-hedging-mode | - | N | ||
| /v5/account/set-limit-px-action | 10/s | N | ||
| /v5/account/set-margin-mode | 5/s | N | ||
| /v5/account/upgrade-to-uta | 1/s | N |
Asset
| Method | Path | Limit | upgradable |
|---|---|---|---|
| GET | /v5/asset/transfer/query-asset-info | 60 req/min | N |
| /v5/asset/transfer/query-transfer-coin-list | 60 req/min | N | |
| /v5/asset/transfer/query-inter-transfer-list | 60 req/min | N | |
| /v5/asset/transfer/query-sub-member-list | 60 req/min | N | |
| /v5/asset/transfer/query-universal-transfer-list | 5 req/s | N | |
| /v5/asset/transfer/query-account-coins-balance | 5 req/s | N | |
| /v5/asset/transfer/query-account-coin-balance | 450 req/s | N | |
| /v5/asset/asset-overview | 50 req/s | N | |
| /v5/asset/withdraw/withdrawable-amount | 300 req/s | N | |
| /v5/asset/deposit/query-record | 100 req/min | N | |
| /v5/asset/deposit/query-sub-member-record | 300 req/min | N | |
| /v5/asset/deposit/query-address | 300 req/min | N | |
| /v5/asset/deposit/query-sub-member-address | 300 req/min | N | |
| /v5/asset/withdraw/query-record | 300 req/min | N | |
| /v5/asset/coin/query-info | 5 req/s | N | |
| /v5/asset/exchange/order-record | 600 req/min | N | |
| /v5/asset/exchange/query-coin-list | 30 req/s | N | |
| /v5/asset/covert/small-balance-history | 5 req/s | N | |
| /v5/asset/covert/small-balance-list | 10 req/s | N | |
| /v5/asset/delivery-record | 50 req/s | N | |
| /v5/asset/deposit/query-internal-record | 300 req/s | N | |
| /v5/fiat/balance-query | 1000 req/s | N | |
| /v5/fiat/query-coin-list | 1000 req/s | N | |
| /v5/fiat/trade-query | 1000 req/s | N | |
| /v5/fiat/query-trade-history | 1000 req/s | N | |
| /v5/asset/fundinghistory | 30 req/s | N | |
| /v5/asset/portfolio-margin | 50 req/s | N | |
| /v5/asset/settlement-record | 50 req/s | N | |
| /v5/asset/total-members-assets | 50 req/s | N | |
| /v5/asset/withdraw/vasp/list | 1 req/s | N | |
| /v5/asset/withdraw/query-address | 300 req/s | N | |
| POST | /v5/asset/transfer/inter-transfer | 60 req/min | N |
| /v5/asset/transfer/save-transfer-sub-member | 20 req/s | N | |
| /v5/asset/transfer/universal-transfer | 5 req/s | N | |
| /v5/asset/withdraw/create | 5 req/s | N | |
| /v5/asset/withdraw/cancel | 60 req/min | N | |
| /v5/asset/exchange/quote-apply | 20 req/s | N | |
| /v5/asset/exchange/convert-execute | 20 req/s | N | |
| /v5/asset/covert/small-balance-execute | 5 req/s | N | |
| /v5/asset/covert/get-quote | 5 req/s | N | |
| /v5/asset/deposit/deposit-to-account | 300 req/s | N | |
| /v5/fiat/trade-execute | 100 req/s | N | |
| /v5/fiat/quote-apply | 1000 req/s | N | |
| GET | /v5/asset/exchange/convert-result-query | 50 req/s | N |
| /v5/asset/exchange/query-convert-history | 50 req/s | N | |
| /v5/fiat/reference-price | 1000 req/s | N |
User
| Method | Path | Limit | upgradable |
|---|---|---|---|
| POST | /v5/user/create-sub-member | 1 req/s | N |
| /v5/user/create-sub-api | 1 req/s | N | |
| /v5/user/frozen-sub-member | 5 req/s | N | |
| /v5/user/update-api | 5 req/s | N | |
| /v5/user/update-sub-api | 5 req/s | N | |
| /v5/user/delete-api | 5 req/s | N | |
| /v5/user/delete-sub-api | 5 req/s | N | |
| GET | /v5/user/query-sub-members | 10 req/s | N |
| /v5/user/query-api | 10 req/s | N | |
| /v5/user/aff-customer-info | 10 req/s | N | |
| POST | /v5/user/agreement | 20 req/s | N |
| GET | /v5/user/submembers | 5 req/s | N |
| /v5/user/escrow_sub_members | 5 req/s | N | |
| /v5/user/sub-apikeys | 10 req/s | N | |
| /v5/user/get-member-type | 10 req/s | N | |
| POST | /v5/user/del-submember | 5 req/s | N |
| GET | /v5/user/invitation/referrals | 10 req/s | N |
Spot Margin Trade
| Method | Path | Limit | Upgradable |
|---|---|---|---|
| POST | Toggle Margin Trade | 5 req/s | N |
| POST | Set Leverage | 5 req/s | N |
| GET | Get Status And Leverage | 50 req/s | N |
| GET | Get Max Borrowable Amount | 50 req/s | N |
| GET | Get Coin State | 50 req/s | N |
| GET | Get Available Amount to Repay | 50 req/s | N |
| POST | Set Auto Repay Mode | 5 req/s | N |
| GET | Get Auto Repay Mode | 50 req/s | N |
| GET | Get Fixed-Rate Borrow Order Quote | 5 req/s | N |
| POST | Fixed-Rate Borrow | 1 req/s | N |
| POST | Renew Fixed-Rate Borrow | 1 req/s | N |
| GET | Get Fixed-Rate Borrow Order Info | 5 req/s | N |
| GET | Get Fixed-Rate Borrow Contract Info | 5 req/s | N |
| GET | Get Liability Info | 5 req/s | N |
Spread Trading
| Method | Path | Limit | Upgradable |
|---|---|---|---|
| POST | Create Order | 20 req/s | N |
| POST | Amend Order | 20 req/s | N |
| POST | Cancel Order | 20 req/s | N |
| POST | Cancel All Orders | 5 req/s | N |
| GET | Get Open Orders | 50 req/s | N |
| GET | Get Order History | 50 req/s | N |
| GET | Get Trade History | 50 req/s | N |
| GET | Get Max Qty | 50 req/s | N |
RFQ
| Method | Path | Limit | Upgradable |
|---|---|---|---|
| POST | Cancel All Quotes | 50 req/s | N |
| POST | Cancel Quote | 50 req/s | N |
| POST | Accept non-LP Quote | 50 req/s | N |
| POST | Cancel All RFQs | 50 req/s | N |
| POST | Create Quote | 50 req/s | N |
| POST | Create RFQ | 50 req/s | N |
| POST | Execute Quote | 50 req/s | N |
| POST | Cancel RFQ | 50 req/s | N |
| GET | Get Public Trades | 50 req/s | N |
| GET | Get Quotes | 50 req/s | N |
| GET | Get Quotes (real-time) | 50 req/s | N |
| GET | Get RFQ Configuration | 50 req/s | N |
| GET | Get RFQs | 50 req/s | N |
| GET | Get RFQs (real-time) | 50 req/s | N |
| GET | Get Trade History | 50 req/s | N |
Institutional Loan
| Method | Path | Limit | Upgradable |
|---|---|---|---|
| GET | Get Product Info | 100 req/s | N |
| GET | Get Margin Coin Info | 100 req/s | N |
| GET | Get Loan Orders | 20 req/s | N |
| GET | Get Repayment Orders | 20 req/s | N |
| GET | Get LTV | 20 req/s | N |
| POST | Bind Or Unbind UID | 1 req/s | N |
| POST | Repay | 1 req/s | N |
Instructions for batch endpoints
The batch order endpoint, which includes operations for creating, amending, and canceling, has its own rate limit and does not share it with single requests, e.g., let's say the rate limit of single create order endpoint is 100/s, and batch create order endpoint is 100/s, so in this case, I can place 200 linear orders in one second if I use both endpoints to place orders
When category = linear spot or inverse
API for batch create/amend/cancel order, the frequency of the API will be consistent with the current configuration, but the counting consumption will be consumed according to the actual number of orders. (Number of consumption = number of requests * number of orders included in a single request), and the configuration of business lines is independent of each other.
The batch APIs allows 1-10 orders/request. For example, if a batch order request is made once and contains 5 orders, then the request limit will consume 5.
If part of the last batch of orders requested within 1s exceeds the limit, the part that exceeds the limit will fail, and the part that does not exceed the limit will succeed. For example, in the 1 second, the remaining limit is 5, but a batch request containing 8 orders is placed at this time, then the first 5 orders will be successfully placed, and the 6-8th orders will report an error exceeding the limit, and these orders will fail.