curl --request GET \
--url https://api.apostra.com/api/v2/buyer/campaigns/{campaignId}/seller-scorecard \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.apostra.com/api/v2/buyer/campaigns/{campaignId}/seller-scorecard"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.apostra.com/api/v2/buyer/campaigns/{campaignId}/seller-scorecard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"campaignId": "<string>",
"periodStart": "<string>",
"periodEnd": "<string>",
"currency": "<string>",
"priceUnit": "impressions",
"pricePerUnits": 1,
"sellers": [
{
"storefrontId": "<string>",
"sellerName": "<string>",
"mediaBuyIds": [
"<string>"
],
"delivery": {
"value": {
"spend": 123,
"budget": 123,
"impressions": 1,
"budgetDelivered": 1,
"pace": {
"expectedSpend": 123,
"actualSpend": 123,
"ratio": 123,
"verdict": "on_pace"
}
},
"rank": 4503599627370495,
"rankedAmong": 4503599627370495,
"rankWithheld": "not_reported",
"countedBy": {
"kind": "seller"
}
},
"price": {
"value": {
"value": 1,
"unit": "impressions",
"perUnits": 1,
"units": 1,
"currency": "<string>"
},
"rank": 4503599627370495,
"rankedAmong": 4503599627370495,
"rankWithheld": "not_reported",
"countedBy": {
"kind": "seller"
}
},
"performance": {
"value": {
"goal": {
"kind": "metric",
"subject": "<string>",
"eventTypes": [
"<string>"
],
"target": {
"kind": "cost_per",
"value": 123
},
"vendor": {
"domain": "<string>",
"brandId": "<string>"
},
"metricId": "<string>"
},
"askedTarget": {
"kind": "cost_per",
"value": 123
},
"answeredTarget": {
"kind": "cost_per",
"value": 123
},
"commitment": "guaranteed",
"commitmentSource": "proposal",
"actual": {
"kind": "cost_per",
"value": 123,
"unit": "impressions",
"units": 1,
"denominatorUnits": 1,
"perUnits": 1,
"currency": "<string>"
},
"verdict": "on_track",
"judgedAgainst": "asked",
"verdictWithheld": "no_goal",
"basis": {
"kind": "seller_attested"
},
"freshness": {
"dataThrough": "<string>",
"reportingPeriodEnd": "<string>",
"nextExpectedAt": "<string>",
"notificationType": "<string>",
"sequenceNumber": 123,
"awaitingLaterReport": true,
"missingMetrics": [
"<string>"
]
},
"pace": {
"flightElapsed": 123,
"measuredFraction": 123,
"expectedSpend": 123,
"actualSpend": 123,
"ratio": 123,
"spendPerDay": 123,
"budgetPerDay": 123,
"currency": "<string>",
"verdict": "on_pace",
"verdictWithheld": "no_budget"
}
},
"rank": 4503599627370495,
"rankedAmong": 4503599627370495,
"rankWithheld": "not_reported",
"countedBy": {
"kind": "seller"
}
},
"quality": {
"value": null,
"rank": 4503599627370495,
"rankedAmong": 4503599627370495,
"rankWithheld": "not_reported",
"countedBy": {
"kind": "seller"
}
}
}
],
"moneyCoverage": {
"status": "complete",
"reason": "missing_reporting_days",
"missingDays": 4503599627370495
},
"unattributedMediaBuyIds": [
"<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": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Get campaign seller scorecard
Score each seller in a campaign on delivery, price, performance and quality, from the buyer’s own media buys in it. Each dimension carries its value, the seller’s rank on that dimension alone, and who counted it; there is no blended score. A dimension with no data is not reported and has no rank. Price is the buyer’s gross cost, including the platform fee. Covers the campaign’s whole reported life unless startDate or endDate narrow it.
curl --request GET \
--url https://api.apostra.com/api/v2/buyer/campaigns/{campaignId}/seller-scorecard \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.apostra.com/api/v2/buyer/campaigns/{campaignId}/seller-scorecard"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.apostra.com/api/v2/buyer/campaigns/{campaignId}/seller-scorecard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"campaignId": "<string>",
"periodStart": "<string>",
"periodEnd": "<string>",
"currency": "<string>",
"priceUnit": "impressions",
"pricePerUnits": 1,
"sellers": [
{
"storefrontId": "<string>",
"sellerName": "<string>",
"mediaBuyIds": [
"<string>"
],
"delivery": {
"value": {
"spend": 123,
"budget": 123,
"impressions": 1,
"budgetDelivered": 1,
"pace": {
"expectedSpend": 123,
"actualSpend": 123,
"ratio": 123,
"verdict": "on_pace"
}
},
"rank": 4503599627370495,
"rankedAmong": 4503599627370495,
"rankWithheld": "not_reported",
"countedBy": {
"kind": "seller"
}
},
"price": {
"value": {
"value": 1,
"unit": "impressions",
"perUnits": 1,
"units": 1,
"currency": "<string>"
},
"rank": 4503599627370495,
"rankedAmong": 4503599627370495,
"rankWithheld": "not_reported",
"countedBy": {
"kind": "seller"
}
},
"performance": {
"value": {
"goal": {
"kind": "metric",
"subject": "<string>",
"eventTypes": [
"<string>"
],
"target": {
"kind": "cost_per",
"value": 123
},
"vendor": {
"domain": "<string>",
"brandId": "<string>"
},
"metricId": "<string>"
},
"askedTarget": {
"kind": "cost_per",
"value": 123
},
"answeredTarget": {
"kind": "cost_per",
"value": 123
},
"commitment": "guaranteed",
"commitmentSource": "proposal",
"actual": {
"kind": "cost_per",
"value": 123,
"unit": "impressions",
"units": 1,
"denominatorUnits": 1,
"perUnits": 1,
"currency": "<string>"
},
"verdict": "on_track",
"judgedAgainst": "asked",
"verdictWithheld": "no_goal",
"basis": {
"kind": "seller_attested"
},
"freshness": {
"dataThrough": "<string>",
"reportingPeriodEnd": "<string>",
"nextExpectedAt": "<string>",
"notificationType": "<string>",
"sequenceNumber": 123,
"awaitingLaterReport": true,
"missingMetrics": [
"<string>"
]
},
"pace": {
"flightElapsed": 123,
"measuredFraction": 123,
"expectedSpend": 123,
"actualSpend": 123,
"ratio": 123,
"spendPerDay": 123,
"budgetPerDay": 123,
"currency": "<string>",
"verdict": "on_pace",
"verdictWithheld": "no_budget"
}
},
"rank": 4503599627370495,
"rankedAmong": 4503599627370495,
"rankWithheld": "not_reported",
"countedBy": {
"kind": "seller"
}
},
"quality": {
"value": null,
"rank": 4503599627370495,
"rankedAmong": 4503599627370495,
"rankWithheld": "not_reported",
"countedBy": {
"kind": "seller"
}
}
}
],
"moneyCoverage": {
"status": "complete",
"reason": "missing_reporting_days",
"missingDays": 4503599627370495
},
"unattributedMediaBuyIds": [
"<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": {}
}
}{
"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
Path Parameters
Unique identifier for the campaign
1"cmp_987654321"
Query Parameters
First day to score (YYYY-MM-DD). Defaults to the campaign's first reported day.
^\d{4}-\d{2}-\d{2}$"2026-09-01"
Last day to score (YYYY-MM-DD). Defaults to today.
^\d{4}-\d{2}-\d{2}$"2026-09-30"
Response
Get campaign seller scorecard
Each seller in a campaign scored on delivery, price, performance and quality, from the buyer's own media buys. Four scores, never one: each dimension is ranked on its own.
First day scored.
Last day scored.
The advertiser currency money is in. Null when nothing was reported.
The unit every seller's price is in: the primary goal's unit, or impressions.
impressions, clicks, views, completedViews, conversions, leads, viewableImpressions 1000 for impressions (a price per thousand), 1 otherwise.
1 One row per seller with a live media buy in the campaign, or a buy that delivered in the period; most spend first.
Show child attributes
Show child attributes
Whether the reporting store holds every day the period covers. When it is not complete, spend is understated, so every seller reads delivery and price as not reported.
Show child attributes
Show child attributes
Media buys whose products span more than one Storefront, so they belong to no single seller and are not scored.