Rate limits
Two-tier, plan-aware. Per-key buckets protect you from a single misbehaving script; the workspace ceiling protects the cluster from a customer minting many keys.
The buckets
Every API request hits two buckets. A request is allowed only when both have headroom.
| Plan | Per-key /min | Workspace ceiling /min |
|---|---|---|
| Free / Team | — (no API access) | — |
| Pro | 600 | 1,800 |
| Business | 6,000 | 30,000 |
| Enterprise | 6,000 | 30,000 (custom on request) |
Headers
Every response (success or 429) carries the rate-limit triplet:
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 587
X-RateLimit-Reset: 1745842800Limit— max requests in the current 60-second windowRemaining— requests left in this window (≥ 0)Reset— unix-seconds when the window resets
When the binding bucket is the workspace ceiling, the headers reflect that bucket — not the per-key one — because that's what you need to back off on.
429 responses
When you exceed a bucket:
HTTP/1.1 429 Too Many Requests
Retry-After: 12
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1745842800
Content-Type: application/json
{ "error": "RATE_LIMIT_EXCEEDED", "bucket": "per-key" }Retry-After is in seconds, always ≥ 1. The bucket field is one of per-key or workspace so you know whether to slow down a single consumer or coordinate across all your keys.
Backoff strategy
We recommend a token-bucket client that:
- Reads
X-RateLimit-Remainingon every response. - Throttles new sends when
Remainingdrops below 10% ofLimit. - On
429, sleepsRetry-Afterseconds and retries with jitter. - Retries idempotent requests (GET, PUT, DELETE) up to 3 times. POST requests should NOT be auto-retried unless you supply an
Idempotency-Keyheader (coming in a future release).
Need higher limits?
Email hello@lazynext.com with your use case. Enterprise contracts can lift the ceiling.