Pingtree

Offer Campaign APIs

Source List API

GEThttps://api.pingtree.com/api/source-list/{org-id}/{cid}

Overview#

The Source List API returns performance and statistical data for all lead sources attached to a specific offer campaign. Use it to build reporting dashboards, monitor source-level metrics (leads, conversions, revenue), and identify top-performing or underperforming sources in real time.

Endpoint#

GET /api/source-list/{org-id}/{cid}
SegmentDescription
{org-id}Your organization (advertiser) unique ID
{cid}The campaign unique ID

Authentication#

Include your API token in the Authorization header:

Authorization: Bearer <your-api-token>

Request Parameters#

Path Parameters#

ParameterTypeRequiredDescription
org-idstringYesOrganization unique ID
cidstringYesCampaign unique ID

Query Parameters#

ParameterTypeRequiredDescription
fromstringNoStart date filter (ISO 8601: YYYY-MM-DD)
tostringNoEnd date filter (ISO 8601: YYYY-MM-DD)
searchstringNoSearch by source name
pageintegerNoPage number (default: 1)
limitintegerNoRecords per page (default: 10, max: 100)

Example Request#

Bash
curl -G "https://api.pingtree.com/api/source-list/org_5f1a2b3c/cmp_9z8y7x6w" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
  --data-urlencode "from=2025-08-01" \
  --data-urlencode "to=2025-08-31"

Example Response#

JSON
{
  "status": 200,
  "message": "Source list retrieved successfully",
  "data": {
    "sources": [
      {
        "sourceUniqueId": "src_abc123",
        "sourceName": "Google Display - Debt",
        "totalLeads": 1240,
        "acceptedLeads": 980,
        "rejectedLeads": 180,
        "duplicateLeads": 80,
        "totalConversions": 120,
        "totalRevenue": 4800.00,
        "totalPayout": 3600.00,
        "margin": 1200.00,
        "status": "active"
      },
      {
        "sourceUniqueId": "src_def456",
        "sourceName": "Facebook Leads - Debt",
        "totalLeads": 540,
        "acceptedLeads": 430,
        "rejectedLeads": 70,
        "duplicateLeads": 40,
        "totalConversions": 55,
        "totalRevenue": 2200.00,
        "totalPayout": 1760.00,
        "margin": 440.00,
        "status": "active"
      }
    ],
    "totalRecord": 2,
    "page": 1,
    "limit": 10
  }
}

Error — Campaign Not Found#

JSON
{
  "status": 400,
  "message": "Campaign not found or access denied"
}

Error — Unauthorized#

JSON
{
  "status": 401,
  "message": "Unauthorized"
}

Status Codes#

HTTP CodeDescription
200Source list returned successfully
400Invalid campaign ID, org ID, or query parameters
401Invalid or missing API token
500Internal server error

Tips#

  • Date range filtering: Use from and to to scope the stats to a reporting period. All metrics (leads, conversions, revenue) are calculated within the specified window.
  • Monitoring performance: Poll this endpoint periodically (e.g. every 15 minutes) to refresh a live performance dashboard for your campaign sources.
  • Revenue vs payout: totalRevenue is what buyers paid; totalPayout is what sources were paid. The difference (margin) represents your campaign's gross profit for that source.
  • Inactive sources: Sources with status: "inactive" are included in the response for historical reference but are not currently receiving leads.