IoneShop Developers

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

PlanRequests / minuteRequests / day (UTC)
Shop Start / Starter10020 000
Shop Growth / Business300100 000
Platform600250 000
Enterprise1 2001 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 → 429 with Retry-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
HeaderMeaning
X-RateLimit-LimitPer-minute budget
X-RateLimit-RemainingRemaining in the minute window
X-RateLimit-ResetUnix time when the minute window resets
X-RateLimit-Limit-DayPer-day budget (UTC)
X-RateLimit-Remaining-DayRemaining in the UTC day
Retry-AfterSeconds 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].