429 with headers that tell you when to retry.
These limits are defaults and are subject to change. If your integration needs
a higher ceiling, contact support@samsa.ai.
Per-key request rate
Each API key may make up to 60 requests per minute, measured as a sliding 60-second window. Exceeding it returns429 with code: "rate_limited".
Successful responses and rate-limit 429s carry the current window state (the
Retry-After header is added on 429s only):
Read
X-RateLimit-Remaining on successful responses to slow down before you hit
the limit.
Per-organization concurrency cap
Independently of request rate, an organization may have at most 5 concurrent in-flight jobs — generation, edit, video, and model-creation jobs that are stillpending or processing, counted across every key in the organization. Submitting
another job while at the cap returns 429 with code: "too_many_active_jobs" and a
Retry-After header:
429 Too Many Requests
GET
endpoint, or subscribe to a webhook — before submitting more.
An example 429
A429 from the per-key window includes both the Retry-After and X-RateLimit-*
headers:
Handling 429s
1
Honor Retry-After
When a
429 includes a Retry-After header, wait at least that many seconds
before retrying. It is the authoritative signal.2
Back off exponentially
For repeated
429s, increase the delay between attempts (for example
1s, 2s, 4s, 8s…), capped at a sensible maximum, with a little random jitter to
avoid thundering-herd retries.3
Stay under the limit proactively
Watch
X-RateLimit-Remaining and throttle client-side before you hit 0. For
the concurrency cap, bound how many jobs you keep in flight at once.Retry-After and falls back to exponential
backoff.

