# Error Codes

> Error responses for the Edesy number masking API — HTTP status codes plus an application code for programmatic handling.

Source: https://edesy.in/docs/number-masking/api-reference/errors

Error responses use standard HTTP status codes plus an application `code` in the response body for programmatic handling. All error responses follow this shape:

```json
{
  "error": {
    "code": "insufficient_balance",
    "message": "Insufficient balance. Please add funds to continue making calls."
  }
}
```

## Codes

| HTTP | Code | Meaning | What to do |
|------|------|---------|------------|
| `401` | `unauthorized` | Missing or invalid API key. | Verify the `Authorization` header. Re-create the key if needed. |
| `400` | `invalid_request` | Request body could not be parsed. | Check JSON syntax and the `Content-Type` header. |
| `400` | `validation_error` | A required field is missing or malformed. | Read the error message; fix the offending field. |
| `400` | `invalid_numbers` | Party A and Party B are the same number, or not valid 10-digit Indian mobiles. | Use two different, valid 10-digit Indian mobile numbers. |
| `402` | `insufficient_balance` | Wallet balance too low to start the call. | Top up your wallet, then retry. |
| `404` | `not_found` | The `call_sid` does not exist for your tenant, or the recording is not yet available. | Double-check the `call_sid`; calls older than retention may be purged. |
| `429` | `rate_limited` | API rate limit exceeded. Default limit is 100 requests/minute per API key. | Back off and retry; spread requests over time. |
| `500` | `internal_error` | Server-side error. | Retry after a few seconds. If persistent, contact support. |

Stuck? Email [suvojit@edesy.in](mailto:suvojit@edesy.in) or message us on [WhatsApp](https://wa.me/919547531359).
