Skip to content

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):

HTTP/1.1 429 Too Many Requests
Retry-After: 12

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