# Limits

> Rate limit values, content limits and retention periods.

Source: /en/reference/limits/

## Rate limits

When a limit is exceeded, the endpoint returns a `429 rate_limited` response. The counter starts with the first request and is reset when the window expires.

| Operation | Limit | Counted per |
|---|---|---|
| Review list, method statement (browser) | 600 in 5 minutes | Brand and the visitor's IP address; the same visitor's requests on different channels of the brand are counted together |
| SSR (server key) | 6,000 in 5 minutes | Server key |
| Signed-in customer queries (product page and order page together) | 6,000 in 5 minutes | Server key |
| Order verification | 20 in 5 minutes | Brand and the visitor's IP address |
| Order verification (same email address or order number) | 10 failed attempts an hour | Brand and the email address or order number, regardless of IP address. Successful checks are not counted |
| Invitation or correction link | 30 in 5 minutes | Brand and the visitor's IP address |
| Submitting and correcting reviews | 10 per hour | Brand and the visitor's IP address |
| Uploading photos and videos | 30 per hour | Brand and the visitor's IP address |
| "Helpful" votes | 30 per hour | Brand and the visitor's IP address |
| Reporting reviews | 10 per hour | Brand and the visitor's IP address |
| Question list (browser) | 600 in 5 minutes | Brand and the visitor's IP address |
| Asking a question | 5 per hour | Brand and the visitor's IP address |
| Answering a question (verified buyer) | 10 per hour | Brand and the visitor's IP address |
| Product views | 120 in 5 minutes | Brand and a hash of the IP address |
| Refused requests without valid credentials: invalid key, unreadable body, unknown password, signature or email service | 60 in 5 minutes | The IP address; storefront endpoints, order and delivery transfer and email delivery notifications are counted together |
| Order and delivery transfer | 600 in 5 minutes | Server key or signing password |
| Email delivery events | 600 in 5 minutes | Email delivery events password |
| Sending invitation emails | 500 per hour | Brand |

Because all calls from your server share the same IP address, calls made with a server key are counted separately; this way your customers do not affect each other's limits.

- For limits counted per IP address, IPv6 addresses are grouped by their /64 block; addresses in the same block count as a single visitor.
- The limit on refused requests without valid credentials only stops refused requests. Requests made with a valid key or signature from an IP address that hit this limit are not affected by it. Once the limit is reached, refused requests are no longer written to the connection log.

## Content limits

| Field | Limit |
|---|---|
| Review title | 200 characters |
| Review text | 5,000 characters |
| Author name | 120 characters |
| Image description (alt text) | 300 characters |
| Photos and videos per review | 6 |
| Files not yet added to a review, per order line | 18 |
| Photo | jpeg, png, webp; up to 12 MB and 40 megapixels |
| Video | mp4, mov; up to 200 MB, 60 seconds, 3840×2160 (2160×3840 portrait) and 60 frames per second; H.264, HEVC, MPEG-4, VP9 or AV1 |
| Products reviewed in a single call | 20 |
| Report note | 1,000 characters |
| Question | 1,000 characters |
| Answer to a question | 2,000 characters |
| Seller reply, resolution note | 2,000 characters |
| Product code | 128 characters |
| Order number (order verification) | 128 characters |
| Email address | 254 characters |
| Opt-out lookup (Admin API) | 1,000 addresses per request |
| Page size (review list) | 50 |
| Page size (Admin API lists) | 100 |
| Order or delivery records per request | 100 |
| Email events per request | 500 |
| Bulk approval or rejection | 200 reviews |

The review form and the order verification form receive these limits from the server: the `limits` field of the review list, eligibility and signed-in customer answers (`media_count`, `title_length`, `body_length`, `name_length`, `alt_text_length`, `image_bytes`, `video_bytes`, `video_seconds`, `reviews_per_call`, `order_reference_length`, `email_length`, `report_note_length`). The script has no hard-coded fallback limits; the values always come from this field. When the script can read a video's length before uploading, it does not send a video that exceeds the limit; the server also checks the length at upload (`422 refused / video_too_long: 60`). The review form does not upload photos and videos as they are: it prepares each file in the visitor's browser first (a photo with its long side at most 2,560 pixels, a video with its short side at most 1,080 pixels, about 3 Mbps and at most 30 frames per second, without sound), so the size limits above apply to the prepared file. If the browser cannot prepare a file, the original is uploaded when it is within the limit; otherwise the form tells the visitor and the file is not uploaded. The checks on the server do not change.

## Retention periods

| Record | Period |
|---|---|
| Connection log entries | 30 days |
| File uploads not attached to a review | 2 days |
| Reviews, review history, activity history, audit reports | Kept indefinitely. For a personal data deletion request, the review's author details and media are deleted and the name and contact details in the text are replaced with marks; the rating and the rest of the text are kept. |
| Email address, phone and customer number on orders | Turned into pseudonyms when the review writing period ends (90 days by default); 30 days after the order date for orders that will never get an invitation |
| Personal data access records | 365 days |

For all retention periods, see [Protection of personal data](/en/security/data-protection.md#retention-periods).
