Rate Limiting & Retries¶
Every response includes headers describing your current rate limit status (see API Reference Overview).
Handling 429 Too Many Requests¶
When you exceed your limit, Nimbus returns 429 with a Retry-After
header (in seconds):
Recommended retry strategy¶
Use exponential backoff with jitter for 429 and 5xx responses:
import random
import time
import requests
def request_with_retry(url, headers, max_attempts=5):
for attempt in range(max_attempts):
response = requests.get(url, headers=headers)
if response.status_code not in (429, 500, 502, 503):
return response
retry_after = response.headers.get("Retry-After")
delay = float(retry_after) if retry_after else (2 ** attempt) + random.random()
time.sleep(delay)
response.raise_for_status()
return response
Don't retry on 4xx (except 429)
Client errors like 400 and 404 won't succeed on retry — fix the
request instead of retrying it.
Concurrency limits¶
In addition to the per-minute limit, Nimbus caps concurrent in-flight requests per API key:
| Plan | Concurrent requests |
|---|---|
| Free | 5 |
| Pro | 50 |
| Enterprise | Custom |