Using the API

Rate limits

Every API key has a fixed request budget per minute. Budgets are generous for well-behaved integrations: with ETags, updated_since, and full pages, a recurring sync rarely spends more than a few requests.

The budgets

BudgetLimitApplies to
Per key120 requests / minuteEach pk_live_ key independently
Per account240 requests / minuteAll of an account's keys combined

Both budgets are enforced: a single key can never exceed 120/minute, and all keys of an account together can never exceed 240/minute — splitting traffic across keys raises the ceiling only up to the account budget.

Read your remaining budget

Every response carries the current rate-limit state:

HeaderMeaning
X-RateLimit-LimitThe per-key budget for the current window
X-RateLimit-RemainingRequests left in the window
X-RateLimit-ResetWhen the window resets (unix seconds)
Retry-AfterOn 429 only: seconds to wait before retrying

When you hit the limit

Over-budget requests fail with 429 and the standard error envelope, code rate_limited:

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

{"error": {"code": "rate_limited", "message": "...", "request_id": "req_..."}}

Keep syncs nearly free

A daily catalog sync in three requests.

One GET /api/v1/products?limit=250&updated_since=... per resource you mirror is usually the whole poll — see the sync guide for the full pattern.