Limits

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

LimitValue
New generations60 a minute per key
Other requests300 a minute per key
Jobs running at the same time5 per account and environment
Jobs waiting in your queue500 per account and environment
Live jobs per day (the daily cap)300 per account (test keys: 1,000), reset at 00:00 UTC
Photo512 px or more on the short side, up to 100 megapixels
Photo by image_urlUp to 20 MB
Request bodyUp to 10 MB, about 7 MB of photo in image_base64
instructionUp to 10,000 characters
metadataUp to 10 keys; keys and values up to 200 characters
Result linkWorks for 24 hours
Result fileKept for 30 days
GET /v1/generationsThe 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 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.

On this page