Pushrail Docs
Open app

Rate limits

Pushrail rate-limits requests per tenant. Limits scale with plan tier; consult your dashboard for the values applied to your tenant.

Response headers

Every response includes:

| Header | Description | |---|---| | X-RateLimit-Limit | Requests allowed in the current window. | | X-RateLimit-Remaining | Requests left in the window. | | X-RateLimit-Reset | Unix epoch seconds when the window resets. |

429 behavior

When a tenant exceeds its limit, the API returns 429 Too Many Requests with the standard error envelope:

{ "code": "rate_limited", "message": "Rate limit exceeded. Retry after 12s." }

A Retry-After header is included with the number of seconds to wait. Clients should respect it and use exponential backoff for repeated 429s.

Ingestion vs. control plane

Ingestion endpoints (POST /events, POST /events/batch) have a separate, much higher limit than control-plane endpoints (destinations, routing rules, schemas). High-volume vendors should batch with POST /events/batch rather than firing single-event requests.