# Limits, lists and versions

> Time limits, rate limits, sizes, pagination and how the API changes.

## Time

Every call answers within 30 seconds. Work that takes longer returns an operation or an exec id to poll, and `wait_s` (up to 25) holds a poll open until something changes.

A person's Take control ends after 5 minutes with no input from them.

## Rate limits

| Limit | Value |
|---|---|
| Requests per key | 60 a minute for each screen in your organization, at least 300 |
| Screenshots per screen | 2 a second (after-shots count) |
| Other calls per screen | 10 a second |

Over a limit you get `429 RATE_LIMITED` with `Retry-After`. The `RateLimit` and `RateLimit-Policy` headers show where you stand.

## Sizes

| What | Limit |
|---|---|
| Actions in one batch | 20, and the batch must fit in 28 s |
| Text in one `type` | 1,000 characters |
| File upload or download | 64 MiB |
| Command output in one reply | 64 KiB per stream by default, up to 1 MiB with `max_bytes` |

## Lists

Lists take `limit` (1 to 100, default 20) and `after` (the cursor from the last page) and return newest first:

```json
{"data": [{"id": "scr_7f2kq9w3x8m4b6tzp1ac", "name": "billing-bot"}], "next": "c_8f2k..."}
```

`next: null` means there are no more.

## Versions

The version is in the path: `/v1`. Inside v1 we only add things, so ignore fields, enum values and error codes you do not know. A route that will go away sends a `Deprecation` header first and a `Sunset` header with its end date. The SDK logs a warning when it sees one.
