# Error Codes

## Error Response Format

All errors return a consistent JSON format:

```json
{
  "error": {
    "message": "Error description",
    "type": "error_type"
  }
}
```

## Status Codes

| HTTP Status | Meaning | Recommended Action |
| --- | --- | --- |
| `400` | Bad Request | Check required fields like `model`, `messages` |
| `401` | Unauthorized | Verify API Key is correct and not revoked |
| `402` | Insufficient Balance | Top up your account |
| `429` | Rate Limited | Reduce request frequency; current limit is 60 RPM |
| `502` | Upstream Error | Provider temporarily unavailable; retry later |
| `503` | Service Unavailable | System maintenance; retry later |

## Retry Guidelines

- `429` -- Use exponential backoff, max interval 60 seconds
- `502` / `503` -- Wait 5-10 seconds before retrying, max 3 retries
- `400` / `401` / `402` -- Do not retry; fix request params or account status
