Errors & limits
The API uses conventional HTTP status codes and returns errors in OpenAI’s format.
Error format
Section titled “Error format”{ "error": { "message": "A human-readable description of what happened.", "type": "invalid_request_error", "code": "..." }}Status codes
Section titled “Status codes”| Status | Meaning | How to fix |
|---|---|---|
400 Bad Request | Invalid body (malformed JSON, missing parameter) | Check model and messages/input |
401 Unauthorized | Key missing, invalid, or revoked | Check the Authorization header — see Authentication |
403 Forbidden | Model not enabled on your plan | Use a model from your plan or upgrade |
404 Not Found | Endpoint or model does not exist | Check the URL and the model id |
429 Too Many Requests | Requests/min limit reached | Slow down, apply backoff, or upgrade your plan |
5xx | Temporary server error | Retry with exponential backoff |
Rate limits
Section titled “Rate limits”Each plan has a requests-per-minute limit (fair-use). When you exceed it, the API responds with 429.
| Plan | Requests/min |
|---|---|
| Free | 5 |
| Starter | 15 |
| Standard | 40 |
| Pro | 120 |