Productsup
Platform API

Rate limiting

Platform API rate limits by endpoint and how to handle rate limit responses with retry and backoff.

2 min read

The Platform API enforces rate limits at the account and route level. Different endpoints have different limits.

EndpointDescriptionRate limit
/platform/v2/process/{siteIdentifier}Process endpoint1 request per site per 5 minutes
/product/v2/site/{siteIdentifier}/stage/{stageName}/{stageId}Product data read endpoint60 requests per minute
/*All other endpoints (limit applies per endpoint individually)5 requests per second

Implement a retry and exponential backoff mechanism to handle rate limit responses correctly. See retry and backoff.

Rate limit HTTP headers

Every response from the Platform API includes rate limit headers:

HTTP/2 200
X-RateLimit-Limit: 5
X-Ratelimit-Remaining: 1
X-Ratelimit-Retry-After: 1651174223
NameDescription
X-RateLimit-LimitMaximum number of requests allowed per second
X-Ratelimit-RemainingRequests remaining in the current rate-limiting window
X-Ratelimit-Retry-AfterUnix timestamp when the current rate-limiting window resets

When you exceed the rate limit, the API returns a 429 response:

HTTP/2 429
X-RateLimit-Limit: 5
X-Ratelimit-Remaining: 1
X-Ratelimit-Retry-After: 1651174223

{"success":false,"message":"Too many attempts."}

Retry and backoff

Implement retries for the following response status codes:

  • 5xx Server errors
  • 249 Custom error
  • 408 Request timeout
  • 429 Too many requests — use the response headers to determine when to retry

Implementation guidelines

Exponential backoff reduces load on the platform during error periods, increases the likelihood of successful retries, and outperforms fixed-delay mechanisms during error surges.

For a PHP reference implementation, see the exponentialDelay() method in the Guzzle RetryMiddleware class.

On this page

Still stuck?

Reach out to our support team and we’ll help you get unstuck.

Contact support