Rate limits
Limits protect tenants and the platform from noisy neighbors. Limits are per API credential (API key today; OAuth client when OAuth ships) unless an Enterprise Order Form specifies dedicated capacity.
Plan defaults
| Plan | Requests / minute | Requests / day (UTC) |
|---|---|---|
| Shop Start / Starter | 100 | 20 000 |
| Shop Growth / Business | 300 | 100 000 |
| Platform | 600 | 250 000 |
| Enterprise | 1 200 | 1 000 000 |
Sandbox uses Start-class limits unless otherwise noted.
Paid daily packages: Merchants can raise API RPM (and related capacity meters) from Merchant BO → Settings → capacity packages. Catalog prices are listed in PLN/day and EUR/day; the fee accrues for each day a paid package stays active until downgraded to the free tier. Effective caps are applied via tenants.limits_override and enforced by the Partner API gateway. Platform ops accrue ledger lines (POST /v1/platform/limit-addons/accrue or scripts/limit-addon-daily-accrue.mjs); complimentary packages skip charges. When remaining RPM/RPD drops to ≤20%, owners/admins get a deduped daily notify.
Enforcement: The Partner API applies per-key budgets for requests per minute and per UTC day, taken from the merchant plan (+ active add-ons). Weekly auto_import_per_week / auto_export_per_week are metered on catalog import enqueue and CSV export routes. Shipment tracking poll interval is gated via /v1/internal/tracking/poll-gate. Custom raises beyond the catalog still go through Settings → limit raise (ops inbox) or your Enterprise contact.
Algorithm
- Fixed windows for the minute and UTC-day budgets (shared across API replicas when the platform runs multiple instances).
- Exceeding either budget →
429withRetry-After. - Burst / token-bucket refinements may be announced in the changelog; the table above remains the partner planning contract.
Response headers
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 242
X-RateLimit-Reset: 1735689660
X-RateLimit-Limit-Day: 100000
X-RateLimit-Remaining-Day: 99940
Retry-After: 12
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Per-minute budget |
X-RateLimit-Remaining | Remaining in the minute window |
X-RateLimit-Reset | Unix time when the minute window resets |
X-RateLimit-Limit-Day | Per-day budget (UTC) |
X-RateLimit-Remaining-Day | Remaining in the UTC day |
Retry-After | Seconds to wait (on 429) |
Client behaviour
on 429:
sleep(Retry-After or exponential backoff with jitter)
retry once-safe methods; for POST use Idempotency-Key
Do not spin tight retry loops. Prefer webhooks over polling.
Fair use
Even within limits, avoid:
- Full catalog pull every minute
- Parallel storms without concurrency caps
- Syncing unchanged data (use
updated_since/ cursors)
Enterprise: request dedicated API capacity via your Order Form or [email protected].