# Limits

All default limits of the REST API and the MCP server in one table.

Section: Commerce · Reference
Canonical URL: https://docs.omniretailconnect.nl/commerce/reference/limits

## Limits at a glance

Defaults of a standard installation. The shop operator can raise the general rate limits and the URL cap; the other limits, including the write limit, are fixed. They apply to the REST API and the MCP server alike, except where noted.

*All limits*

| Limit | Value | Notes |
| --- | --- | --- |
| `Page size` | Default 20, maximum 50 | Out-of-range values are rejected, not clamped. |
| `Product paging depth` | Result position 500 | `truncated` is `true` beyond it. |
| `Date range` | 366 days in total | Order search and sales summary. Both days are included, so the end date is at most 365 days after the start date. |
| `Email search window` | 90 days in total | Both days included. Needs `commerce.read.pii`. |
| `SKUs per availability request` | 50 | Each SKU at most 64 characters. |
| `Category tree` | 500 nodes | Depth 1 to 3, default 2. |
| `Order lines, shipments, refunds` | 100, 20, 50 | Per order. |
| `Variants, images` | 100, 10 | Per product. |
| `Product description` | 2000 characters | Plain text. |
| `URL length` | 4096 bytes | REST only. Longer: `414`. |
| `Request body (MCP)` | 256 KiB | Larger: `413`. Every tool except `create_page` and `update_page` takes at most 64 KiB of arguments (`invalid_argument`). |
| `Write body (REST)` | 64 KiB; 256 KiB for pages | 65536 bytes; 262144 bytes for `POST /pages` and `PATCH /pages/{id}`. |
| `Page blocks and images` | 60 blocks; 20 new image URLs | Per page write: at most 40 MB and 30 seconds of image downloading in all, 5 MB per image. |
| `Sales and price breaks` | 10 per variant | At most 10 sales listed and 10 price breaks; break quantities 2 to 9999. |
| `List writes` | 50 entries | `set_labels` and `set_product_properties`: at most 50 labels or properties, 50 values of 100 characters per property. |
| `Discount code` | 3 to 32 characters | A-Z, 0-9, `-` and `_`. Name at most 120 characters; scope ids at most 200. |
| `Order note` | 2000 characters | `add_order_note`. |
| `Rate limit per token` | 60 per minute | Separate counters for REST and MCP. |
| `Rate limit per IP` | 300 per minute | Counted before authentication. |
| `Write calls per token` | 30 per minute | On top of the per-token limit, shared by MCP and REST. Over it: `too_many_requests`, the call does not run. Fixed. |
| `Token lifetime` | Default 180, maximum 365 days | No "never expires". |
| `Token lifetime with customer details` | At most 90 days | Tokens with `commerce.read.pii` created in the shop admin. |
| `Write token lifetime` | At most 30 days | Tokens with any `commerce.write.*` scope created in the shop admin. |
| `Image download (add_product_media)` | 10 MB, 5 s connect, 15 s total | `https` URL of at most 2048 characters on a public host; redirects are not followed. |
| `Image size` | 8000 pixels a side, 40 megapixels | JPEG, PNG, WebP, GIF or AVIF. |

Explanations: [Rate limits, pagination and request limits](https://docs.omniretailconnect.nl/commerce/getting-started/limits.md).
