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.
cursorstringPagination 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.