Document API rate limits and throttling policies
Create rate limiting documentation for:
**API Name:** {{API_NAME}}
**Rate Limiting Strategy:** {{STRATEGY}}
**Rate Limits:**
{{RATE_LIMITS}}
Generate comprehensive rate limiting documentation:
# {{API_NAME}} Rate Limiting
## Overview
- Why we rate limit
- How rate limiting works
- Impact on clients
## Rate Limits
### Default Limits
| Tier | Requests/Second | Requests/Minute | Requests/Day |
|------|-----------------|-----------------|--------------|
| Free | 1 | 60 | 1,000 |
| Basic | 10 | 600 | 10,000 |
| Pro | 100 | 6,000 | 100,000 |
| Enterprise | Custom | Custom | Custom |
### Endpoint-Specific Limits
| Endpoint | Limit | Window | Notes |
|----------|-------|--------|-------|
| POST /resource | 10/min | Per user | Write operations |
| GET /resource | 100/min | Per user | Read operations |
## Rate Limit Headers
Every response includes these headers:
| Header | Description | Example |
|--------|-------------|---------|
| X-RateLimit-Limit | Max requests allowed | 100 |
| X-RateLimit-Remaining | Requests remaining | 95 |
| X-RateLimit-Reset | Unix timestamp when limit resets | 1640995200 |
| Retry-After | Seconds to wait (only on 429) | 30 |
## Rate Limit Response
When rate limited, you'll receive:
```
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 30
{
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds.",
"retry_after": 30
}
}
```
## Best Practices
### Handling Rate Limits
```javascript
async function apiCallWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After') || 60;
await sleep(retryAfter * 1000);
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}
```
### Optimizing API Usage
- Use batch endpoints
- Implement caching
- Use webhooks instead of polling
## Increasing Limits
How to request higher limits
## Monitoring Your Usage
- Dashboard location
- Usage alerts
## FAQOr press ⌘C to copy
Replace these placeholders with your own content before using the prompt.
[{API_NAME][{STRATEGY][{RATE_LIMITS]{
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds.",
"retry_after": 30
}{
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After') || 60;
await sleep(retryAfter * 1000);
continue;
}