Messages
API reference descriptions are provided in English to preserve the exact published contract.
- GETList messages
messages.list - POSTCreate a message
messages.create - POSTCreate up to 1,000 messages with independent per-item admission
messages.batch - GETFetch message batch counts
messages.batches.retrieve - POSTCancel up to 100 messages
messages.bulkCancel - POSTIrreversibly redact up to 100 messages through a deletion request
messages.bulkRedact - POSTPreflight a message without creating it
messages.preflight - GETLook up an original message submission without resending it
messages.submissions.retrieve - GETFetch a message
messages.retrieve - DELETERedact and schedule removal of a message
messages.delete - POSTCancel a message before provider submission
messages.cancel - POSTMark an inbound WhatsApp message read
messages.read - POSTIrreversibly redact message content
messages.redact - POSTSend a WhatsApp typing indicator and mark the inbound message read
messages.typing
List messages
GET/v1/accounts/{AC}/messages
messages.listSDK operation getV1AccountsByAcMessages
List messages, newest first. Filter by status, sender, recipient or time range; follow nextCursor to page.
Parameters
limitinteger (1–100)querycursorstring (max 2048 chars)querystatusstring (max 32 chars)queryfromstring (WA… SID)querytostring (max 128 chars)querycontactSidstring (CT… SID)querycampaignSidstring (CP… SID)querybatchSidstring (MB… SID)querydirectionenumqueryoutboundinboundcreatedAfterstring (date-time)querycreatedBeforestring (date-time)querytagstring (max 40 chars)querytemplateSidstring (TM… SID)querytemplateNamestring (max 512 chars)queryproviderMessageIdstring (max 256 chars)querysidsstring (max 3299 chars)querysortenumquerycreatedAt-createdAt
Create a message
POST/v1/accounts/{AC}/messages
messages.createSDK operation postV1AccountsByAcMessages
Send one WhatsApp message. The request is accepted (202) once it is stored and admitted; delivery progress arrives as message.* webhook events and on the message itself. Send an Idempotency-Key header so a retry never sends twice. Outside the 24-hour customer service window only an approved template can be sent. A real Sandbox inbox reply requires conversationSid, its current composer claim, an admitted registered sender and currently verified recipient, an open service window and sponsored limits. That path supports immediate text only, without a customer-wallet charge; standalone real-test sends use the Real Test API.
Inbox and dashboard sessions
Alternatively, a normal tenant USER session may use messages:send on the exact inbox resolved from this resource. Actual inbox membership, tenant/subaccount visibility and per-operation checks still apply. This does not grant account-wide scopes, API-key permission, staff-delegation authority or platform access.
This reply alternative requires conversationSid and a valid composerClaimToken. from must be omitted or the exact conversation sender SID; sender pools and composer overrides require account-level authorization.
Request body
addressobjectShow 6 child attributes
bodystring (max 1024 chars)RequiredcountryenumRequiredINSGsavedAddressesobject[]subtype"address"validationErrorsobjectvaluesobject
carouselobjectShow 3 child attributes
bodystring (max 1024 chars)Requiredcardsobject[]Requiredsubtype"carousel"
catalogobjectShow 4 child attributes
bodystring (max 1024 chars)RequiredcatalogIdstring (max 128 chars)Requiredfooterstring (max 60 chars)thumbnailProductRetailerIdstring (max 256 chars)
categoryenumDerived from the template when absent; must match it when present
authenticationutilitymarketingservicecomposerClaimTokenstring (uuid)composerOverrideReasonstring (max 1000 chars)contactSidstring (CT… SID)Contact SID; addresses an existing contact directly
contactsobjectShow 1 child attributes
contactsobject[]Required
contentSidstring (HX… SID)Reusable content SID; alternative to type/template
contextobjectShow 2 child attributes
providerMessageIdstring (max 256 chars)replyToMessageIdstring (SM… SID)Message SID
conversationSidstring (CO… SID)Conversation SID for an agent inbox reply
defaultCountrystring (pattern ^[A-Za-z]{2}$)ISO 3166-1 alpha-2 country used to read a national phone number (NG reads 08031234567 as +2348031234567). Without it the number must start with + or 00.
deferIfCappedbooleanDefer marketing sends until a recipient cap clears
flowobjectShow 6 child attributes
bodystring (max 1024 chars)RequiredctaTextstring (max 20 chars)RequiredflowSidstring (FL… SID)RequiredPublished Flow SID
actionenumnavigatedata_exchangedataobjectscreenstring (max 128 chars)
fromstring (WA… SID)Sender SID
interactiveobjectlocationobjectShow 4 child attributes
latitudenumber (-90–90)Requiredlongitudenumber (-180–180)Requiredaddressstring (max 1000 chars)namestring (max 1000 chars)
mediaobjectShow 4 child attributes
sidstring (ME… SID)RequiredMedia SID; must be READY
captionstring (max 1024 chars)filenamestring (max 255 chars)voiceboolean
metadataobjectpriorityenumP0P1P2P3productobjectShow 4 child attributes
catalogIdstring (max 128 chars)RequiredproductRetailerIdstring (max 256 chars)Requiredbodystring (max 1024 chars)footerstring (max 60 chars)
productListobjectShow 6 child attributes
catalogIdstring (max 128 chars)Requiredheaderstring (max 60 chars)Requiredsectionsobject[]Requiredbodystring (max 1024 chars)footerstring (max 60 chars)subtype"product_list"
reactionobjectShow 2 child attributes
emojistring (max 16 chars)RequiredtargetMessageIdstring (max 256 chars)Required
recipientobjectShow 2 child attributes
identifierTypeenumRequiredphone_e164bsuidusernamevaluestring (max 64 chars)Required
sendAtstring (date-time)RFC 3339; ≤ 35 days ahead
senderPoolSidstring (SP… SID)Sender pool SID
statusCallbackSidstring (WH… SID)Verified webhook endpoint SID; alternative to statusCallbackUrl
statusCallbackUrlstring (uri, max 2048 chars)tagsstring (max 40 chars)[]templateobjectShow 3 child attributes
languagestring (max 16 chars)Requirednamestring (max 512 chars)Requiredcomponentsobject[]
textobjectShow 2 child attributes
bodystring (max 4096 chars)RequiredpreviewUrlboolean
tostring (max 32 chars)E.164 recipient (whatsapp: prefix accepted and stripped)
transportenumcloud_apimarketing_messagestransportOptionsobjectShow 1 child attributes
ttlSecondsinteger (43200–2592000)
typeenumtexttemplateimagevideoaudiodocumentstickerlocationcontactsreactioninteractiveproductcatalogflowproduct_listaddresscarouselvalidityPeriodSecondsinteger (30–2592000)variablesobject
Create up to 1,000 messages with independent per-item admission
POST/v1/accounts/{AC}/messages/batch
messages.batchSDK operation postV1AccountsByAcMessagesBatch
Send up to 1,000 messages in one request. Each item is admitted or refused on its own; the response reports each item's outcome and a batch SID to follow progress.
Request body
messagesobject[]Required
Fetch message batch counts
GET/v1/accounts/{AC}/messages/batches/{MB}
messages.batches.retrieveSDK operation getV1AccountsByAcMessagesBatchesByMb
Fetch how many items of a batch were accepted, refused, sent and delivered.
Parameters
MBstring (MB… SID)Required
Cancel up to 100 messages
POST/v1/accounts/{AC}/messages/bulk-cancel
messages.bulkCancelSDK operation postV1AccountsByAcMessagesBulkCancel
Request body
messageSidsstring (SM… SID)[]Requiredreasonstring (max 1000 chars)RequiredstepUpTokenstring (max 256 chars)
Irreversibly redact up to 100 messages through a deletion request
POST/v1/accounts/{AC}/messages/bulk-redact
messages.bulkRedactSDK operation postV1AccountsByAcMessagesBulkRedact
Request body
messageSidsstring (SM… SID)[]Requiredreasonstring (max 1000 chars)RequiredstepUpTokenstring (max 256 chars)
Preflight a message without creating it
POST/v1/accounts/{AC}/messages/preflight
messages.preflightSDK operation postV1AccountsByAcMessagesPreflight
Check whether a message would be accepted, and what it would cost, without creating it. Takes the same body as sending. Real Sandbox inbox text replies check the verified recipient, composer claim, service window, consent and sponsored limits; no real message or sponsored reservation is committed by preflight.
Inbox and dashboard sessions
Alternatively, a normal tenant USER session may use messages:send on the exact inbox resolved from this resource. Actual inbox membership, tenant/subaccount visibility and per-operation checks still apply. This does not grant account-wide scopes, API-key permission, staff-delegation authority or platform access.
This reply alternative requires conversationSid and a valid composerClaimToken. from must be omitted or the exact conversation sender SID; sender pools and composer overrides require account-level authorization.
Request body
addressobjectShow 6 child attributes
bodystring (max 1024 chars)RequiredcountryenumRequiredINSGsavedAddressesobject[]subtype"address"validationErrorsobjectvaluesobject
carouselobjectShow 3 child attributes
bodystring (max 1024 chars)Requiredcardsobject[]Requiredsubtype"carousel"
catalogobjectShow 4 child attributes
bodystring (max 1024 chars)RequiredcatalogIdstring (max 128 chars)Requiredfooterstring (max 60 chars)thumbnailProductRetailerIdstring (max 256 chars)
categoryenumDerived from the template when absent; must match it when present
authenticationutilitymarketingservicecomposerClaimTokenstring (uuid)composerOverrideReasonstring (max 1000 chars)contactSidstring (CT… SID)Contact SID; addresses an existing contact directly
contactsobjectShow 1 child attributes
contactsobject[]Required
contentSidstring (HX… SID)Reusable content SID; alternative to type/template
contextobjectShow 2 child attributes
providerMessageIdstring (max 256 chars)replyToMessageIdstring (SM… SID)Message SID
conversationSidstring (CO… SID)Conversation SID for an agent inbox reply
defaultCountrystring (pattern ^[A-Za-z]{2}$)ISO 3166-1 alpha-2 country used to read a national phone number (NG reads 08031234567 as +2348031234567). Without it the number must start with + or 00.
deferIfCappedbooleanDefer marketing sends until a recipient cap clears
flowobjectShow 6 child attributes
bodystring (max 1024 chars)RequiredctaTextstring (max 20 chars)RequiredflowSidstring (FL… SID)RequiredPublished Flow SID
actionenumnavigatedata_exchangedataobjectscreenstring (max 128 chars)
fromstring (WA… SID)Sender SID
interactiveobjectlocationobjectShow 4 child attributes
latitudenumber (-90–90)Requiredlongitudenumber (-180–180)Requiredaddressstring (max 1000 chars)namestring (max 1000 chars)
mediaobjectShow 4 child attributes
sidstring (ME… SID)RequiredMedia SID; must be READY
captionstring (max 1024 chars)filenamestring (max 255 chars)voiceboolean
metadataobjectpriorityenumP0P1P2P3productobjectShow 4 child attributes
catalogIdstring (max 128 chars)RequiredproductRetailerIdstring (max 256 chars)Requiredbodystring (max 1024 chars)footerstring (max 60 chars)
productListobjectShow 6 child attributes
catalogIdstring (max 128 chars)Requiredheaderstring (max 60 chars)Requiredsectionsobject[]Requiredbodystring (max 1024 chars)footerstring (max 60 chars)subtype"product_list"
reactionobjectShow 2 child attributes
emojistring (max 16 chars)RequiredtargetMessageIdstring (max 256 chars)Required
recipientobjectShow 2 child attributes
identifierTypeenumRequiredphone_e164bsuidusernamevaluestring (max 64 chars)Required
sendAtstring (date-time)RFC 3339; ≤ 35 days ahead
senderPoolSidstring (SP… SID)Sender pool SID
statusCallbackSidstring (WH… SID)Verified webhook endpoint SID; alternative to statusCallbackUrl
statusCallbackUrlstring (uri, max 2048 chars)tagsstring (max 40 chars)[]templateobjectShow 3 child attributes
languagestring (max 16 chars)Requirednamestring (max 512 chars)Requiredcomponentsobject[]
textobjectShow 2 child attributes
bodystring (max 4096 chars)RequiredpreviewUrlboolean
tostring (max 32 chars)E.164 recipient (whatsapp: prefix accepted and stripped)
transportenumcloud_apimarketing_messagestransportOptionsobjectShow 1 child attributes
ttlSecondsinteger (43200–2592000)
typeenumtexttemplateimagevideoaudiodocumentstickerlocationcontactsreactioninteractiveproductcatalogflowproduct_listaddresscarouselvalidityPeriodSecondsinteger (30–2592000)variablesobject
Look up an original message submission without resending it
GET/v1/accounts/{AC}/messages/submissions/{submissionKey}
messages.submissions.retrieveSDK operation getV1AccountsByAcMessagesSubmissionsBySubmissionkey
Read-only reconciliation. Unknown includes missing, expired and unfinished records and never proves that a message was not accepted.
Parameters
submissionKeystring (pattern ^[0-9a-fA-F-]{36}$)Required
Fetch a message
GET/v1/accounts/{AC}/messages/{SM}
messages.retrieveSDK operation getV1AccountsByAcMessagesBySm
Fetch one message with its current status, the provider's delivery timeline and, once settled, its charge.
Parameters
SMstring (SM… SID)RequiredMessage SID
Redact and schedule removal of a message
DELETE/v1/accounts/{AC}/messages/{SM}
messages.deleteSDK operation deleteV1AccountsByAcMessagesBySm
Parameters
SMstring (SM… SID)RequiredMessage SID
Cancel a message before provider submission
POST/v1/accounts/{AC}/messages/{SM}/cancel
messages.cancelSDK operation postV1AccountsByAcMessagesBySmCancel
Cancel a message that has not yet been handed to WhatsApp. A message already submitted cannot be recalled.
Parameters
SMstring (SM… SID)RequiredMessage SID
Mark an inbound WhatsApp message read
POST/v1/accounts/{AC}/messages/{SM}/read
messages.readSDK operation postV1AccountsByAcMessagesBySmRead
Mark an inbound message as read, which shows the blue ticks to the sender.
Parameters
SMstring (SM… SID)RequiredMessage SID
Irreversibly redact message content
POST/v1/accounts/{AC}/messages/{SM}/redact
messages.redactSDK operation postV1AccountsByAcMessagesBySmRedact
: requires a reason, recorded on the audit entry, and a fresh step-up grant for MESSAGE_REDACT, consumed in the same transaction as the redaction.
Parameters
SMstring (SM… SID)RequiredMessage SID
Request body
reasonstring (max 1000 chars)RequiredstepUpTokenstring (max 256 chars)Required
Send a WhatsApp typing indicator and mark the inbound message read
POST/v1/accounts/{AC}/messages/{SM}/typing
messages.typingSDK operation postV1AccountsByAcMessagesBySmTyping
Parameters
SMstring (SM… SID)RequiredMessage SID