curl -X GET "https://api.tracklysms.com/api/v2/creatives/101" \
-H "X-Api-Key: trk_your_api_key_here"
import requests
response = requests.get(
"https://api.tracklysms.com/api/v2/creatives/101",
headers={"X-Api-Key": "trk_your_api_key_here"}
)
creative = response.json()
print(f"{creative['name']} — {creative['segment_count']} segment(s)")
print(f"Message: {creative['message']}")
const response = await fetch(
"https://api.tracklysms.com/api/v2/creatives/101",
{
headers: {
"X-Api-Key": "trk_your_api_key_here",
},
}
);
const creative = await response.json();
console.log(creative);
{
"id": 101,
"name": "Summer Sale Promo",
"message": "Hot deals just for you! Shop now: {{link1}} Reply STOP to opt out.",
"offer_links": [
{
"key": "link1",
"offer_id": "665f1a2b3c4d5e6f70819201",
"custom_url": null,
"url_params": {"sub1": "sms"}
}
],
"offers": ["665f1a2b3c4d5e6f70819201"],
"status": "active",
"creative_type": "automated",
"character_count": 114,
"segment_count": 1,
"created_at": "2025-06-10T12:00:00",
"slug": "cre_summer-sale-promo_a1b2c3",
"list_control_mode": "all",
"list_control_ids": []
}
{
"error": "Creative not found",
"code": "not_found"
}
{
"error": "Invalid credentials",
"code": "invalid_credentials"
}
Creatives (v2)
Get a Creative
Retrieve a single creative by its ID.
GET
/
v2
/
creatives
/
{id}
curl -X GET "https://api.tracklysms.com/api/v2/creatives/101" \
-H "X-Api-Key: trk_your_api_key_here"
import requests
response = requests.get(
"https://api.tracklysms.com/api/v2/creatives/101",
headers={"X-Api-Key": "trk_your_api_key_here"}
)
creative = response.json()
print(f"{creative['name']} — {creative['segment_count']} segment(s)")
print(f"Message: {creative['message']}")
const response = await fetch(
"https://api.tracklysms.com/api/v2/creatives/101",
{
headers: {
"X-Api-Key": "trk_your_api_key_here",
},
}
);
const creative = await response.json();
console.log(creative);
{
"id": 101,
"name": "Summer Sale Promo",
"message": "Hot deals just for you! Shop now: {{link1}} Reply STOP to opt out.",
"offer_links": [
{
"key": "link1",
"offer_id": "665f1a2b3c4d5e6f70819201",
"custom_url": null,
"url_params": {"sub1": "sms"}
}
],
"offers": ["665f1a2b3c4d5e6f70819201"],
"status": "active",
"creative_type": "automated",
"character_count": 114,
"segment_count": 1,
"created_at": "2025-06-10T12:00:00",
"slug": "cre_summer-sale-promo_a1b2c3",
"list_control_mode": "all",
"list_control_ids": []
}
{
"error": "Creative not found",
"code": "not_found"
}
{
"error": "Invalid credentials",
"code": "invalid_credentials"
}
Returns the full details of a single creative, including its message template, offer links, and calculated segment count.
For assets saved during blast creation,
pass the integer
saved_creatives[].creative_id as {id}. This returns the independent
creative snapshot; later schedule edits do not update it.
Path Parameters
integer
required
The unique identifier of the creative.
Response Fields
integer
Unique identifier for the creative.
string
Display name of the creative.
string
The message text, optionally containing
{{linkN}} placeholders. A one_time creative can contain plain text without links.array
Array of mappings from placeholders to offers or custom URLs. Empty for plain-text creatives without links.
Show Offer link properties
Show Offer link properties
string
The placeholder key (e.g.
link1).string
The ID of the offer associated with this link — a 24-character hexadecimal string. Present only when the link is backed by an offer.
string
The custom destination URL for this link. Present only when the link is backed by a custom URL instead of an offer.
string
Legacy field that may be present in stored mappings. Deprecated and ignored;
custom_url supplies a custom destination.object
Additional query parameters appended to the link URL.
array
Array of offer ID strings referenced by this creative.
string
Current status. One of:
active, paused, archived.string
The type of creative. One of:
automated, one_time, welcome.integer
Estimated character count of the rendered message. Link placeholders are estimated as 23 characters each, plus 34 characters of compliance overhead.
integer
Estimated number of SMS segments, encoding-aware. The message is expanded (link placeholders as 23 characters plus 34 characters of compliance overhead) and segmented the way carriers bill it. GSM-7 messages fit 160 septets in a single segment, or 153 septets per part when concatenated; extension-table characters (
^ { } [ ] ~ | € \ and form-feed) cost 2 septets each. If the message contains any non-GSM-7 character (e.g. emoji), UCS-2 encoding applies instead: 70 characters single, 67 per concatenated part.datetime
ISO 8601 timestamp of when the creative was created.
string
Auto-generated unique slug for the creative.
string
List targeting control mode. One of:
all (default), include, exclude.array
List IDs used when
list_control_mode is include or exclude.Examples
curl -X GET "https://api.tracklysms.com/api/v2/creatives/101" \
-H "X-Api-Key: trk_your_api_key_here"
import requests
response = requests.get(
"https://api.tracklysms.com/api/v2/creatives/101",
headers={"X-Api-Key": "trk_your_api_key_here"}
)
creative = response.json()
print(f"{creative['name']} — {creative['segment_count']} segment(s)")
print(f"Message: {creative['message']}")
const response = await fetch(
"https://api.tracklysms.com/api/v2/creatives/101",
{
headers: {
"X-Api-Key": "trk_your_api_key_here",
},
}
);
const creative = await response.json();
console.log(creative);
{
"id": 101,
"name": "Summer Sale Promo",
"message": "Hot deals just for you! Shop now: {{link1}} Reply STOP to opt out.",
"offer_links": [
{
"key": "link1",
"offer_id": "665f1a2b3c4d5e6f70819201",
"custom_url": null,
"url_params": {"sub1": "sms"}
}
],
"offers": ["665f1a2b3c4d5e6f70819201"],
"status": "active",
"creative_type": "automated",
"character_count": 114,
"segment_count": 1,
"created_at": "2025-06-10T12:00:00",
"slug": "cre_summer-sale-promo_a1b2c3",
"list_control_mode": "all",
"list_control_ids": []
}
{
"error": "Creative not found",
"code": "not_found"
}
{
"error": "Invalid credentials",
"code": "invalid_credentials"
}
Error Codes
| HTTP Status | Error Code | Description |
|---|---|---|
| 401 | invalid_credentials | API key is missing or invalid. |
| 403 | account_suspended | Your account is suspended. Resolve outstanding billing or contact support. |
| 404 | not_found | No creative exists with the given ID. |
Next Steps
Creative Templates
Design effective templates
Create Schedule
Use creatives in campaigns