Skip to main content

Message Delivery Status

Check the delivery status of one or more sent messages.

📄️Get batch message delivery status

Returns the delivery status of multiple messages in a single call, which is significantly more efficient than calling the single-status endpoint in a loop. All IDs supplied in a single request must belong to the same channel (SMS, RCS, or WHATSAPP). If you need to check messages across different channels, make one batch request per channel. Supply the customerMessageId values as a comma-separated string in the ids query parameter (for example: ids=msg-001,msg-002,msg-003). Do not include spaces between IDs. While there is no strict hard limit on the number of IDs, it is recommended to keep each batch under a few hundred IDs to avoid excessively long query strings and potential HTTP 414 URI Too Long errors from intermediary proxies or load balancers. For very large lookups, split the IDs into multiple requests. The response is an unordered list of DeliveryStatusResponse objects. Important: IDs that do not match any known message for the authenticated company and specified channel are silently omitted from the results. This means the response array may contain fewer entries than the number of IDs you supplied. If none of the IDs match, you will receive an empty array (HTTP 200 with an empty JSON list), not a 404. To detect missing messages, compare the returned customerMessageId values against your original list. Each entry in the response contains the same fields as the single-status endpoint, including deliveryStatus (ACCEPTED, REJECTED, DELIVERED, EXPIRED, DELETED, UNDELIVERABLE, ERROR, DISABLED, UNSUPPORTED, CONVERSATION_CLOSED, UNKNOWN — see the Delivery Statuses table in the API overview) and deliveryStatusDescription for human-readable details. Error responses: 400 is returned when channel or ids is missing, or channel is not one of RCS, WHATSAPP, SMS. 500 indicates an unexpected server-side error; retry the request after a short delay. For single-message lookups, use GET /partner-gateway/v1/messages/status/{customerMessageId} instead. For a full historical view with pagination and date filtering, see GET /partner-gateway/v1/messages/history.

📄️Get single message delivery status

Returns the current delivery status of a single message identified by its customerMessageId. The customerMessageId is the unique identifier that the platform assigns to your message when you send it through one of the send endpoints (POST /partner-gateway/v1/sms/messages, POST /partner-gateway/v1/rcs/messages, or POST /partner-gateway/v1/whatsapp/messages). You should store this identifier on your side immediately after a successful send call so that you can track the message lifecycle later. Typical workflow: (1) Send a message via the appropriate channel endpoint and receive the customerMessageId in the response. (2) Wait a reasonable amount of time for carrier processing (a few seconds for SMS, potentially longer for RCS and WhatsApp). (3) Call this endpoint with the customerMessageId and the matching channel to retrieve the current status. The channel query parameter is mandatory and must exactly match the channel used to send the message. Supplying a mismatched channel (for example, querying an SMS message with channel=RCS) will result in a 404 because the lookup is scoped to the specified channel. Possible delivery statuses and their meanings: ACCEPTED (SMS) - the message has been accepted by the platform and forwarded to the carrier, but no delivery receipt has come back yet. This is the status an SMS carries while it is in flight. DELIVERED - the carrier or channel provider confirmed that the message reached the recipient device. REJECTED (SMS) - the carrier refused the message. UNDELIVERABLE (SMS) - the destination cannot receive the message, typically an unreachable or invalid number. DELETED (SMS) - the message was cancelled before it could be delivered. EXPIRED - the message was not delivered within the allowed time-to-live window and the carrier discarded it. ERROR (RCS, WhatsApp) - the message could not be delivered; check the deliveryStatusDescription field for the specific reason (common causes include invalid destination number, carrier rejection, or account suspension). DISABLED (RCS, WhatsApp) - the recipient has the channel switched off. UNSUPPORTED (RCS, WhatsApp) - the recipient's device or number does not support the channel. CONVERSATION_CLOSED (WhatsApp) - the 24-hour customer-service window had closed. UNKNOWN - the platform has no status information for this message, which on RCS and WhatsApp also covers a message still awaiting its first receipt, since those channels have no in-flight code of their own. The Delivery Statuses table in the API overview lists the numeric code the delivery webhook sends for each of these statuses. Error responses: 400 is returned when the channel parameter is missing or not one of RCS, WHATSAPP, SMS. 404 is returned when the customerMessageId does not exist for the given channel and company, or when the channel parameter does not match the original send channel. 500 indicates an unexpected server-side error; retry the request after a short delay. For bulk status checks, use the batch endpoint GET /partner-gateway/v1/messages/status instead.