Offer reporting and web-pixel API
These reporting routes use /performance-marketing/v2; dashboard reads require an advertiser bearer session and ownership of the campaign. Delivery reporting is feature gated. A callback accepted at the HTTP layer can still be pending verification or accounting, so compare conversion states, ledger, and freshness before concluding that a reward settled.
Campaign report
GET /campaigns/{campaignId}/report returns one campaign's conversions by state, ledger groups, metrics, funnel, freshnessWatermark, and reconciliation. The funnel counts eligibleRequests, impressions, launches, approvals, and reversals. Reconciliation compares campaignSpentMicros with ledgerGrossRevenueMicros and reports differenceMicros and exact. Amounts ending in Micros are integer millionths of the base money unit; dashboard convenience fields may also be mapped to display amounts.
GET /performance-marketing/v2/campaigns/CAMPAIGN_ID/report
Authorization: Bearer DASHBOARD_TOKEN
{
"campaignId": "CAMPAIGN_ID",
"conversions": {"CREDITED": 3},
"ledger": [],
"metrics": {"ELIGIBLE_REQUEST": 50, "IMPRESSION": 20, "LAUNCH_RESERVED": 8},
"funnel": {"eligibleRequests": 50, "impressions": 20, "launches": 8, "approvals": 3, "reversals": 0},
"freshnessWatermark": "2026-09-29T08:00:00.000Z",
"reconciliation": {"campaignSpentMicros": 3000000, "ledgerGrossRevenueMicros": 3000000, "differenceMicros": 0, "exact": true}
}
GET /campaigns/{campaignId}/report?format=csv returns text/csv with campaign ID, funnel counts, spent and ledger gross micros, difference, exact flag, and freshness watermark. The report is a current aggregate, not a transaction-level export. Investigate a nonzero difference using the campaign audit, callback result, and account ledger before changing budgets.
Web pixel telemetry
For an eligible web Custom S2S campaign when web pixels are enabled, Tracking setup returns /pixels/web/{campaignId}.gif. GET /pixels/web/{campaignId}.gif?click_id=...&goal_id=... returns a 1×1 GIF and records best-effort telemetry. It does not approve, credit, or reverse a conversion. GET /campaigns/{campaignId}/tracking/web-pixels?limit=50 lists recent observations for the owner. The pixel list and pixel route are separately feature gated, and the pixel route is rate limited. Continue sending the signed Custom S2S callback for the actual verified result.
Administrator-wide callback, conversion, ledger, outbox, analytics aggregation, reconciliation, and readiness operation endpoints exist in the same backend router. They require administrator access and are not advertiser endpoints; do not use them as a campaign reporting integration.