Each API key is rate-limited per minute. Production keys have a higher ceiling
than sandbox keys; an explicit per-key limit set in the dashboard overrides the
default.
| Environment | Default limit |
|---|
Production (tg_live_) | 1,000 requests / minute |
Sandbox (tg_test_) | 100 requests / minute |
Every response includes your current standing in the window:
| Header | Meaning |
|---|
X-RateLimit-Limit | Max requests allowed in the window |
X-RateLimit-Remaining | Requests left in the current window |
Retry-After | Seconds to wait (only on 429) |
When you exceed it
You’ll receive 429 Too Many Requests:
{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "API key rate limit exceeded",
"details": { "limit": 1000, "window": "1 minute", "retry_after_seconds": 60 }
}
}
Back off and retry after Retry-After seconds, ideally with exponential backoff
and jitter. Spread bulk work out rather than bursting.