Skip to main content
POST
/
v2
/
send
/
bulk
curl -X POST https://app.tracklysms.com/api/v2/send/bulk \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {
        "to": "+14155551234",
        "list_number": "+18005551000",
        "body": "Your promo code is SAVE20. Ref: {{messageId}}"
      },
      {
        "to": "+14155559876",
        "list_number": "+18005551000",
        "body": "Your promo code is SAVE20. Ref: {{messageId}}"
      }
    ]
  }'
{
  "queued_count": 2,
  "error_count": 0,
  "errors": []
}
Send up to 1,000 SMS messages in a single API call. Each message in the batch is validated independently — successfully validated messages are queued even if others in the batch fail validation.

Body Parameters

messages
array
required
Array of message objects (maximum 1,000 per request). Each object supports the following fields:

Response Fields

queued_count
integer
Number of messages successfully queued for delivery.
error_count
integer
Number of messages that failed validation.
errors
array
Array of error objects for messages that failed validation. Each object contains:

Examples

curl -X POST https://app.tracklysms.com/api/v2/send/bulk \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {
        "to": "+14155551234",
        "list_number": "+18005551000",
        "body": "Your promo code is SAVE20. Ref: {{messageId}}"
      },
      {
        "to": "+14155559876",
        "list_number": "+18005551000",
        "body": "Your promo code is SAVE20. Ref: {{messageId}}"
      }
    ]
  }'
{
  "queued_count": 2,
  "error_count": 0,
  "errors": []
}

Error Codes

Request-Level Errors

HTTP StatusError CodeDescription
400missing_messagesThe messages array is required but was not provided.
413too_many_messagesThe messages array exceeds the 1,000 message limit.

Per-Message Errors

CodeDescription
missing_toThe to field is required but was not provided.
missing_list_numberThe list_number field is required but was not provided.
missing_bodyThe body field is required but was not provided.
invalid_phoneThe to field is not a valid E.164 phone number.
invalid_list_numberThe list_number field is not a valid E.164 phone number.
list_not_foundThe sending list was not found or does not belong to your account.

Next Steps

Campaign Execution

How messages flow from queue to delivery

Create Contact

Add contacts before sending