Rate Limiting

The Pixee PIM API enforces per-endpoint rate limits to ensure fair usage and platform stability. Limits are tracked in Redis and persist across API instances.

Rate limit tiers

Endpoints are grouped into tiers, each with its own limit:

TierLimitEndpoints
AUTH5 / minLogin, password reset
READ_STANDARD100 / minGET endpoints (products, imports, etc.)
WRITE_STANDARD50 / minPOST / PATCH / DELETE endpoints
READ_SENSITIVE50 / minAnalytics, KPIs, reports
IMPORT_STANDARD20 / minImport job creation
EXPORT_STANDARD10 / minExport job creation
SEARCH200 / minSearch and autocomplete queries

Rate limit headers

Every API response includes headers showing your current limit status:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets

Example response headers

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1747220460

Handling rate limit errors

When you exceed the limit, the API returns 429 Too Many Requests:

429 Response

{
  "detail": "Rate limit exceeded",
  "retry_after_seconds": 60
}

Check the retry_after_seconds field to know how long to wait before retrying.

Retry strategy

We recommend exponential backoff with jitter:

Exponential backoff (Python)

import time
import random
import httpx

def call_with_backoff(url, headers, max_retries=5):
    for attempt in range(max_retries):
        response = httpx.get(url, headers=headers)
        if response.status_code == 429:
            wait = (2 ** attempt) + random.uniform(0, 1)
            time.sleep(wait)
            continue
        return response
    raise Exception("Max retries exceeded")

Was this page helpful?