Your campaign analytics view
A curated analytics view for your OWN campaign. `slug` selects the view: overview (volume series over time), by-week and by-city (per-period / per-territory tables), ab-test (flyer-variant table), timeline (mission progress) and creative (your artwork performance). Includes your OWN value figures (revenue, ROI, CPA, spend/total and cost-per-scan) where available; Oppizi cost-to-deliver / margin figures (hard cost, distribution cost, BA payout) are stripped by an allowlist. Ownership is checked first — a campaign that is not yours returns 404. Notes: - Curated by an allowlist: any Oppizi cost-to-deliver / margin series (hardCost, distributionCost, baPayout, margin) is dropped. Composed from: ownership check (PG) then the matching /ai analytics upstream, curated to a value/volume allowlist (Oppizi-cost keys dropped)
A curated analytics view for your OWN campaign. slug selects the view: overview (volume series over time), by-week and by-city (per-period / per-territory tables), ab-test (flyer-variant table), timeline (mission progress) and creative (your artwork performance). Includes your OWN value figures (revenue, ROI, CPA, spend/total and cost-per-scan) where available; Oppizi cost-to-deliver / margin figures (hard cost, distribution cost, BA payout) are stripped by an allowlist. Ownership is checked first — a campaign that is not yours returns 404.
Notes:
- Curated by an allowlist: any Oppizi cost-to-deliver / margin series (hardCost, distributionCost, baPayout, margin) is dropped.
Composed from: ownership check (PG) then the matching /ai analytics upstream, curated to a value/volume allowlist (Oppizi-cost keys dropped)
Authorization
clientKey Your Oppizi client key. Send it as Authorization: Bearer <client-key>. Scoped to your client account only.
In: header
Path Parameters
Numeric campaign id (must belong to the calling key’s client).
Analytics view: overview | by-week | by-city | timeline | creative | ab-test.
Response Body
application/json
curl -X GET "https://example.com/client/campaigns/string/analytics/string"{ "success": true, "data": { "xAxis": { "label": "Week", "data": [ "2026-W20", "2026-W21" ] }, "yAxis": { "scans": { "label": "Scans", "data": [ 120, 145 ] }, "conversions": { "label": "Conversions", "data": [ 18, 22 ] }, "flyersDistributed": { "label": "Flyers Distributed", "data": [ 20000, 25000 ] } } }}Get campaign performance GET
Returns distribution and engagement performance for a campaign. No cost, revenue or margin fields are exposed on the public API.
Your campaign scan analytics GET
QR/scan analytics for your OWN campaign — unique scans, scan CVR, flyers distributed/inserted, inserting progress and average time between scans. Ownership is checked first (404 if the campaign is not yours). Monetary figures (e.g. cost-per-scan derived from Oppizi hard cost) are dropped. Notes: - The "Scans CPA" (an Oppizi-cost amount) is intentionally dropped. Composed from: ownership check (PG) then the /ai scans upstream, curated to a volume/CVR allowlist