Getting Started
Rate Limiting
To keep the API healthy for everyone, requests are limited per API key.
When you exceed the limit, the API responds with 429 Too Many Requests.
Limits
Throttling is handled by Laravel's throttle middleware. The exact per-route limits are configured in backend/routes/api.php — consult the file for the current values. As a guideline, the application targets:
| Plan | Requests / minute | Burst |
|---|---|---|
| Local / development | Unlimited | — |
| Standard | 60 | 10 |
| High-volume partner | 600 | 50 |
Response headers
Every API response includes the standard Laravel throttle headers so you can track your usage:
RESPONSE HEADERS
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
Retry-After: 32
| Header | Description |
|---|---|
X-RateLimit-Limit | Your maximum requests per minute. |
X-RateLimit-Remaining | How many requests remain in the current window. |
Retry-After | Seconds until the next request will be accepted (only set on 429 responses). |
When you hit the limit — 429
429 Too Many Requests
{
"message": "Too many requests. Try again in 60 seconds.",
"retry_after": 60
}
Best practices
- Cache responses where possible (especially list endpoints).
- Implement exponential backoff with jitter for retries.
- Use webhooks instead of polling.
- Batch requests when supported (see the sync endpoint).