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
  }
}
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://app.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://app.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://app.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