unauthorized | 401 | Missing, bad, or revoked key |
api_globally_disabled | 503 | Kill switch |
rate_limited | 429 | Per-key limit |
campaign_not_accepting | 422 | Draft / testing |
campaign_closed | 422 | Completed / expired / archived |
campaign_paused_queued | 201 | Accepted; dials after resume |
insufficient_credits | 402 / 503 | No credits (402 on POST /numbers/purchase; 503 on outbound dial) |
pool_purchase_unavailable | 422 | Tenant cannot buy pool inventory |
numbers_unavailable | 409 | Number id invalid or already purchased |
batch_limit_exceeded | 400 | Too many numbers in one purchase request |
invalid_phone / email_required / invalid_channel | 422 | Channel field validation |
contact_identity_required | 422 | channel: none needs phone or email |
dnc_blocked / consent_missing | 422 | Call channel only |
whatsapp_unsubscribed | 422 | STOP list |
duplicate_no_requeue | 201 | Same phone already pending |
invalid_json | 400 | Request body is not valid JSON |
bulk_invalid_body | 400 | Bulk: leads missing, empty or not an array |
bulk_limit_exceeded | 413 | Bulk: too many leads (default 100) or body too large |
bulk_invalid_lead / bulk_lead_too_large | per-lead | Bulk: that lead is malformed or its metadata is too big. Appears in results[] of a 207 (or 422 bulk_all_rejected when no lead was accepted) |
duplicate_in_request | per-lead | Bulk: same phone/email appears earlier in the same request (in results[] of a 207, or 422 bulk_all_rejected) |
bulk_all_rejected | 422 | Bulk: no lead was accepted |
bulk_atomic_rejected | 422 | Bulk with atomic: true: at least one lead invalid, nothing created |
bulk_in_progress | 409 | Bulk: another bulk request for this campaign is still running; retry shortly |
requeue_required | 422 | Finished contact needs requeue: true |
followup_already_pending | 409 | Use force: true |
contact_busy | 422 | Call in progress |
event_unmapped | 422 | No event route |
not_found | 404 | Unknown or not owned |
phone_not_owned | 422 | Inbound number not yours |
phone_already_configured | 422 | Inbound agent already exists for this number |
script_not_ready | 422 | Inbound script generating/error |
appointment_scope_required | 422 | HMS slots/booking on without appointmentScope |
global_scope_locks_forbidden | 422 | Global HMS scope cannot include branchId / doctorId |
branch_id_required | 422 | Hospital HMS scope needs branchId |
hospital_scope_doctor_forbidden | 422 | Hospital HMS scope cannot lock a doctorId |
doctor_scope_ids_required | 422 | Doctor HMS scope needs branchId and doctorId |
sync_not_allowed | 422 | sync-doctors is for hospital/doctor scopes only |
email_profile_missing | 422 | No verified Omni mailbox; add one or pass emailProfileId |
email_template_missing | 422 | No email template; attach in Omni or pass emailTemplateId |
email_profile_not_found / email_template_not_found | 422 | Body id does not match your Omni mailbox/template |
whatsapp_template_missing | 422 | No WhatsApp profile/template; attach in Omni or pass whatsappTemplateId |
whatsapp_profile_not_found / whatsapp_template_not_found | 422 | Body id does not match your Omni WhatsApp profile/template |
invalid_scheduled_at | 422 | Bad scheduledAt / emailScheduledAt / whatsappScheduledAt |