> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apostra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reporting

> Read delivery metrics and hourly event counts for advertisers and campaigns

Reporting endpoints return delivery numbers — impressions, spend, clicks, conversions, and derived rates — rolled up across the **advertiser → campaign → media buy → package** tree, plus hourly counts for events tracked through your own pixel or event sources.

`GET /reporting/metrics` is the single, day-grain endpoint for delivery rollups and CSV exports. `GET /advertisers/{advertiserId}/events/summary` is the hour-grain endpoint for raw event counts. For the full model — the hierarchy, available metrics, CSV export, and how delivery data lands in the reporting pipeline — see the [Reporting overview guide](/v2/guides/reporting-overview).

Reporting preserves the [channel group](/v2/buyer/campaigns/channel-groups)
that compiled into each media buy. Summary responses return `channelGroup` on
each media buy, time-series responses return `channelGroupId` and
`channelGroupName` on each row, and CSV exports append both fields. Legacy or
ungrouped buys return `null` in JSON and blank CSV fields; Apostra does not
infer a group from delivery. REST callers can filter with `channelGroupId`.
To group an agent-side campaign-delivery report, use V3 `get_delivery` with the
`channel_group` dimension and optional `filters.channelGroupId`.

For a buyer agent using the V3 `get_delivery` query, campaign delivery can also
group rows by an account-owned label axis with `dimensions: ["labels.<key>"]`. The row uses the current labels on the campaign and its
advertiser; when neither has a value for that dimension it is grouped as
`"Unlabeled"`. Labels are resolved when the report is read, so changing a
label reorganizes the full delivery history rather than only future delivery.
An unknown, retired, or inapplicable key is rejected with the account's
available dimensions.

All requests use the base URL `https://api.apostra.com/api/v2/buyer` and a `Authorization: Bearer $SCOPE3_API_KEY` header.

## Task Reference

<CardGroup cols={2}>
  <Card title="Get reporting metrics" href="/v2/buyer/reporting/tasks/get-reporting-metrics" icon="chart-line">
    `GET /reporting/metrics` — hierarchical or time-series delivery metrics
  </Card>

  <Card title="Get event summary" href="/v2/buyer/reporting/tasks/get-event-summary" icon="clock">
    `GET /advertisers/:id/events/summary` — hourly event counts by type
  </Card>

  <Card title="Reporting overview guide" href="/v2/guides/reporting-overview" icon="book">
    The hierarchy, metrics, CSV export, and delivery flow
  </Card>

  <Card title="All reporting tasks" href="/v2/buyer/reporting/tasks" icon="list-check">
    Per-operation reference
  </Card>
</CardGroup>
