Skip to main content
POST
/
v2
/
send
curl -X POST https://app.tracklysms.com/api/v2/send \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155551234",
    "list_number": "+18005551000",
    "body": "Hello! Your order is confirmed. Ref: {{messageId}}",
    "wrap_links": true
  }'
{
  "success": true,
  "message_id": "a1b2c3d4",
  "status": "queued"
}
Send a single SMS message through your sending list. The message is queued for delivery and assigned a unique 8-character message ID for tracking.

Body Parameters

to
string
required
Recipient phone number in E.164 format (e.g. +14155551234).
list_number
string
required
Sending list phone number in E.164 format. Must belong to your account.
body
string
required
Message body text. Use the {{messageId}} placeholder to insert the unique message ID into the body at send time.
When true, any URLs in the message body are automatically wrapped in the link shortener for click tracking.
contact_data
object
Optional per-contact data for macro substitution. Supports first_name (string), last_name (string), custom_fields (object), and timezone (string). These values are used to populate template variables like {{first_name}} in the message body.
metadata
object
Optional key-value metadata dictionary attached to the message. Useful for correlating messages with your internal systems.

Response Fields

success
boolean
Whether the message was successfully queued.
message_id
string
Unique 8-character message identifier for tracking delivery and clicks.
status
string
Current message status. Will be "queued" on successful submission.

Examples

curl -X POST https://app.tracklysms.com/api/v2/send \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155551234",
    "list_number": "+18005551000",
    "body": "Hello! Your order is confirmed. Ref: {{messageId}}",
    "wrap_links": true
  }'
{
  "success": true,
  "message_id": "a1b2c3d4",
  "status": "queued"
}

Error Codes

HTTP StatusError CodeDescription
400missing_toThe to field is required but was not provided.
400missing_list_numberThe list_number field is required but was not provided.
400missing_bodyThe body field is required but was not provided.
400invalid_phoneThe to field is not a valid E.164 phone number.
400invalid_list_numberThe list_number field is not a valid E.164 phone number.
400list_not_foundThe sending list was not found or does not belong to your account.
400webhook_not_configuredWebhook verification required before sending (BYOC lists).

Next Steps

Campaign Execution

How messages flow from queue to delivery

Create Contact

Add contacts before sending