Owner: Dev Team | Last Updated: 2026-02-21 | Status: Current
Complete reference of HTTP error codes and their handling.
| Status | Name | Description | Common Cause |
|---|---|---|---|
| 400 | Bad Request | Invalid request format | Malformed JSON |
| 401 | Unauthorized | Not authenticated | Missing/invalid token |
| 403 | Forbidden | Access denied | Insufficient permissions (role) |
| 404 | Not Found | Resource not found | Invalid ID or URL |
| 405 | Method Not Allowed | Method not supported | GET instead of POST |
| 409 | Conflict | Conflict | Data duplication |
| 419 | Session Expired | Session expired | Stale CSRF token |
| 422 | Unprocessable Entity | Validation error | Invalid form data |
| 429 | Too Many Requests | Rate limit exceeded | Too many requests |
| 500 | Internal Server Error | Internal error | Code/configuration error |
| 503 | Service Unavailable | Service unavailable | Maintenance mode |
{
"message": "The given data was invalid.",
"errors": {
"email": [
"The email field is required."
],
"name": [
"The name must be at least 2 characters."
]
}
}
{
"message": "Unauthenticated."
}
Causes:
Authorization header{
"message": "Forbidden."
}
Causes:
{
"message": "Too Many Attempts."
}
Headers:
Retry-After: 60
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
| Error | Description | Solution |
|---|---|---|
card_declined |
Card declined | Ask the customer to use a different card |
insufficient_funds |
Insufficient funds | Inform the customer |
expired_card |
Card expired | Request an up-to-date card |
processing_error |
Processing error | Retry the attempt |
| Date | Author | Change |
|---|---|---|
| 2026-02-21 | Documentation Team | Initial creation |
Prev: Webhooks | Up: API Reference