Rate Limits

Per-plan request budgets, headers and 429 handling.

Per-plan limits

Authenticated requests are limited per minute per user, based on your plan:

Plan Requests / minute
Free 120
Pro / Premium 600
Team 900
Elite / Plus 1,200
Scale 1,800
Business Small 2,400
Business / Enterprise 6,000

Limits apply per user, not per token — creating multiple tokens does not multiply your budget.

Response headers

Every authenticated response carries:

Header Meaning
X-RateLimit-Limit Your per-minute budget
X-RateLimit-Remaining Requests left in the current window
X-RateLimit-Reset Unix timestamp when the window resets

When you exceed the limit the API returns 429 with Retry-After (seconds until the window resets) and a JSON body:

{
  "error": "Rate limit exceeded for your plan",
  "limit": 120,
  "retry_after": 42,
  "tier": "free"
}

Handling limits in code

  • Honor Retry-After — wait at least that many seconds before retrying
  • Watch X-RateLimit-Remaining and back off before you hit zero
  • Batch work into fewer requests where possible (list endpoints paginate)

Unauthenticated limits

Public endpoints are rate-limited per IP and path instead — these limits protect the platform and are independent of your plan budget:

Endpoint class Limit
All API routes (global middleware) 100 req/min per IP + path
Push endpoints — heartbeat, game-server push, API metrics, agent ingestion 60 req/min per agent token or IP + path
Status page subscribe 10 req/min per IP + path

Push endpoints keyed by X-Agent-Token count per token rather than per IP, so many agents behind one NAT do not share a budget.