API_KEY_REQUIRED | 401 | Missing cx-api-key header |
INVALID_API_KEY | 401 | Key not found or revoked |
API_KEY_ORG_MISSING | 401 | Key has no organization binding |
FORBIDDEN_SCOPE | 403 | Key lacks required scope for the route |
VIEW_NOT_FOUND | 404 | Unknown view_id, cross-org view, or view not visible to linked agent |
TICKET_NOT_FOUND | 404 | Ticket number does not exist in the organization |
ATTACHMENT_NOT_FOUND | 404 | Unknown attachment ID, or it belongs to another organization |
INVALID_FILTER | 400 | Invalid filter or view configuration |
VALIDATION_ERROR | 400 | Malformed query params or unknown fields |
IDEMPOTENCY_KEY_CONFLICT | 400 | Same Idempotency-Key reused with a different request body |
IDEMPOTENCY_KEY_IN_PROGRESS | 409 | The first request for this Idempotency-Key is still processing — retry shortly |
RATE_LIMIT_EXCEEDED | 429 | Per-route rate limit hit |
| (none) | 500 | Unexpected server error — retry with backoff |