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 (DELIVERED, SENT, RECEIVED, ERROR, EXPIRED, UNKNOWN) and deliveryStatusDescription for human-readable details. Error responses: 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: SENT - the message has been accepted by the platform and forwarded to the carrier or channel provider, but no delivery confirmation has been received yet. DELIVERED - the carrier or channel provider confirmed that the message reached the recipient device. RECEIVED - the message was received by the downstream system but final delivery to the handset is not yet confirmed. ERROR - 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). EXPIRED - the message was not delivered within the allowed time-to-live window and the carrier discarded it. UNKNOWN - the platform has no status information for this message, which may indicate that the carrier did not return a delivery receipt or that the message is still being processed. Error responses: 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.