Skip to main content
POST
/
v2
/
send-raw
curl -X POST https://app.tracklysms.com/api/v2/send-raw \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155551234",
    "list_number": "+18005551000",
    "body": "URGENT: Your verification code is 482901. Ref: {{messageId}}",
    "skip_duplicate_check": true,
    "skip_rate_limit": true
  }'
{
  "success": true,
  "message_id": "x7y8z9w0",
  "status": "queued"
}
Send a single SMS message with granular control over validation and rate-limiting behavior. This endpoint exposes skip flags that allow you to bypass specific checks, making it suitable for high-priority or time-sensitive messages.
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

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.
skip_duplicate_check
boolean
default:"false"
When true, skips the duplicate message check. By default, the system prevents sending identical messages to the same recipient within a short window.
skip_rate_limit
boolean
default:"false"
When true, skips per-list rate limiting. Use with caution to avoid exceeding carrier throughput limits.
skip_contact_validation
boolean
default:"false"
When true, skips contact validation such as opt-out and block list checks. The message will be sent even if the recipient has previously unsubscribed.
skip_journey_check
boolean
default:"false"
When true, skips the journey enrollment check. By default, the system verifies whether the recipient is enrolled in an active journey that might conflict with this message.
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-raw \
  -H "X-Api-Key: trk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155551234",
    "list_number": "+18005551000",
    "body": "URGENT: Your verification code is 482901. Ref: {{messageId}}",
    "skip_duplicate_check": true,
    "skip_rate_limit": true
  }'
{
  "success": true,
  "message_id": "x7y8z9w0",
  "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