Skip to main content
GET
/
v2
/
offers
{
  "offers": [
    {
      "id": "664f1a2b3c4d5e6f7a8b9c0d",
      "name": "Summer Promo",
      "tracking_url": "https://track.example.com/click?offer_id=123",
      "external_platform": "tune",
      "external_id": "4521",
      "advertiser_id": "adv_882",
      "payout": 2.50,
      "payout_type": "cpa",
      "filter_bots": true,
      "status": "active",
      "metadata": {
        "vertical": "health",
        "geo": "US"
      },
      "created_at": "2025-11-01T14:30:00Z",
      "updated_at": "2025-12-15T09:12:00Z"
    },
    {
      "id": "664f1a2b3c4d5e6f7a8b9c0e",
      "name": "Winter Sale",
      "tracking_url": "https://track.example.com/click?offer_id=456",
      "external_platform": null,
      "external_id": null,
      "advertiser_id": null,
      "payout": 1.75,
      "payout_type": "cpc",
      "filter_bots": false,
      "status": "active",
      "metadata": {},
      "created_at": "2025-12-01T08:00:00Z",
      "updated_at": "2025-12-01T08:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 2,
    "total_pages": 1
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.tracklysms.com/llms.txt

Use this file to discover all available pages before exploring further.

Returns all offers associated with your account. By default, archived offers are excluded unless explicitly requested via the status filter.

Query Parameters

status
string
Filter offers by status. Accepted values: active, paused, archived. When omitted, all non-archived offers are returned.
page
integer
default:"1"
Page number for pagination.
per_page
integer
default:"50"
Number of offers per page. Maximum value is 100.

Response Fields

offers
array
An array of offer objects.
pagination
object
Pagination metadata.

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",
      "name": "Summer Promo",
      "tracking_url": "https://track.example.com/click?offer_id=123",
      "external_platform": "tune",
      "external_id": "4521",
      "advertiser_id": "adv_882",
      "payout": 2.50,
      "payout_type": "cpa",
      "filter_bots": true,
      "status": "active",
      "metadata": {
        "vertical": "health",
        "geo": "US"
      },
      "created_at": "2025-11-01T14:30:00Z",
      "updated_at": "2025-12-15T09:12:00Z"
    },
    {
      "id": "664f1a2b3c4d5e6f7a8b9c0e",
      "name": "Winter Sale",
      "tracking_url": "https://track.example.com/click?offer_id=456",
      "external_platform": null,
      "external_id": null,
      "advertiser_id": null,
      "payout": 1.75,
      "payout_type": "cpc",
      "filter_bots": false,
      "status": "active",
      "metadata": {},
      "created_at": "2025-12-01T08:00:00Z",
      "updated_at": "2025-12-01T08:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 2,
    "total_pages": 1
  }
}

Error Codes

HTTP StatusError CodeDescription
401unauthorizedAPI key is missing or invalid.
500server_errorAn unexpected error occurred on the server.

Next Steps

Offers Overview

Manage offers and payouts

Record Revenue

Track revenue for your offers