{
"schedules": [
{
"id": "6651a3f2e4b0a1c2d3e4f567",
"name": "Weekend Promo Blast",
"status": "on",
"send_type": "blast",
"source_lists": [101, 204],
"audiences": ["665fa1b2c3d4e5f6a7b8c901"],
"is_repeating": true,
"send_time": "14:30",
"send_date": null,
"start_date": "2025-06-01T00:00:00",
"end_date": "2025-08-31T00:00:00",
"days_of_week": {
"monday": false,
"tuesday": false,
"wednesday": false,
"thursday": false,
"friday": true,
"saturday": true,
"sunday": true
},
"skip_within_hours": 24,
"use_local_time": true,
"filter_bots": true,
"is_mms": false,
"is_cto": false,
"automated_percent": 0,
"ir_revenue": 2.50,
"blasts": [
{
"message": "Flash sale this weekend! Shop now: {{link1}}",
"offer_links": [
{
"key": "link1",
"offer_id": "665fa1b2c3d4e5f6a7b8c902",
"custom_url": null,
"url_params": {"utm_source": "sms", "utm_campaign": "weekend"}
}
],
"percent_audience": 60,
"variant_name": "Control",
"mms_image_url": null
},
{
"message": "Don't miss out — 20% off everything: {{link1}}",
"offer_links": [
{
"key": "link1",
"offer_id": "665fa1b2c3d4e5f6a7b8c902",
"custom_url": null,
"url_params": {"utm_source": "sms", "utm_campaign": "weekend"}
}
],
"percent_audience": 40,
"variant_name": "Urgency Variant",
"mms_image_url": null
}
],
"created_at": "2025-05-28T10:15:30",
"updated_at": "2025-06-01T08:00:00"
}
]
}
{
"error": "Invalid credentials",
"code": "invalid_credentials"
}
Schedules (v2)
List Schedules
Retrieve all schedules for the authenticated account.
GET
/
v2
/
schedules
{
"schedules": [
{
"id": "6651a3f2e4b0a1c2d3e4f567",
"name": "Weekend Promo Blast",
"status": "on",
"send_type": "blast",
"source_lists": [101, 204],
"audiences": ["665fa1b2c3d4e5f6a7b8c901"],
"is_repeating": true,
"send_time": "14:30",
"send_date": null,
"start_date": "2025-06-01T00:00:00",
"end_date": "2025-08-31T00:00:00",
"days_of_week": {
"monday": false,
"tuesday": false,
"wednesday": false,
"thursday": false,
"friday": true,
"saturday": true,
"sunday": true
},
"skip_within_hours": 24,
"use_local_time": true,
"filter_bots": true,
"is_mms": false,
"is_cto": false,
"automated_percent": 0,
"ir_revenue": 2.50,
"blasts": [
{
"message": "Flash sale this weekend! Shop now: {{link1}}",
"offer_links": [
{
"key": "link1",
"offer_id": "665fa1b2c3d4e5f6a7b8c902",
"custom_url": null,
"url_params": {"utm_source": "sms", "utm_campaign": "weekend"}
}
],
"percent_audience": 60,
"variant_name": "Control",
"mms_image_url": null
},
{
"message": "Don't miss out — 20% off everything: {{link1}}",
"offer_links": [
{
"key": "link1",
"offer_id": "665fa1b2c3d4e5f6a7b8c902",
"custom_url": null,
"url_params": {"utm_source": "sms", "utm_campaign": "weekend"}
}
],
"percent_audience": 40,
"variant_name": "Urgency Variant",
"mms_image_url": null
}
],
"created_at": "2025-05-28T10:15:30",
"updated_at": "2025-06-01T08:00:00"
}
]
}
{
"error": "Invalid credentials",
"code": "invalid_credentials"
}
List all schedules associated with your account. Returns all non-archived schedules by default. Use the
status filter to include archived schedules or narrow results to a specific status.
No pagination is applied — the full list of matching schedules is returned in a single response.
Query Parameters
string
Comma-separated list of statuses to filter by. Allowed values:
draft, off, on, complete, archive. When omitted, all schedules except those with status archive are returned.string
Filter by send type. Allowed values:
blast or automated.Response Fields
array
An array of schedule objects.
Show Schedule object properties
Show Schedule object properties
string
Unique identifier for the schedule.
string
Name of the schedule.
string
Current status. One of:
draft, off, on, complete, archive.string
Type of schedule. One of:
blast or automated.array of integers
IDs of the source sending lists assigned to this schedule.
array of strings
IDs of the audiences targeted by this schedule.
boolean
Whether this schedule repeats on selected days of the week.
string
Time of day to send, in
HH:MM format (24-hour).datetime
The specific date for a one-time (non-repeating) schedule.
datetime
Start date for a repeating schedule.
datetime
End date for a repeating schedule.
object
Which days the repeating schedule is active. Contains boolean fields:
monday, tuesday, wednesday, thursday, friday, saturday, sunday.float
Skip sending to a contact if they were already sent to within this many hours.
boolean
Whether
send_time is interpreted in each recipient’s local timezone.boolean
Whether bot filtering is enabled for this schedule.
boolean
Whether this schedule sends MMS messages.
boolean
Whether click-to-open mode is enabled.
float
Percentage of the audience allocated to automated creative selection.
float
Expected or target revenue from this send.
array
Array of blast variant objects.
Show Blast object properties
Show Blast object properties
string
Message body text. May contain
{{link1}}, {{link2}}, etc. placeholders for offer links.array
Array of offer link objects. Each contains
key (string, e.g. link1), offer_id (string, null when the link uses a custom URL), custom_url (string, null when the link uses an offer), and url_params (object of key/value query parameters).float
Percentage of the audience that receives this variant. All blast percentages must sum to 100.
string
Display name for this variant.
string
URL of the MMS image attachment, if applicable.
datetime
Timestamp when the schedule was created.
datetime
Timestamp when the schedule was last updated.
Examples
cURL
curl -X GET "https://api.tracklysms.com/api/v2/schedules?status=on,draft&send_type=blast" \
-H "X-Api-Key: trk_your_api_key_here"
Python
import requests
response = requests.get(
"https://api.tracklysms.com/api/v2/schedules",
headers={"X-Api-Key": "trk_your_api_key_here"},
params={
"status": "on,draft",
"send_type": "blast"
}
)
data = response.json()
for schedule in data["schedules"]:
print(f"{schedule['name']} — {schedule['status']}")
Node.js
const response = await fetch(
"https://api.tracklysms.com/api/v2/schedules?status=on,draft&send_type=blast",
{
method: "GET",
headers: {
"X-Api-Key": "trk_your_api_key_here"
}
}
);
const data = await response.json();
data.schedules.forEach(schedule => {
console.log(`${schedule.name} — ${schedule.status}`);
});
{
"schedules": [
{
"id": "6651a3f2e4b0a1c2d3e4f567",
"name": "Weekend Promo Blast",
"status": "on",
"send_type": "blast",
"source_lists": [101, 204],
"audiences": ["665fa1b2c3d4e5f6a7b8c901"],
"is_repeating": true,
"send_time": "14:30",
"send_date": null,
"start_date": "2025-06-01T00:00:00",
"end_date": "2025-08-31T00:00:00",
"days_of_week": {
"monday": false,
"tuesday": false,
"wednesday": false,
"thursday": false,
"friday": true,
"saturday": true,
"sunday": true
},
"skip_within_hours": 24,
"use_local_time": true,
"filter_bots": true,
"is_mms": false,
"is_cto": false,
"automated_percent": 0,
"ir_revenue": 2.50,
"blasts": [
{
"message": "Flash sale this weekend! Shop now: {{link1}}",
"offer_links": [
{
"key": "link1",
"offer_id": "665fa1b2c3d4e5f6a7b8c902",
"custom_url": null,
"url_params": {"utm_source": "sms", "utm_campaign": "weekend"}
}
],
"percent_audience": 60,
"variant_name": "Control",
"mms_image_url": null
},
{
"message": "Don't miss out — 20% off everything: {{link1}}",
"offer_links": [
{
"key": "link1",
"offer_id": "665fa1b2c3d4e5f6a7b8c902",
"custom_url": null,
"url_params": {"utm_source": "sms", "utm_campaign": "weekend"}
}
],
"percent_audience": 40,
"variant_name": "Urgency Variant",
"mms_image_url": null
}
],
"created_at": "2025-05-28T10:15:30",
"updated_at": "2025-06-01T08:00:00"
}
]
}
{
"error": "Invalid credentials",
"code": "invalid_credentials"
}
Error Codes
| HTTP Status | Error Code | Description |
|---|---|---|
| 401 | invalid_credentials | API key is missing, invalid, or revoked. |
| 403 | account_suspended | Your account is suspended. Resolve outstanding billing or contact support. |
| 429 | rate_limited | Request throttled; retry with exponential backoff after the window resets. |
Next Steps
Campaign Scheduling
Plan and schedule campaigns
List Audiences
View available audiences
⌘I