{
"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",
"platform_config_id": "665a0c1d2e3f4a5b6c7d8e9f",
"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,
"platform_config_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",
"platform_config_id": "665a0c1d2e3f4a5b6c7d8e9f",
"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,
"platform_config_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. The value is matched exactly against the offer’s
external_platform, so tune, everflow, everflow_marketplace, and other integration-set values all work. A value no offer uses returns an empty list.string
Return only the offers linked to this platform integration. A malformed ID is rejected with
invalid_platform_config; a well-formed ID that is not one of your integrations returns an empty result rather than an error.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 this offer syncs with. Values include
tune, everflow, everflow_marketplace, or other integration-set platforms, or null when the offer isn’t linked to an external platform.string
The offer ID on the external platform.
string
ID of the platform integration this offer is linked to, or
null when the offer is not linked to one. Only a linked offer is picked up by that integration’s conversion sync.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 this offer will not be sent, 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",
"platform_config_id": "665a0c1d2e3f4a5b6c7d8e9f",
"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,
"platform_config_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 |
|---|---|---|
| 400 | invalid_platform_config | The platform_config_id filter is not a valid ID. |
| 401 | invalid_credentials | API key is missing or invalid. |
| 403 | account_suspended | Your account is suspended. Resolve outstanding billing or contact support. |
| 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