# Limits at a glance

Every numeric limit of the REST API and the MCP server in one place, with a link to the guide that explains each one.

Every numeric limit of the REST API and the MCP server, in one place. Each row links to the guide that explains it.

## Paging and queries

| Limit                      | Value                                                                            | Explained in                                                                                              |
| -------------------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| `per_page`                 | 25 by default, at most 100. At most 25 when the request includes a to-many path. | [Pagination](https://developers.plnnrly.com/en/docs/api/v2/guides/pagination/)                            |
| `page`                     | 1 to 1000                                                                        | [Pagination](https://developers.plnnrly.com/en/docs/api/v2/guides/pagination/)                            |
| `sort`                     | At most 3 keys                                                                   | [Filtering and sorting](https://developers.plnnrly.com/en/docs/api/v2/guides/filtering-and-sorting/)      |
| Values in an `[in]` filter | At most 100                                                                      | [Filtering and sorting](https://developers.plnnrly.com/en/docs/api/v2/guides/filtering-and-sorting/)      |
| `q`                        | At most 255 characters                                                           | [Filtering and sorting](https://developers.plnnrly.com/en/docs/api/v2/guides/filtering-and-sorting/)      |
| `include`                  | At most 5 paths, each a single name: no nesting                                  | [Views and includes](https://developers.plnnrly.com/en/docs/api/v2/guides/views-and-includes/)            |
| Rows in a to-many include  | At most 25, or 50 for `tags`, then the list is truncated                         | [Views and includes](https://developers.plnnrly.com/en/docs/api/v2/guides/views-and-includes/#truncation) |

## Request headers

| Limit                                    | Value                                            | Explained in                                                                                           |
| ---------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
| `X-Request-Id`                           | 1 to 64 characters: letters, digits, `_` and `-` | [Headers and versioning](https://developers.plnnrly.com/en/docs/api/v2/guides/headers-and-versioning/) |
| `Idempotency-Key`                        | At most 255 characters                           | [Idempotency](https://developers.plnnrly.com/en/docs/api/v2/guides/idempotency/)                       |
| Stored response for an `Idempotency-Key` | Replayed for 24 hours                            | [Idempotency](https://developers.plnnrly.com/en/docs/api/v2/guides/idempotency/)                       |
| A request in progress holds its key for  | At most 120 seconds                              | [Idempotency](https://developers.plnnrly.com/en/docs/api/v2/guides/idempotency/)                       |

## Rate limits

| Limit                                       | Value                                                                           | Explained in                                                                     |
| ------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Per token                                   | 600 read units and 120 write units per minute                                   | [Rate limits](https://developers.plnnrly.com/en/docs/api/v2/guides/rate-limits/) |
| Per organisation                            | 3000 read units and 600 write units per minute                                  | [Rate limits](https://developers.plnnrly.com/en/docs/api/v2/guides/rate-limits/) |
| Per IP address, before the token is checked | 600 requests per minute per IP address and host, 1200 per minute per IP address | [Rate limits](https://developers.plnnrly.com/en/docs/api/v2/guides/rate-limits/) |

## Tokens and OAuth

| Limit                          | Value                                                       | Explained in                                                                           |
| ------------------------------ | ----------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| Personal access tokens         | 10 live tokens per user                                     | [API tokens](https://developers.plnnrly.com/en/docs/api/v2/guides/tokens/)             |
| Token expiry                   | 90 days by default, at most 12 months                       | [API tokens](https://developers.plnnrly.com/en/docs/api/v2/guides/tokens/)             |
| OAuth access token             | Valid for 1 hour                                            | [Sign in with OAuth](https://developers.plnnrly.com/en/docs/api/v2/guides/oauth-apps/) |
| OAuth refresh token            | Valid for 30 days                                           | [Sign in with OAuth](https://developers.plnnrly.com/en/docs/api/v2/guides/oauth-apps/) |
| App registration               | 5 per minute per IP address, 30 per minute per organisation | [Sign in with OAuth](https://developers.plnnrly.com/en/docs/api/v2/guides/oauth-apps/) |
| Token endpoint                 | 120 requests per minute per organisation and IP address     | [Sign in with OAuth](https://developers.plnnrly.com/en/docs/api/v2/guides/oauth-apps/) |
| OAuth discovery and revocation | 30 requests per minute per organisation and IP address      | [Sign in with OAuth](https://developers.plnnrly.com/en/docs/api/v2/guides/oauth-apps/) |

## File uploads

| Limit               | Value                                                                          | Explained in                                                                                |
| ------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- |
| File size           | 10 MB (10,485,760 bytes)                                                       | [Files: upload and download](https://developers.plnnrly.com/en/docs/api/v2/guides/uploads/) |
| Open upload tickets | 10 per user                                                                    | [Files: upload and download](https://developers.plnnrly.com/en/docs/api/v2/guides/uploads/) |
| Ticket validity     | 30 minutes                                                                     | [Files: upload and download](https://developers.plnnrly.com/en/docs/api/v2/guides/uploads/) |
| Uploads in flight   | 3 at once per token                                                            | [Files: upload and download](https://developers.plnnrly.com/en/docs/api/v2/guides/uploads/) |
| Upload requests     | 20 per minute per token                                                        | [Files: upload and download](https://developers.plnnrly.com/en/docs/api/v2/guides/uploads/) |
| Transfer time       | Stops after 30 seconds without data, or 120 seconds in total                   | [Files: upload and download](https://developers.plnnrly.com/en/docs/api/v2/guides/uploads/) |
| Ticket retention    | 24 hours after the file is registered; 7 days for an expired or revoked ticket | [Files: upload and download](https://developers.plnnrly.com/en/docs/api/v2/guides/uploads/) |

## MCP

| Limit                               | Value                                                                                                               | Explained in                                               |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| Requests                            | 60 per minute per user, counting every MCP request                                                                  | [Tools](https://developers.plnnrly.com/en/docs/mcp/tools/) |
| Answer size                         | About 30,000 characters (the limit counts bytes of the JSON answer); anything cut is listed in `meta.mcp_truncated` | [Tools](https://developers.plnnrly.com/en/docs/mcp/tools/) |
| Path in `api_read` and `api_write`  | At most 256 characters                                                                                              | [Tools](https://developers.plnnrly.com/en/docs/mcp/tools/) |
| Query in `api_read` and `api_write` | At most 60 parameters, nested at most 3 levels                                                                      | [Tools](https://developers.plnnrly.com/en/docs/mcp/tools/) |

## Data and caching

| Limit                                              | Value                                                                         | Explained in                                                                     |
| -------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Event dates                                        | `start` at most 5 years in the past, `end` at most 5 years ahead              | [Create an event](https://developers.plnnrly.com/en/docs/api/v2/events/create/)  |
| Discovery response                                 | Your client may cache it for 5 minutes: `Cache-Control: private, max-age=300` | [Discovery](https://developers.plnnrly.com/en/docs/api/v2/discovery/)            |
| Configuration reads, such as labels and work types | Your client may cache them for 1 minute: `Cache-Control: private, max-age=60` | [Rate limits](https://developers.plnnrly.com/en/docs/api/v2/guides/rate-limits/) |

## Related

- [Rate limits](https://developers.plnnrly.com/en/docs/api/v2/guides/rate-limits/)
- [What the API cannot do](https://developers.plnnrly.com/en/docs/api/v2/guides/known-limitations/)
- [Errors and retries](https://developers.plnnrly.com/en/docs/api/v2/guides/errors/)
