# Error Codes

> Voice OTP API error responses and how to handle them.

Source: https://edesy.in/docs/voice-otp/api-reference/errors

Errors look like this:

```json
{ "error": { "code": "rate_limit_exceeded", "message": "..." } }
```

| HTTP | Code | What to do |
|---|---|---|
| 400 | `invalid_request` | The body is not valid JSON |
| 400 | `validation_error` | A field is missing or invalid (see message) |
| 400 | `invalid_phone` | Not a 10-digit Indian mobile number |
| 401 | - | Missing or invalid API key |
| 402 | `insufficient_balance` | Top up the wallet |
| 404 | `not_found` | Unknown call id |
| 429 | `rate_limit_exceeded` | Too many calls to this number in the last hour |
| 500 | `internal_error` | Retry after a short wait; contact us if it persists |
