Skip to main content
The v2 API is the current, production-ready version of the Trackly SMS API. It replaces the deprecated v1 API with expanded functionality, consistent field naming, and new resource types.

Base URL

All v2 API requests should be made to:
https://app.tracklysms.com/api/v2

Authentication

Every request requires an API key in the X-Api-Key header:
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": "+18005551234", "body": "Hello!"}'
API keys follow the format trk_[32-char-alphanumeric]. See Authentication for details.

What’s New in V2

FeatureV1V2
Send messagesSingle & bulkSingle, bulk, raw, raw bulk
ContactsNo-op stubsFull CRUD + bulk + journey enrollment
ListsNot availableRead-only list management
CreativesNot availableFull CRUD with segment estimation
AudiencesNot availableFull CRUD with filter DSL + size calculation
OffersNot availableFull CRUD with metadata
SchedulesNot availableFull CRUD with blast variants
RevenueNot availableAttribution tracking, single & bulk
Data importNot availableImport sends, clicks, revenue history
WebhooksDelivery status onlyDelivery, unsubscribe, reply events

Request Format

  • All requests must include Content-Type: application/json
  • Phone numbers must be in E.164 format (e.g., +14155551234)
  • Request bodies must be valid JSON
  • Maximum payload size: 5 MB

Response Format

All v2 responses use a consistent JSON structure.
{
  "success": true,
  "message_id": "AbC12345",
  "status": "queued"
}

Pagination

Endpoints that return lists support pagination via query parameters:
ParameterDefaultMaxDescription
page1Page number
per_page501000 (contacts) / 100 (others)Items per page
Paginated responses include a pagination object:
{
  "pagination": {
    "page": 1,
    "per_page": 50,
    "total": 238,
    "total_pages": 5
  }
}

Bulk Operations

Bulk endpoints accept up to 1,000 records per request. Each record is processed individually — partial success is possible. Bulk responses include per-record error details:
{
  "queued_count": 995,
  "error_count": 5,
  "errors": [
    {"index": 3, "to": "+1invalid", "code": "invalid_phone", "error": "Invalid recipient phone number format"}
  ]
}

Available Endpoints

Messages

Send single and bulk SMS messages

Raw Messages

Send raw messages with skip options

Contacts

Create, list, and manage contacts

Lists

View sending lists and contact counts

Creatives

Manage message templates with offer links

Audiences

Build dynamic audience segments

Offers

Manage tracking offers and payouts

Schedules

Create and manage scheduled campaigns

Links

Create trackable short links for offers

Revenue

Record revenue attribution

Data Import

Import historical sends, clicks, and revenue

Webhooks

Receive delivery and reply events

Audience Filters

Build complex audience filter queries

Migration from V1

If you’re using the deprecated v1 API, see the Migration Guide for a field-by-field comparison and upgrade path.

Next Steps

Send First SMS

Send your first message in 5 minutes

Authentication

Set up your API key