Skip to main content
POST
/
v2
/
send-raw
/
bulk
curl -X POST https://app.tracklysms.com/api/v2/send-raw/bulk \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {
        "to": "+14155551234",
        "list_number": "+18005551000",
        "body": "Verification code: 482901. Ref: {{messageId}}",
        "skip_duplicate_check": true,
        "skip_rate_limit": true
      },
      {
        "to": "+14155559876",
        "list_number": "+18005551000",
        "body": "Verification code: 739204. Ref: {{messageId}}",
        "skip_duplicate_check": true,
        "skip_rate_limit": true,
        "skip_contact_validation": true
      }
    ]
  }'
{
  "queued_count": 2,
  "error_count": 0,
  "errors": []
}
Send up to 1,000 raw SMS messages in a single API call with granular control over validation and rate-limiting behavior. Each message in the batch supports individual skip flags and is validated independently — successfully validated messages are queued even if others in the batch fail.
The following checks are always enforced regardless of skip flags:
  • Your account must own the sending list
  • Phone numbers must be in E.164 format
  • Your account must be in active status

Body Parameters

messages
array
required
Array of raw 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-raw/bulk \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {
        "to": "+14155551234",
        "list_number": "+18005551000",
        "body": "Verification code: 482901. Ref: {{messageId}}",
        "skip_duplicate_check": true,
        "skip_rate_limit": true
      },
      {
        "to": "+14155559876",
        "list_number": "+18005551000",
        "body": "Verification code: 739204. Ref: {{messageId}}",
        "skip_duplicate_check": true,
        "skip_rate_limit": true,
        "skip_contact_validation": true
      }
    ]
  }'
{
  "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