Reporting API
Api

Unified stats report

One endpoint, one row shape: `{ dimensions, metrics }`. - metrics: views, spending, clicks (valid/bot-filtered), conversions. - dimensions: omit for a grand total; `date` buckets by granularity; one entity dimension (campaign|ad|keyword) optionally combined with date. - keyword is totals-only and supports views/spending/clicks (not conversions). - `date` is unix epoch seconds (UTC, bucket start). Community data is out of scope.

GET
/v1/report
AuthorizationBearer <token>

In: header

Query Parameters

from*string

Start (inclusive, ISO 8601)

to*string

End (inclusive, ISO 8601). Max 90 days.

metrics*array<>

Comma-separated. e.g. views,spending,clicks,conversions

dimensions?array<>

Comma-separated breakdown. Omit for a single grand-total row. 'date' buckets by granularity; one entity dimension (campaign|ad|keyword) may be combined with date (except keyword, which is totals-only).

granularity?string

Used only when dimensions include 'date'.

campaign_id?number

Restrict to a single owned campaign id

ad_id?number

Restrict to a single owned ad id

page?
limit?

Max rows per page (capped server-side).

Response Body

application/json

curl -X GET "https://example.com/v1/report?from=2026-06-01T00%3A00%3A00Z&to=2026-06-30T23%3A59%3A59Z&metrics=views%2Cspending%2Cclicks"

{  "meta": {    "granularity": "daily",    "dimensions": [      "campaign",      "date"    ],    "metrics": [      "views",      "spending",      "clicks"    ],    "total": 240,    "page": 1,    "limit": 500,    "has_more": false  },  "data": [    {      "dimensions": {        "date": 1780617600,        "campaign_id": 10,        "name": "Summer Launch"      },      "metrics": {        "views": 52100,        "spending": 3421.1,        "clicks": 88      }    }  ]}