Limits
Limits are enforced on a rolling 60-second window. When you hit the limit, subsequent requests return
429 Too Many Requests until the window resets.
Rate limit headers
Every response — successful or rate-limited — includes headers that describe your current budget:integer
Maximum requests allowed in the current window for this method class (read or write).
integer
Requests remaining in the current window.
integer
Unix timestamp (seconds since epoch) when the current window resets.
What a 429 looks like
When you exceed the limit, you’ll get a429 with a standard error envelope and a Retry-After header (in seconds):
Recommended client behavior
1
Respect Retry-After
On a
429, wait at least the number of seconds in the Retry-After header before retrying. This is the simplest correct strategy.2
Use exponential backoff with jitter
For longer-running jobs, layer exponential backoff on top of
Retry-After. Add random jitter so a fleet of workers doesn’t synchronize and thunder back together.3
Throttle proactively
Watch
X-RateLimit-Remaining. If it’s getting close to zero, slow down before you hit the limit — it’s much cheaper than recovering from a 429.4
Parallelize across keys for very large jobs
If you genuinely need throughput beyond the per-key limit, create multiple keys (one per worker) and shard your work across them. Limits are per-key, so independent keys give you linear scaling. Reach out to support if you need a higher per-key limit.

