request_id that scopes the entire HTTP call, and one or more message_id values that scope individual messages to individual recipients.
request_id vs message_id
These two identifiers serve different purposes:request_id is generated for the entire HTTP request. No matter how many messages or recipients you include in a single API call, they all share the same request_id. Use it when contacting SmsManager support or when you need to trace a specific API call in your own logs.
message_id is a UUID assigned to each individual message. You use this ID to query delivery status and to match incoming webhook events back to messages you sent.
Single send (/message endpoint)
When you POST to /message, you send one message object with a to array of recipients (up to 10). SmsManager assigns a separate message_id for each accepted recipient in the to array.
Request:
key corresponds to the zero-based index of the recipient in your to array. Recipient 0 (420777111111) gets aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee; recipient 1 (420777222222) gets ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj.
Batch send (/messages endpoint)
When you POST to /messages, you send an array of message objects (up to 10 objects, each with up to 10 recipients — 100 recipients total per API call). SmsManager assigns one message_id per message object in the batch, not per recipient.
To derive the per-recipient message_id, append -<recipient_index> to the message-level message_id.
Request (one batch item with 3 recipients):
0 received message_id pppppppp-qqqq-rrrr-ssss-tttttttttttt. The per-recipient IDs are:
Webhook delivery notifications for
/messages sends also use the -<recipient_index> suffix format. Make sure your webhook handler is prepared to receive and parse these compound IDs.Using message_id for tracking
Polling delivery status
You can query the delivery status of any message at any time using the REST API:Correlating webhook events
When SmsManager sends a delivery notification to your webhook callback URL, the payload includes themessage_id of the delivered message. Match this value against the IDs you stored at send time to update your own delivery records.
Accepted vs. rejected
Every response includes anaccepted array and a rejected array:
accepted— entries for messages that were successfully queued for delivery. Each entry contains the recipient/itemkeyand amessage_idyou can use for tracking.rejected— entries for messages that could not be queued. Each entry contains thekeyof the failed item. Common rejection reasons include an invalid or unroutable phone number, insufficient account credit, or a malformed request field.
message_id because no message was created. If you need to understand why a message was rejected, check the error details in the API response body or contact SmsManager support with your request_id.