# Limits

Source: https://docs.temprl.org/models/limits

> Request size, media, question and output limits for the Simo API, and what happens when you go over them.

| Limit | Value | Over the limit |
|---|---|---|
| Request body | 25 MB | `413 payload_too_large`. The SDK checks before uploading |
| Pictures per request | 16, video frames included | `InvalidRequest` naming the limit |
| Frames kept per video | 16, spread evenly | Extra frames are dropped evenly |
| Frames sampled by `video_file()` | 32 at most (SDK) | Sampling stops |
| Options in a `Choice` | 2 to 256 | `InvalidRequest` |
| `Fill` `max_tokens` | 1 to 256 (default 16) | `InvalidRequest` |
| `Extract` `max_tokens` | 1 to 512 (default 64) | `InvalidRequest` |
| API keys per account | 10 active | Revoke one in the console first |
| Request timeout (SDK) | 120 s by default | `SimoTimeout`; raise `timeout` for large media |

## Rate limits

When the service is busy it answers `429`. The SDK retries 429, 502, 503 and 504 automatically (3 extra attempts by default, honoring `Retry-After`), and none of those failures are charged. If you call the HTTP API directly, retry with backoff.

## Making requests smaller

- Images are sent as PNG at their natural size. Crop to the region that matters rather than downscaling, so small text stays legible.
- For video, sample fewer frames per second: the model keeps 16 at most anyway.
- Ask all questions about one input in one request instead of re-sending it.
