Error Codes
All errors follow a consistent JSON structure with human- and machine-readable fields.
Error Format
json
{
"error": "Contact not found",
"code": "CONTACT_NOT_FOUND",
"details": {
"id": "cldxyz123"
}
}
HTTP Status Codes
| Status | Label | Description |
|---|---|---|
| 200 | OK | Success |
| 201 | Created | Resource created |
| 400 | Bad Request | Validation error (check details) |
| 401 | Unauthorized | Invalid or missing API key |
| 404 | Not Found | Resource doesn't exist |
| 409 | Conflict | Duplicate (idempotency key reused) |
| 422 | Unprocessable | Valid JSON but semantic error |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Error | Our fault, retry with backoff |
Error Codes
| Code | HTTP | Description |
|---|---|---|
| INVALID_API_KEY | 401 | The API key is invalid, revoked, or missing. |
| RATE_LIMIT_EXCEEDED | 429 | You've exceeded your plan's rate limit. Wait and retry. |
| CONTACT_NOT_FOUND | 404 | No contact exists with the given ID. |
| BOOKING_NOT_FOUND | 404 | No booking exists with the given ID. |
| INVOICE_NOT_FOUND | 404 | No invoice exists with the given ID. |
| DEAL_NOT_FOUND | 404 | No deal exists with the given ID. |
| INSUFFICIENT_CREDITS | 422 | Not enough credits to complete this action. |
| VALIDATION_ERROR | 400 | One or more fields failed validation. Check details. |
| DUPLICATE_CONTACT | 409 | A contact with this email or phone already exists. |