---
title: "Broadcast pivot table"
method: POST
path: "/measurement/campaigns/{campaign_id}/dashboard/radio"
tags: ["Queries"]
---

# Broadcast pivot table

`POST /measurement/campaigns/{campaign_id}/dashboard/radio`

Delivers a pivot table in CSV format of campaign broadcast attribution data, broken out by line item order ID and date. (Note: if broadcast attribution is not configured for the specified campaign, this endpoint will return HTTP 401 Unauthorized.)

## Path parameters

- `campaign_id` string, required

## Request body

- object
  - `startDate` string, date, required — A start date in YYYY-MM-DD format.
  - `endDate` string, date, required — An end date in YYYY-MM-DD format.
  - `timezone` string — The timezone used to interpret the date range. Defaults to the campaign's configured time zone (or UTC).
  - `attributionWindow` 1 | 3 | 7 | 14 | 30 | 60 | 90 — How many days after an exposure a related conversion/response event may be attributed to it.
  - `attributionMethodology` 'last_touch' | 'equal_credit' | 'equal_credit_adjusted_display_weight' — Methodology option between last_touch, equal_credit, and equal_credit_adjusted_display_weight. If blank or broadcast, defaults to campaign setting (or last_touch).
  - `dateFilterSource` 'exposure' | 'event' — Export filter option by exposure date or event date. Defaults to campaign setting (or exposure).
  - `cellTowerMatching` boolean — Whether to include IP-direct matches within a pre-defined window (usually 2 hours) for impressions and conversion/response events that cannot be matched to a household via the device graph.
  - `callbackUrl` string, uri — HTTPS URL to receive completion/failure events.

## Response `200`

OK

- AsyncQuery
  - `id` string, uuid, required
  - `campaignId` string, required
  - `status` 'PENDING' | 'RUNNING' | 'COMPLETE' | 'FAILED', required
  - `callbackUrl` string, uri
  - `results` string, uri
  - `attributionWindow` 1 | 3 | 7 | 14 | 30 | 60 | 90 — How many days after an exposure a related conversion/response event may be attributed to it.
  - `startDate` string, date, required
  - `endDate` string, date, required
  - `cellTowerMatching` boolean — Whether to include IP-direct matches within a pre-defined window (usually 2 hours) for impressions and conversion/response events that cannot be matched to a household via the device graph.
  - `timeScale` 'daily' | 'weekly' | 'all' — Specifies the level at which the returned pivot data will be aggregated.
  - `geo` 'dma' | 'zip_code' — DEPRECATED; this should now be included in the `query` configuration field. Used to signify data should be pivoted by geo. When this attribute is present, the pivot data will also utilize the `timeScale` specified.

## Other responses

- `302` — Duplicate query found
- `401` — Unauthorized
- `404` — Not Found
- `422` — Unprocessable Content

---

[API](https://skmtc.net/magellan/apis/magellan-ai-api.md) · [All operations](https://skmtc.net/magellan/apis/magellan-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/magellan/magellan-ai-api/revisions/a5681791212b/schema)
