{
"offers": [
{
"id": "664f1a2b3c4d5e6f7a8b9c0d",
"slug": "ofr_summer-promo_a1b2c3",
"name": "Summer Promo",
"tracking_url": "https://track.example.com/click?offer_id=123",
"external_platform": "tune",
"external_id": "4521",
"advertiser_id": "adv_882",
"advertiser_name": "Acme Health",
"payout": 2.50,
"payout_type": "cpa",
"filter_bots": true,
"status": "active",
"metadata": {
"vertical": "health",
"geo": "US"
},
"excluded_days_of_week": ["saturday", "sunday"],
"day_parting_enabled": true,
"day_parting": {
"monday": [{"start": "09:00", "end": "17:00"}]
},
"created_at": "2025-11-01T14:30:00",
"updated_at": "2025-12-15T09:12:00"
},
{
"id": "664f1a2b3c4d5e6f7a8b9c0e",
"slug": "ofr_winter-sale_d4e5f6",
"name": "Winter Sale",
"tracking_url": "https://track.example.com/click?offer_id=456",
"external_platform": null,
"external_id": null,
"advertiser_id": null,
"advertiser_name": null,
"payout": 1.75,
"payout_type": "cpc",
"filter_bots": false,
"status": "active",
"metadata": {},
"excluded_days_of_week": [],
"day_parting_enabled": false,
"day_parting": {},
"created_at": "2025-12-01T08:00:00",
"updated_at": "2025-12-01T08:00:00"
}
],
"pagination": {
"page": 1,
"per_page": 25,
"total": 2,
"total_pages": 1
}
}
{
"error": "Invalid credentials",
"code": "invalid_credentials"
}
Offers (v2)
List Offers
Retrieve a paginated list of all offers on your account.
GET
/
v2
/
offers
{
"offers": [
{
"id": "664f1a2b3c4d5e6f7a8b9c0d",
"slug": "ofr_summer-promo_a1b2c3",
"name": "Summer Promo",
"tracking_url": "https://track.example.com/click?offer_id=123",
"external_platform": "tune",
"external_id": "4521",
"advertiser_id": "adv_882",
"advertiser_name": "Acme Health",
"payout": 2.50,
"payout_type": "cpa",
"filter_bots": true,
"status": "active",
"metadata": {
"vertical": "health",
"geo": "US"
},
"excluded_days_of_week": ["saturday", "sunday"],
"day_parting_enabled": true,
"day_parting": {
"monday": [{"start": "09:00", "end": "17:00"}]
},
"created_at": "2025-11-01T14:30:00",
"updated_at": "2025-12-15T09:12:00"
},
{
"id": "664f1a2b3c4d5e6f7a8b9c0e",
"slug": "ofr_winter-sale_d4e5f6",
"name": "Winter Sale",
"tracking_url": "https://track.example.com/click?offer_id=456",
"external_platform": null,
"external_id": null,
"advertiser_id": null,
"advertiser_name": null,
"payout": 1.75,
"payout_type": "cpc",
"filter_bots": false,
"status": "active",
"metadata": {},
"excluded_days_of_week": [],
"day_parting_enabled": false,
"day_parting": {},
"created_at": "2025-12-01T08:00:00",
"updated_at": "2025-12-01T08:00:00"
}
],
"pagination": {
"page": 1,
"per_page": 25,
"total": 2,
"total_pages": 1
}
}
{
"error": "Invalid credentials",
"code": "invalid_credentials"
}
Returns all offers associated with your account. By default, archived offers are excluded unless explicitly requested via the
status filter.
Query Parameters
string
Filter offers by status. Accepted values:
active, paused, archived. When omitted, all non-archived offers are returned.string
Filter offers by their exact external platform ID.
string
Filter offers by external platform. Accepted values:
tune, everflow.integer
default:"1"
Page number for pagination.
integer
default:"50"
Number of offers per page. Maximum value is
100.Response Fields
array
An array of offer objects.
Show Offer object properties
Show Offer object properties
string
Unique identifier for the offer.
string
Human-readable unique slug for the offer, in the form
ofr_{slugified-name}_{hex}.string
Display name of the offer.
string
The tracking/click URL for this offer.
string
The external affiliate platform. One of
tune, everflow, or null.string
The offer ID on the external platform.
string
The advertiser ID associated with the offer.
string
The advertiser name associated with the offer.
float
Payout amount for the offer.
string
Payout model. One of
cpa or cpc.boolean
Whether bot click filtering is enabled.
string
Current status of the offer:
active, paused, or archived.object
Custom key-value metadata attached to the offer.
array
Weekday names (lowercase
monday through sunday) on which the SMS ad server will not send this offer, evaluated in the contact’s local time. Empty array when none are excluded.boolean
Whether intra-day send-window restrictions apply to this offer.
object
Allow-list of send windows keyed by lowercase weekday, evaluated in Eastern Time. Shape:
{"monday": [{"start": "HH:MM", "end": "HH:MM"}]}. Empty object when no windows are configured.datetime
ISO 8601 timestamp of when the offer was created.
datetime
ISO 8601 timestamp of the last update.
object
Examples
cURL
curl -X GET "https://api.tracklysms.com/api/v2/offers?status=active&page=1&per_page=25" \
-H "X-Api-Key: trk_your_api_key_here"
Python
import requests
response = requests.get(
"https://api.tracklysms.com/api/v2/offers",
headers={"X-Api-Key": "trk_your_api_key_here"},
params={
"status": "active",
"page": 1,
"per_page": 25
}
)
data = response.json()
for offer in data["offers"]:
print(offer["name"], offer["status"])
Node.js
const response = await fetch(
"https://api.tracklysms.com/api/v2/offers?status=active&page=1&per_page=25",
{
headers: {
"X-Api-Key": "trk_your_api_key_here"
}
}
);
const data = await response.json();
console.log(data.offers);
{
"offers": [
{
"id": "664f1a2b3c4d5e6f7a8b9c0d",
"slug": "ofr_summer-promo_a1b2c3",
"name": "Summer Promo",
"tracking_url": "https://track.example.com/click?offer_id=123",
"external_platform": "tune",
"external_id": "4521",
"advertiser_id": "adv_882",
"advertiser_name": "Acme Health",
"payout": 2.50,
"payout_type": "cpa",
"filter_bots": true,
"status": "active",
"metadata": {
"vertical": "health",
"geo": "US"
},
"excluded_days_of_week": ["saturday", "sunday"],
"day_parting_enabled": true,
"day_parting": {
"monday": [{"start": "09:00", "end": "17:00"}]
},
"created_at": "2025-11-01T14:30:00",
"updated_at": "2025-12-15T09:12:00"
},
{
"id": "664f1a2b3c4d5e6f7a8b9c0e",
"slug": "ofr_winter-sale_d4e5f6",
"name": "Winter Sale",
"tracking_url": "https://track.example.com/click?offer_id=456",
"external_platform": null,
"external_id": null,
"advertiser_id": null,
"advertiser_name": null,
"payout": 1.75,
"payout_type": "cpc",
"filter_bots": false,
"status": "active",
"metadata": {},
"excluded_days_of_week": [],
"day_parting_enabled": false,
"day_parting": {},
"created_at": "2025-12-01T08:00:00",
"updated_at": "2025-12-01T08:00:00"
}
],
"pagination": {
"page": 1,
"per_page": 25,
"total": 2,
"total_pages": 1
}
}
{
"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. |
| 429 | rate_limited | Request throttled; retry with exponential backoff after the window resets. |
| 500 | server_error | An unexpected error occurred on the server. |
Next Steps
Offers Overview
Manage offers and payouts
Record Revenue
Track revenue for your offers
⌘I