campaign_idstring nullable
channel'sms' | 'whatsapp' | 'telegram' | 'voice' | 'rcs'
unicodeinteger
1 when the body required the UCS-2 alphabet (Arabic etc.), 0 for GSM-7
status'queued' | 'sent' | 'delivered' | 'failed' | 'undeliverable' | 'unconfirmed'
unconfirmed = the network accepted the message but never reported a final outcome within the reporting window; a delivery receipt arriving later still replaces it.
error_codestring nullable
Set on failed/undeliverable messages. A short diagnostic key: DLR_<network status> when the failure came from a delivery report (e.g. DLR_REJECTD, DLR_EXPIRED, DLR_UNDELIV), GATEWAY_* for a failure on the EnvoiSMS routing side before the network was reached, ENVOISMS_* for other routing diagnostics, META_* for a WhatsApp refusal (see "WhatsApp failure codes" in the API description). Treat unknown values as a generic terminal failure — new keys may appear.
error_messagestring nullable
Human-readable failure reason in English, set together with error_code. When the network gave no reason, this reads "The destination network did not deliver this message and gave no reason." Display text — do not parse it programmatically; branch on status and error_code instead.
scheduled_atstring date-time nullable
sent_atstring date-time nullable
delivered_atstring date-time nullable
read_atstring date-time nullable
Timestamp when the recipient opened and read the message (WhatsApp blue checkmark)
failed_atstring date-time nullable
operatorstring nullable
Resolved destination network for Moroccan numbers (Maroc Telecom, Orange, Inwi, Autre); best-effort elsewhere.
sandboxinteger
1 when the message was created by an env_test_ sandbox key
created_atstring date-time