> For the complete documentation index, see [llms.txt](https://docs.ticko.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ticko.xyz/api-documentation/overview/rate-limits.md).

# Rate Limits

Read endpoints are enforced by IP. Write endpoints are enforced by both IP and rate-limit address.

## REST By IP

* REST IP aggregate budget: `1200 weight / minute / IP`.
* Window: rolling 60 seconds.
* Applies to: all REST requests.
* Exceeded behavior: HTTP `429`.

GET endpoint weights:

* Market, trade, and account read endpoints: weight `2`.
* Explorer read endpoints: weight `40`.

POST requests count as fixed weight `1` against the IP budget. POST requests are also subject to rate-limit address limits.

## REST By Address

* Address aggregate budget: `2400 weight / minute / rate-limit address`.
* Window: rolling 60 seconds.
* Applies to: signed REST write requests.
* Exceeded behavior: HTTP `429`, except cancel reserve allowance.

Rate-limit address resolution:

* Signing Type A: uses `target_address` when provided; otherwise uses `signer_address`.
* Signing Type B: uses `signer_address`. Signing Type B endpoints do not include `target_address` in the request body.

Write endpoint weights:

| Endpoint                             | Address weight                 |
| ------------------------------------ | ------------------------------ |
| `POST /v1/trade/orders`              | `1 + floor(batch_length / 10)` |
| `POST /v1/trade/orders/modify`       | `1 + floor(batch_length / 10)` |
| `POST /v1/trade/orders/cancel`       | `1 + floor(batch_length / 10)` |
| `POST /v1/trade/orders/chase`        | `1 + floor(batch_length / 10)` |
| `POST /v1/trade/orders/batch`        | `1 + floor(batch_length / 10)` |
| `POST /v1/trade/orders/batch/modify` | `1 + floor(batch_length / 10)` |
| `POST /v1/trade/orders/batch/cancel` | `1 + floor(batch_length / 10)` |
| `POST /v1/trade/orders/cancel-all`   | `5`                            |
| `POST /v1/account/position-mode`     | `40`                           |
| `POST /v1/account/leverage`          | `2`                            |
| `POST /v1/account/isolated-margin`   | `2`                            |
| `POST /v1/account/approve-agent`     | `40`                           |
| `POST /v1/account/revoke-agent`      | `40`                           |
| `POST /v1/account/renew-agent`       | `40`                           |
| `POST /v1/account/create-sub`        | `40`                           |
| `POST /v1/account/transfer`          | `40`                           |
| `POST /v1/account/withdraw`          | `40`                           |

`batch_length` is `1` for single order, modify, cancel, and chase requests. For batch endpoints, it is the number of items in the request.

## Cancel Reserve Allowance

The cancel reserve allowance is a risk-reduction allowance for cancel requests. It exists so a user can still cancel open orders when the account has already used its normal rate-limit address write budget.

How it works:

* Cancel requests first consume the normal rate-limit address write budget.
* If the normal rate-limit address write budget is exhausted, non-cancel write requests are rejected with HTTP `429`.
* The cancel endpoints below may still be accepted through the reserve allowance.
* The reserve allowance is separate from the normal address budget and has its own limit of `1 request / second / rate-limit address`.
* The reserve allowance does not bypass signature checks, permission checks, endpoint validation, or IP-level rate limits.

Reserve allowance endpoints:

| Endpoint                             | Reserve allowance                         |
| ------------------------------------ | ----------------------------------------- |
| `POST /v1/trade/orders/cancel`       | `1 request / second / rate-limit address` |
| `POST /v1/trade/orders/batch/cancel` | `1 request / second / rate-limit address` |
| `POST /v1/trade/orders/cancel-all`   | `1 request / second / rate-limit address` |

## Rate Limit Error

```json
{
  "code": "10029",
  "msg": "Rate limit exceeded",
  "data": {
    "scope": "address"
  },
  "trace_code": "bb-12345-abcde"
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ticko.xyz/api-documentation/overview/rate-limits.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
