Skip to content

Aggregate Report ​

Returns metrics grouped by the dimensions you choose — like a pivot table over your impression data. Use it for daily revenue summaries, per-ad-unit fill rates, or country/format breakdowns without pulling raw impressions.

text
POST /reporting/v1/publisher/aggregate
Authorization: Bearer <your-reporting-key>
Content-Type: application/json

Request Body ​

FieldTypeDefaultDescription
publisher_idstringrequiredYour publisher ID.
date_rangeobjectrequired{ "start", "end" } — ISO 8601 UTC datetimes or bare dates (e.g. 2026-07-06), inclusive; max span 31 days. A bare start expands to 00:00:00 and a bare end to 23:59:59 UTC, so { "start": "2026-07-06", "end": "2026-07-06" } covers the full day.
metricsstring[]requiredMetrics to compute. See Metrics.
dimensionsstring[][]Dimensions to group by. See Dimensions. Omit to get a single grand-total row.
dimension_filtersobject[][]Row filters, e.g. { "dimension": "COUNTRY", "values": ["US", "GB"] }. Filters combine with AND across dimensions, OR within values.
sort_orderstringascasc or desc, sorted by the requested dimensions in order.
limitint1000Page size, max 5000.
cursorstring—Pagination cursor from a prior response. See Pagination.

Dimensions ​

DimensionRow valueDescription
DATE"2026-07-14"UTC calendar day.
AD_UNIT_ID"SIM-RWD-A3F9K2BX"Ad unit ID.
AD_UNIT_NAME"Daily Reward Video"Ad unit name, as set in the dashboard. Filter values are case-insensitive
AD_FORMAT"rewarded"rewarded, interstitial, or native.
COUNTRY"US"ISO 3166-1 alpha-2.
OS"ios"ios or android.
STATUS"final"estimated or final. See Estimated vs. final revenue.

Any dimension you omit is summed across. Response rows include only the dimensions and metrics you requested.

Metrics ​

Metrics follow the delivery funnel: requested → served → shown.

MetricTypeDefinition
REQUESTSintAd requests: SERVED + no-fills.
SERVEDintAds returned to the app, whether or not they were later displayed.
FILL_RATEnumberSERVED / REQUESTS, from 0 to 1. null when there are no requests.
IMPRESSIONSintAds actually displayed to the user.
SHOW_RATEnumberIMPRESSIONS / SERVED, from 0 to 1. null when nothing was served.
CLICKSintAd clicks.
REVENUEnumberYour revenue in USD. Earned on impressions — served-but-never-shown ads contribute nothing.
AVG_CPMnumberBlended eCPM: REVENUE × 1000 / IMPRESSIONS. null when there are no impressions.

Example: Daily Revenue Summary ​

json
{
  "publisher_id": "pub_0a1b2c3d",
  "date_range": { "start": "2026-07-14", "end": "2026-07-20" },
  "dimensions": ["DATE"],
  "metrics": ["REVENUE", "IMPRESSIONS", "AVG_CPM"]
}
json
{
  "rows": [
    { "date": "2026-07-14", "metrics": { "revenue": 482.0, "impressions": 40000, "avg_cpm": 12.05 } },
    { "date": "2026-07-15", "metrics": { "revenue": 558.9, "impressions": 45000, "avg_cpm": 12.42 } }
  ],
  "pagination": { "next_cursor": null, "has_more": false }
}

Example: Revenue by Country and Format ​

json
{
  "publisher_id": "pub_0a1b2c3d",
  "date_range": { "start": "2026-07-14", "end": "2026-07-20" },
  "dimensions": ["COUNTRY", "AD_FORMAT"],
  "metrics": ["REVENUE", "IMPRESSIONS"],
  "dimension_filters": [
    { "dimension": "COUNTRY", "values": ["US", "GB"] }
  ],
  "sort_order": "desc"
}
json
{
  "rows": [
    { "country": "US", "ad_format": "rewarded", "metrics": { "revenue": 322.14, "impressions": 18200 } },
    { "country": "US", "ad_format": "interstitial", "metrics": { "revenue": 96.35, "impressions": 9400 } },
    { "country": "GB", "ad_format": "rewarded", "metrics": { "revenue": 51.66, "impressions": 4100 } }
  ],
  "pagination": { "next_cursor": null, "has_more": false }
}

Example: Delivery Funnel by Ad Unit ​

json
{
  "publisher_id": "pub_0a1b2c3d",
  "date_range": { "start": "2026-07-14", "end": "2026-07-20" },
  "dimensions": ["AD_UNIT_ID"],
  "metrics": ["REQUESTS", "SERVED", "FILL_RATE", "IMPRESSIONS", "SHOW_RATE"]
}
json
{
  "rows": [
    { "ad_unit_id": "SIM-INT-77Q4MNPC", "ad_unit_name": "Chat Interstitial", "metrics": { "requests": 30000, "served": 26400, "fill_rate": 0.88, "impressions": 23760, "show_rate": 0.9 } },
    { "ad_unit_id": "SIM-RWD-A3F9K2BX", "ad_unit_name": "Daily Reward Video", "metrics": { "requests": 52000, "served": 40560, "fill_rate": 0.78, "impressions": 34476, "show_rate": 0.85 } }
  ],
  "pagination": { "next_cursor": null, "has_more": false }
}

Reconciling estimated and final revenue

Group by STATUS (or filter to final) when reconciling payouts. If you group by STATUS, a dimension key's final row supersedes its estimated row as settlement completes (7 days after serve) — overwrite by key when syncing, don't append.