Errors & Rate Limits
Understanding error responses and rate limiting behavior
HTTP Status Codes
| Code | Meaning |
|---|---|
| 200 | Success — request completed normally |
| 400 | Bad Request — invalid parameters, missing model, or malformed JSON |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — plan expired, key disabled, or daily limit reached |
| 429 | Too Many Requests — rate limit exceeded, retry after a short delay |
| 500 | Server Error — something went wrong on our end, retry the request |
| 502 | Bad Gateway — upstream model provider is temporarily unavailable |
Error Response Format
{
"error": {
"message": "Daily request limit reached. Resets in 12h 34m.",
"type": "auth_error"
}
}Rate Limits
Daily Request Limit
Each plan has a daily request limit (e.g., Starter = 750/day). The counter resets 24 hours after your first request of the cycle. Once you hit the limit, requests return 403 until reset.
Monthly Request Limit
Your monthly limit is your daily limit × 30. Track your usage on the dashboard or via the /api/usage endpoint.
Retry Strategy
For 429 or 502 errors, implement exponential backoff: wait 1s, then 2s, then 4s between retries.
Plan Limits Reference
| Plan | Daily | Monthly | Price |
|---|---|---|---|
| Trial * | — | — | Free |
| Starter | 750 | 22,500 | $13/mo |
| Growth | 1,650 | 49,500 | $23/mo |
| Pro | 4,350 | 130,500 | $55/mo |
| Enterprise | 9,000 | 270,000 | $110/mo |
* Trial gives you 100 requests within a single 24-hour window — there is no daily or monthly cycle. Once the 24 hours expire or you use all 100 requests, the trial ends and you must upgrade to continue.