curl --request GET \
--url https://api.interchange.io/api/v2/storefront/reporting/metrics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/reporting/metrics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.interchange.io/api/v2/storefront/reporting/metrics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"advertisers": [
{
"advertiserId": "<string>",
"advertiserName": "<string>",
"metrics": {
"impressions": 4503599627370495,
"spend": 1,
"clicks": 4503599627370495,
"views": 4503599627370495,
"completedViews": 4503599627370495,
"conversions": 4503599627370495,
"leads": 4503599627370495,
"videoCompletions": 4503599627370495,
"conversionValue": 1,
"ecpm": 123,
"cpc": 123,
"ctr": 123,
"completionRate": 123,
"cpa": 123,
"roas": 123
},
"mediaBuys": [
{
"mediaBuyId": "<string>",
"name": "<string>",
"status": "<string>",
"budget": 123,
"inventorySourceId": "<string>",
"metrics": {
"impressions": 4503599627370495,
"spend": 1,
"clicks": 4503599627370495,
"views": 4503599627370495,
"completedViews": 4503599627370495,
"conversions": 4503599627370495,
"leads": 4503599627370495,
"videoCompletions": 4503599627370495,
"conversionValue": 1,
"ecpm": 123,
"cpc": 123,
"ctr": 123,
"completionRate": 123,
"cpa": 123,
"roas": 123
},
"packages": [
{
"packageId": "<string>",
"productId": "<string>",
"productName": "<string>",
"metrics": {
"impressions": 4503599627370495,
"spend": 1,
"clicks": 4503599627370495,
"views": 4503599627370495,
"completedViews": 4503599627370495,
"conversions": 4503599627370495,
"leads": 4503599627370495,
"videoCompletions": 4503599627370495,
"conversionValue": 1,
"ecpm": 123,
"cpc": 123,
"ctr": 123,
"completionRate": 123,
"cpa": 123,
"roas": 123
}
}
]
}
]
}
],
"totals": {
"impressions": 4503599627370495,
"spend": 1,
"clicks": 4503599627370495,
"views": 4503599627370495,
"completedViews": 4503599627370495,
"conversions": 4503599627370495,
"leads": 4503599627370495,
"videoCompletions": 4503599627370495,
"conversionValue": 1,
"ecpm": 123,
"cpc": 123,
"ctr": 123,
"completionRate": 123,
"cpa": 123,
"roas": 123
},
"periodStart": "<string>",
"periodEnd": "<string>"
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Get storefront reporting
Get reporting metrics for every media buy the Merchandising Agent participates in through the Storefront inventory sources. The Storefront does not own the underlying media buys; reporting is visible because the Merchandising Agent is the ADCP party to those transactions. The response is hierarchical for view=summary, source-aware flat leaf-by-day rows for view=timeseries, or a signed CSV download descriptor when download=true.
curl --request GET \
--url https://api.interchange.io/api/v2/storefront/reporting/metrics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/reporting/metrics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.interchange.io/api/v2/storefront/reporting/metrics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"advertisers": [
{
"advertiserId": "<string>",
"advertiserName": "<string>",
"metrics": {
"impressions": 4503599627370495,
"spend": 1,
"clicks": 4503599627370495,
"views": 4503599627370495,
"completedViews": 4503599627370495,
"conversions": 4503599627370495,
"leads": 4503599627370495,
"videoCompletions": 4503599627370495,
"conversionValue": 1,
"ecpm": 123,
"cpc": 123,
"ctr": 123,
"completionRate": 123,
"cpa": 123,
"roas": 123
},
"mediaBuys": [
{
"mediaBuyId": "<string>",
"name": "<string>",
"status": "<string>",
"budget": 123,
"inventorySourceId": "<string>",
"metrics": {
"impressions": 4503599627370495,
"spend": 1,
"clicks": 4503599627370495,
"views": 4503599627370495,
"completedViews": 4503599627370495,
"conversions": 4503599627370495,
"leads": 4503599627370495,
"videoCompletions": 4503599627370495,
"conversionValue": 1,
"ecpm": 123,
"cpc": 123,
"ctr": 123,
"completionRate": 123,
"cpa": 123,
"roas": 123
},
"packages": [
{
"packageId": "<string>",
"productId": "<string>",
"productName": "<string>",
"metrics": {
"impressions": 4503599627370495,
"spend": 1,
"clicks": 4503599627370495,
"views": 4503599627370495,
"completedViews": 4503599627370495,
"conversions": 4503599627370495,
"leads": 4503599627370495,
"videoCompletions": 4503599627370495,
"conversionValue": 1,
"ecpm": 123,
"cpc": 123,
"ctr": 123,
"completionRate": 123,
"cpa": 123,
"roas": 123
}
}
]
}
]
}
],
"totals": {
"impressions": 4503599627370495,
"spend": 1,
"clicks": 4503599627370495,
"views": 4503599627370495,
"completedViews": 4503599627370495,
"conversions": 4503599627370495,
"leads": 4503599627370495,
"videoCompletions": 4503599627370495,
"conversionValue": 1,
"ecpm": 123,
"cpc": 123,
"ctr": 123,
"completionRate": 123,
"cpa": 123,
"roas": 123
},
"periodStart": "<string>",
"periodEnd": "<string>"
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Authorizations
API key or access token
Query Parameters
Filter to media buys flowing through a single inventory source (storefront_inventory_source.source_id). When omitted, includes every inventory source on the storefront.
Start date in ISO format (YYYY-MM-DD)
^\d{4}-\d{2}-\d{2}$"2026-01-01"
End date in ISO format (YYYY-MM-DD)
^\d{4}-\d{2}-\d{2}$"2026-01-31"
Number of days to include (default: 7, min: 1, max: 90).
1 <= x <= 907
Response format: "summary" for hierarchical advertiser/media-buy/package breakdown, "timeseries" for flat per-day rows.
summary, timeseries When true, generates a CSV file and returns a signed download URL instead of JSON data
When true, returns auto-generated demo data instead of querying real data sources
When true, timeseries rows are split by each contributing inventory source. The default preserves the legacy media-buy/package/date row grain.
true, false Response
Get storefront reporting
- Option 1
- Option 2
- Option 3
Hierarchical storefront reporting response: advertiser → media buy → package
Advertiser-level reporting data
Show child attributes
Show child attributes
Aggregated totals across all advertisers
Show child attributes
Show child attributes
Start of the reporting period (YYYY-MM-DD)
^\d{4}-\d{2}-\d{2}$End of the reporting period (YYYY-MM-DD)
^\d{4}-\d{2}-\d{2}$