# Limits and pagination

> Request rate limits and their headers, how lists are paged, how many accounts each plan connects, and the limits of what the copier copies.

## Rate limits [#rate-limits]

| Limit                   | Applies to                                                                                                                              |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| 120 requests per minute | Each API key, all endpoints together                                                                                                    |
| 5 per minute            | Connecting, reconnecting and disconnecting accounts, per user across all your keys. Each of these starts or stops a MetaTrader terminal |
| 120 messages per minute | Each API key on the [MCP server](/docs/mcp). A tool call also counts once against the key's 120 requests                                |

Every response has two headers that tell you where you stand:

```http
RateLimit-Policy: 120;w=60
RateLimit: limit=120, remaining=117, reset=42
```

* `RateLimit-Policy` is the limit and its window in seconds.
* `RateLimit` is the limit, the requests left in the current window, and the seconds until the window has room again.

When you go over a limit, the request fails with `429 rate_limited` and a `Retry-After` header. Wait that many seconds before you try again.

## Pagination [#pagination]

List endpoints return their items in pages, all in the same format:

```json
{
  "object": "list",
  "data": [],
  "has_more": false,
  "next_cursor": null
}
```

| Field         | Description                                                      |
| ------------- | ---------------------------------------------------------------- |
| `data`        | The items on this page                                           |
| `has_more`    | Whether there is another page                                    |
| `next_cursor` | Pass it as `cursor` to get the next page; `null` on the last one |

Two query parameters control the paging:

| Parameter | Description                                                                                           |
| --------- | ----------------------------------------------------------------------------------------------------- |
| `limit`   | Items per page, 1 to 100. Default 50                                                                  |
| `cursor`  | The `next_cursor` of the previous page. A value the API didn't return fails with `400 invalid_cursor` |

Each list has a fixed order:

| List                                    | Order        |
| --------------------------------------- | ------------ |
| `GET /v1/accounts`                      | Newest first |
| `GET /v1/copiers`                       | Oldest first |
| `GET /v1/copiers/{copier_id}/followers` | Oldest first |
| `GET /v1/copiers/{copier_id}/events`    | Newest first |

```bash
curl "https://api.algotradertools.com/v1/copiers?limit=100" \
  -H "Authorization: Bearer $ATT_API_KEY"
```

## Account slots [#account-slots]

Your plan decides how many accounts can be connected at the same time. Masters and followers each take a slot.

| Plan    | Accounts |
| ------- | -------- |
| Starter | 2        |
| Trader  | 5        |
| Pro     | 10       |
| Desk    | 20       |

Connecting or reconnecting an account when all of your plan's slots are in use fails with `403 plan_limit_reached`. An account whose terminal was released after a lapsed subscription doesn't take a slot until it is reconnected.

## Retention [#retention]

Copy events are kept for 90 days. Removing a follower deletes its events, and deleting a copier deletes all of its events.

## Copying limits [#copying-limits]

* **Hedging accounts only.** MT5 netting accounts can't be masters or followers. All MT4 accounts are hedging accounts.
* **A master or a follower.** An account can't be both, and masters are your own accounts.
* **Pending orders.** By default, a pending order is copied as a market order when it fills. With `copy_pending` on the follower, pending orders are placed on the follower too. Stop-limit orders to MT4 followers and to followers with `reverse` are still copied only when they fill. See [Pending orders](/docs/followers#pending-orders).
* **Currencies.** `balance_ratio` and `equity_ratio` sizing compare the two accounts' figures as they are, without converting between currencies.
* **Copy time** is mostly the follower broker's own execution, about 50 to 300 ms.
