These are different data products. A CSV aggregate is not a raw event feed, and
a notification is not a reporting export.
1. Prove access and choose the report
For MCP, callget_status and verify the active account. Inspect the current
get_delivery schema before choosing metrics and dimensions.
- A Buyer Account uses
report: "campaign_delivery". - A Seller Account uses
report: "delivery"for seller-reported delivery, orreport: "margin"for its cumulative spread ledger. - An integrated Media Company can also read
campaign_deliveryfor its own supported advertiser, campaign, or media-buy scope. This does not grant a Seller credential general access to Buyer REST reporting.
2. Read a bounded delivery window
For a Buyer Account, callget_delivery:
range: {"lifetime": true}; a packageId filter requires
a bounded range instead. Use the
buyer or
seller reference for
the report available to your account.
Follow the returned pagination contract until all requested rows are read.
Preserve report type, account and resource scope, requested dimensions, returned
period, and the time of extraction with the results.
3. Preserve what the data means
Your consumer should carry coverage, warnings, finality, and unavailable values alongside the numbers. Do not turn a missing source value into zero or describe seller-reported delivery as independent buyer measurement. Finality alone is not evidence that an amount is eligible for billing. For Buyer campaign delivery,totals covers every matched row, not just the
current page. Do not add the repeated totals from successive pages. Mixed
currency results do not convert currencies: monetary totals can be unavailable
while counts remain usable. Keep each row’s currency with its monetary values.
Seller delivery pages are live reads. A cursor continues the query but does not
freeze a historical snapshot. If your application needs a reproducible extract,
store the completed extract and its query metadata in your own system and
label when it was read.
4. Run a repeatable extraction job
For a daily dashboard or warehouse load, your worker can:- Load the account, report, requested dimensions, and last completed date window from its checkpoint.
- Read each bounded window and all its pages into a staging destination.
- Check warnings and coverage, then publish the completed window. Use a key containing its account, dimensions, date, and currency so a retry replaces the same data rather than appending duplicates.
- Advance the checkpoint only after the destination has accepted the complete window.
- Re-read a recent overlap window according to your source’s correction and freshness needs. Retain when each extract was observed.
5. Choose CSV export or scheduled cloud delivery
For a CSV aggregate, use the current v2 REST reporting contract:downloadUrl, expiresAt, fileName, and
rowCount. Fetch the file in the consuming service; the signed URL is a bearer
credential and must not appear in logs or public dashboards. See
CSV export.
For a recurring cloud feed, follow Data Delivery:
grant the documented storage permissions, register an advertiser-scoped
credential, wait for its asynchronous validation, then attach outputs for the
supported data types and cadence. Confirm that objects arrive in your bucket
or container before treating the feed as working. Data Delivery uses v2
configuration today; it is not a generic v3 export tool.
Data Delivery credentials and outputs are full-replace arrays. Read the current
configuration and preserve entries you intend to keep before updating it.