Skip to main content
Rate limits are applied per API key, per minute.

Reading the limit

Responses include standard rate-limit headers so you can pace bursts off the server’s signal:
  • X-RateLimit-Limit - allowed in the current window
  • X-RateLimit-Remaining - remaining in the current window
  • X-RateLimit-Reset - seconds until the window resets
When you exceed a limit you get 429 with a Retry-After header (seconds):

Backoff

  • Wait the number of seconds in Retry-After, then retry.
  • For bursts, watch X-RateLimit-Remaining and slow down before you hit zero.
  • Concurrency is also bounded - too many in-flight generations returns 429 CONCURRENT_LIMIT_REACHED; poll your existing jobs before starting more. Video has a lower concurrency ceiling than images and runs on a small dedicated pool, so clips may queue (stay pending) before they start processing - keep polling.
Long-polling with ?wait=true counts as a single request against these limits while it’s held - see Polling & wait.