# Rate limits
## Overview
* Nado uses a weight-based rate-limiting system across queries and executes. We limit based on `IP address`, `Wallet address`, and a global `max # of orders per subaccount per market`.
* These limits equally apply to both `http` requests and `Websocket` messages.
* Limits are applied on a `1 minute` and `10 seconds` basis.
## Limits
* IP addresses have a max weight limit of `2400` per minute or `400` every 10 seconds applied only to queries.
* Wallet addresses have a max weight limit of `600` per minute or `100` every 10 seconds applied only to executes.
* Users can have up to `500` open orders per subaccount per market.
* Orders have the following additional limits:
* Place orders (with spot leverage): up to `600` per minute or `100` every 10 seconds across all markets.
* Place orders (without spot leverage): up to `30` per minute or `5` every 10 seconds across all markets. **Note**: orders without spot leverage are `20x` more expensive to place due to additional health checks needed.
* Order cancellations: up to `600` per minute or `100` every 10 seconds.
## Query Weights
Queries are rate-limited based on IP. The following weights are applied per query:
* [**Status**](https://docs.nado.xyz/developer-resources/api/gateway/queries/status): `IP weight = 1`
* [**Contracts**](https://docs.nado.xyz/developer-resources/api/gateway/queries/contracts): `IP weight = 1`
* [**Nonces**](https://docs.nado.xyz/developer-resources/api/gateway/queries/nonces): `IP weight = 2`
* [**Order**](https://docs.nado.xyz/developer-resources/api/gateway/queries/order)**:** `IP weight = 1`
* [**Orders**](https://docs.nado.xyz/developer-resources/api/gateway/queries/orders): `IP weight = 2 * product_ids.length`
* [**Subaccount Info**](https://docs.nado.xyz/developer-resources/api/gateway/queries/subaccount-info): `IP weight = 2` (or `10` with `txns`, or `15` with `txns` + `pre_state="true"`)
* [**Isolated Positions**](https://docs.nado.xyz/developer-resources/api/gateway/queries/isolated-positions): `IP weight = 10`
* [**Market Liquidity**](https://docs.nado.xyz/developer-resources/api/gateway/queries/market-liquidity): `IP weight = 1`
* [**Symbols**](https://docs.nado.xyz/developer-resources/api/gateway/queries/symbols): `IP weight = 2`
* [**All Products**](https://docs.nado.xyz/developer-resources/api/gateway/queries/all-products): `IP weight = 5`
* [**Edge All Products**](https://docs.nado.xyz/developer-resources/api/gateway/queries/edge-all-products): `IP weight = 5`
* [**Market Prices**](https://docs.nado.xyz/developer-resources/api/gateway/queries/market-prices)**:** `IP weight = product_ids.length`
* [**Max Order Size**](https://docs.nado.xyz/developer-resources/api/gateway/queries/max-order-size)**:** `IP weight = 5`
* [**Max Withdrawable**](https://docs.nado.xyz/developer-resources/api/gateway/queries/max-withdrawable)**:** `IP weight = 5`
* [**Max NLP Mintable**](https://docs.nado.xyz/developer-resources/api/gateway/queries/max-nlp-mintable)**:** `IP weight = 20`
* [**Max NLP Burnable**](https://docs.nado.xyz/developer-resources/api/gateway/queries/max-nlp-burnable)**:** `IP weight = 20`
* [**NLP Pool Info**](https://docs.nado.xyz/developer-resources/api/gateway/queries/nlp-pool-info)**:** `IP weight = 20`
* [**NLP Locked Balances**](https://docs.nado.xyz/developer-resources/api/gateway/queries/nlp-locked-balances)**:** `IP weight = 20`
* [**Health Groups**](https://docs.nado.xyz/developer-resources/api/gateway/queries/health-groups)**:** `IP weight = 2`
* [**Linked Signer**](https://docs.nado.xyz/developer-resources/api/gateway/queries/linked-signer)**:** `IP weight = 5`
* [**Insurance**](https://docs.nado.xyz/developer-resources/api/gateway/queries/insurance): `IP weight = 2`
* [**Fee Rates**](https://docs.nado.xyz/developer-resources/api/gateway/queries/fee-rates)**:** `IP weight = 2`
* [**Assets**](https://docs.nado.xyz/developer-resources/api/v2/assets): `IP weight = 2`
* [**Orderbook**](https://docs.nado.xyz/developer-resources/api/v2/orderbook): `IP weight = 1`
## Archive (indexer) Weights
* Archive (indexer) queries are rate-limited based on IP.
* IP addresses have a max weight limit of `2400` per minute or `400` every 10 seconds.
The following weights are applied per query:
* [**Orders**](https://docs.nado.xyz/developer-resources/api/archive-indexer/orders)**:** `IP Weight = 2 + (limit * subaccounts.length / 20)`; where `limit` and `subaccounts` are query params.
* [**Matches**](https://docs.nado.xyz/developer-resources/api/archive-indexer/matches)**:** `IP Weight = 2 + (limit * subaccounts.length / 10)`; where `limit` and `subaccounts` are query params.
* [**Events**](https://docs.nado.xyz/developer-resources/api/archive-indexer/events)**:** `IP Weight = 2 + (limit * subaccounts.length / 10)`; where `limit` and `subaccounts` are query params.
* [**Candlesticks**](https://docs.nado.xyz/developer-resources/api/archive-indexer/candlesticks)**:** `IP Weight = 1 + limit / 20`; where `limit` is a query param.
* [**Edge Candlesticks**](https://docs.nado.xyz/developer-resources/api/archive-indexer/edge-candlesticks): `IP Weight = 1 + limit / 20`; where `limit` is a query param.
* [**Product Snapshots**](https://docs.nado.xyz/developer-resources/api/archive-indexer/product-snapshots)**:** `IP Weight = 10` for single `products` query, or `10 * timestamps.length` for multiple `product_snapshots` query with max\_time parameter
* [**Funding Rate**](https://docs.nado.xyz/developer-resources/api/archive-indexer/funding-rate)**:** `IP Weight = 2`
* [**Interest & funding payments**](https://docs.nado.xyz/developer-resources/api/archive-indexer/interest-and-funding-payments)**:** `IP Weight = 5`
* [**Oracle Price**](https://docs.nado.xyz/developer-resources/api/archive-indexer/oracle-price)**:** `IP Weight = 2`
* [**Oracle Snapshots**](https://docs.nado.xyz/developer-resources/api/archive-indexer/oracle-snapshots): `IP Weight = max((snapshot_count * product_ids.length / 100), 2)`; where snapshot\_count is `interval.count.min(500)`
* [**Perp Prices**](https://docs.nado.xyz/developer-resources/api/archive-indexer/perp-prices)**:** `IP Weight = 2` (includes both single `price` and multiple `perp_prices` queries)
* [**Market Snapshots**](https://docs.nado.xyz/developer-resources/api/archive-indexer/market-snapshots)**:** `IP Weight = max((snapshot_count * product_ids.length / 100), 2)`; where snapshot\_count is `interval.count.min(500)`
* [**Edge Market Snapshots**](https://docs.nado.xyz/developer-resources/api/archive-indexer/edge-market-snapshots): `IP weight = (interval.count.min(500) / 20) + (interval.count.clamp(2, 20) * 2)`
* [**Subaccounts**](https://docs.nado.xyz/developer-resources/api/archive-indexer/subaccounts)**:** `IP Weight = 2`
* [**Subaccount Snapshots**](https://docs.nado.xyz/developer-resources/api/archive-indexer/subaccount-snapshots): `IP Weight = 2 + (limit * subaccounts.length / 10)`; where `limit` and `subaccounts` are query params.
* [**Linked Signers**](https://docs.nado.xyz/developer-resources/api/archive-indexer/linked-signers): `IP Weight = 2`
* [**Linked Signer Rate Limit**](https://docs.nado.xyz/developer-resources/api/archive-indexer/linked-signer-rate-limit)**:** `IP Weight = 2`
* [**Isolated Subaccounts**](https://docs.nado.xyz/developer-resources/api/archive-indexer/isolated-subaccounts): `IP Weight = 2`
* [**Signatures**](https://docs.nado.xyz/developer-resources/api/archive-indexer/signatures): `IP Weight = 2 + len(digests) / 10`; where `digests` is a query param.
* [**Fast Withdrawal Signature**](https://docs.nado.xyz/developer-resources/api/archive-indexer/fast-withdrawal-signature): `IP Weight = 10`
* [**NLP Funding Payments**](https://docs.nado.xyz/developer-resources/api/archive-indexer/nlp-funding-payments): `IP Weight = 5`
* [**NLP Interest Payments**](https://docs.nado.xyz/developer-resources/api/archive-indexer/nlp-interest-payments): `IP Weight = 5`
* [**NLP Snapshots**](https://docs.nado.xyz/developer-resources/api/archive-indexer/nlp-snapshots): `IP Weight = limit.min(500) / 100`; where `limit` is a query param.
* [**Tx Hashes**](https://docs.nado.xyz/developer-resources/api/archive-indexer/tx-hashes): `IP Weight = idxs.length * 2`; where `idxs` is an array of submission indices (max 100).
* [**Liquidation Feed**](https://docs.nado.xyz/developer-resources/api/archive-indexer/liquidation-feed)**:** `IP Weight = 2`
* [**Sequencer Backlog**](https://docs.nado.xyz/developer-resources/api/archive-indexer/sequencer-backlog): `IP Weight = 1`
* [**Direct Deposit Address**](https://docs.nado.xyz/developer-resources/api/archive-indexer/direct-deposit-address): `IP Weight = 10`
* [**Quote Price**](https://docs.nado.xyz/developer-resources/api/archive-indexer/quote-price): `IP Weight = 2`
* [**Ink Airdrop**](https://docs.nado.xyz/developer-resources/api/archive-indexer/ink-airdrop): `IP Weight = 2`
## Execute Weights
Executes are rate-limited based on Wallet address. The following weights are applied per execute:
* [**Place order**](https://docs.nado.xyz/developer-resources/api/gateway/executes/place-order)**:**
* With spot leverage: `Wallet weight = 1`
* Without spot leverage: `Wallet weight = 20`
* [**Place orders**](https://docs.nado.xyz/developer-resources/api/gateway/executes/place-orders)**:**
* With spot leverage: `Wallet weight = 1 per order`
* Without spot leverage: `Wallet weight = 20 per order`
* **Note**: 50ms processing penalty per request
* [**Cancel orders**](https://docs.nado.xyz/developer-resources/api/gateway/executes/cancel-orders)**:**
* When no **digests** are provided: `Wallet weight = 1`
* When **digests** are provided: `Wallet weight = total digests`
* [**Cancel Product Orders**](https://docs.nado.xyz/developer-resources/api/gateway/executes/cancel-product-orders)**:**
* When no **productIds** are provided**:** `Wallet weight = 50`
* When **productIds** are provided: `Wallet weight = 5 * total productIds`
* [**Cancel And Place**](https://docs.nado.xyz/developer-resources/api/gateway/executes/cancel-and-place):
* The sum of [Cancel orders](https://docs.nado.xyz/developer-resources/api/gateway/executes/cancel-orders) + [Place order](https://docs.nado.xyz/developer-resources/api/gateway/executes/place-order) limits
* [**Withdraw Collateral**](https://docs.nado.xyz/developer-resources/api/gateway/executes/withdraw-collateral)**:**
* With spot leverage: `Wallet weight = 10`
* Without spot leverage: `Wallet weight = 20`
* [**Liquidate Subaccount**](https://docs.nado.xyz/developer-resources/api/gateway/executes/liquidate-subaccount): `Wallet weight = 20`
* [**Mint NLP**](https://docs.nado.xyz/developer-resources/api/gateway/executes/mint-nlp): `Wallet weight = 10`
* [**Burn NLP**](https://docs.nado.xyz/developer-resources/api/gateway/executes/burn-nlp): `Wallet weight = 10`
* [**Link Signer**](https://docs.nado.xyz/developer-resources/api/gateway/executes/link-signer): `Wallet weight = 30`
* Can only perform a max of 50 link signer requests every 7 days per subaccount.
* [**Transfer Quote:**](https://docs.nado.xyz/developer-resources/api/gateway/executes/transfer-quote) `Wallet weight = 10`
* Can only transfer to a max of 5 new recipients within 24hrs.
## Trigger Service Limits
The trigger service has additional limits specific to conditional orders:
* **Pending trigger orders**: Max of `25` pending trigger orders per product per subaccount
* **TWAP orders**: Must use IOC execution type and cannot be combined with isolated margin