# Limits

Source: https://docs.foodshot.ai/guides/limits

> Rate limits, your queue, the daily cap and file sizes.

| Limit                             | Value                                                  |
| --------------------------------- | ------------------------------------------------------ |
| New generations                   | 60 a minute per key                                    |
| Other requests                    | 300 a minute per key                                   |
| Jobs running at the same time     | 5 per account and environment                          |
| Jobs waiting in your queue        | 500 per account and environment                        |
| Live jobs per day (the daily cap) | 300 per account (test keys: 1,000), reset at 00:00 UTC |
| Photo                             | 512 px or more on the short side, up to 100 megapixels |
| Photo by `image_url`              | Up to 20 MB                                            |
| Request body                      | Up to 10 MB, about 7 MB of photo in `image_base64`     |
| `instruction`                     | Up to 10,000 characters                                |
| `metadata`                        | Up to 10 keys; keys and values up to 200 characters    |
| Result link                       | Works for 24 hours                                     |
| Result file                       | Kept for 30 days                                       |
| `GET /v1/generations`             | The last 90 days                                       |

Over a limit, you get `429` with a `Retry-After` header: wait that many seconds, then retry with the same `Idempotency-Key` and body. Your limits and today's usage are in `GET /v1/account`.

Over the daily cap, new jobs get `429 daily_limit_reached` until 00:00 UTC; jobs you already created keep running. The cap limits what runaway code or a leaked key can use. Before a large import, such as every menu photo at launch, email [hello@foodshot.ai](mailto:hello@foodshot.ai) with your expected volume: we can raise limits as your volume grows.

## Many photos at once

* Jobs run 5 at a time per account. The rest wait in your queue and start in the order you sent them. Sending more requests in parallel doesn't make them faster.
* A batch of 50 photos runs in about 10 rounds of 5. At our objective of about 30-40 seconds per job, that is roughly 5 to 7 minutes.

Use webhooks for batches, or poll the list once every 5 to 10 seconds, with `created_gte` set to when the batch started:

```http
GET /v1/generations?created_gte=2026-10-18T10:00:00Z&limit=100
```

Polling each job separately reaches the limit of 300 requests a minute at about 25 open jobs.
