Errors & Rate Limits
Twenty2 uses standard HTTP status codes and returns consistent error objects so you can handle failures predictably in your integration.
Error response format
All errors follow this structure:
{
"success": false,
"statusCode": 422,
"message": "Validation errors",
"validationErrors": {
"caller_phone": ["Required"]
}
}
| Field | Type | Description |
|---|---|---|
success | boolean | Always false for errors. |
statusCode | number | HTTP status code. |
message | string | Human-readable description of what went wrong. |
validationErrors | object | Present on 422 responses only. Lists each field that failed validation along with the reason. |
HTTP status codes
| Status | Meaning |
|---|---|
2XX | Success. |
400 | Bad Request — missing or invalid parameters. |
401 | Unauthorized — API key is missing or invalid. |
403 | Forbidden — your API key does not have access to this resource. |
404 | Not Found — the requested resource does not exist. |
422 | Unprocessable Entity — the request is well-formed but contains invalid values. Check the validationErrors field for details. |
429 | Too Many Requests — rate limit exceeded. Wait and retry. |
500 | Internal Server Error — something went wrong on Twenty2's end. |
Rate limits
| Limit | Value |
|---|---|
| Requests per minute | 60 |
| Concurrent calls | 3 |
If you exceed the rate limit you will receive a 429 response. Wait a moment and retry. For higher limits, contact the Twenty2 team.
Was this page helpful?