All requests to the Gradual Public API are rate-limited to ensure fair usage and platform stability. Rate limits are applied per tenant and vary based on the type of operation.

Operation Tiers

Each API request is classified into one of three tiers:

TierDescriptionExamples
LightSingle resource readsGET /users/:id, GET /events/:id
MediumList queries and write operationsGET /users, POST /registration, DELETE /users
HeavyBatch and bulk operationsPOST /users/batch, POST /clubs/:id/users/batch

Rate Limits

Each tier has two independent limits:

TierBurst RateSustained RateDaily Quota
Light100 requests10 req/sec300,000/day
Medium10 requests1 req/sec10,000/day
Heavy5 requests~10 req/min200/day
  • Burst rate: The maximum number of requests you can make in a short burst.
  • Sustained rate: How quickly your allowance replenishes over time.
  • Daily quota: The maximum total requests per day (resets at midnight UTC).

Response Headers

Every response includes headers so you can monitor your usage:

HeaderDescription
X-RateLimit-LimitSustained requests per second allowed
X-RateLimit-RemainingBurst tokens remaining
X-RateLimit-BurstMaximum burst capacity
X-RateLimit-ResetUnix timestamp when burst tokens fully replenish
X-RateLimit-Daily-LimitTotal requests allowed per day
X-RateLimit-Daily-RemainingRequests remaining today
X-RateLimit-Daily-ResetUnix timestamp of next daily reset (midnight UTC)

When You're Rate Limited

If you exceed either limit, the API returns a 429 (Too Many Requests) response with a Retry-After header indicating how many seconds to wait before retrying.