Get the delivery of a Campaign Plan
Reads what each Line Item of a Campaign Plan delivered. AdCrunch calculates the answer on each read, and it stores nothing.
For each Line Item, the answer gives:
- The sums of the spend, the impressions, the clicks, the conversions and the conversion value of the objects that the Line Item recorded, from the start that applies to today, or to the end that applies when it is in the past.
cpa,cpc,cpmandroascome from the sums. - The pacing: the spend against the spend that the budget expects by today, as a ratio. It is never a verdict.
- The target against the same metric, delivered.
asOf, the most recent day that the sums include.
A campaign holds the spend of its ad sets, so an object with a recorded ancestor is not counted again. A Line Item with no recorded object is nothing_recorded, which is not a spend of 0. AdCrunch never converts a currency: an object in another currency makes the money comparable: false.
The total reads the objects of all the Line Items again, over the window of the Campaign Plan, and counts each object once. So it can be less than the sum of the Line Items.
The MCP tool campaign_plan_delivery gives the same answer to an agent.
/context/campaign-plans/{slug}/deliveryAuthorizationBearer token · headerrequiredSend Authorization: Bearer <credential>.
Use an API key (acr_…), from the AdCrunch console under Settings → API keys.
The credential names the organization, and no operation takes an organization parameter.
See https://docs.adcrunch.dev/api/authentication.
slugstringrequiredThe delivery of each Line Item, and the total of the Campaign Plan.
campaignPlanIdstringrequiredcurrencystringrequiredlineItemsobject[]requiredShow propertiesHide properties
objectadvertiserNotOwnedobject[]requiredThe recorded objects in an ad account that the organization no longer owns. AdCrunch reads no insight of them.
Show propertiesHide properties
objectentityIdstringrequiredThe native provider id.
entityTypestringrequiredproviderstringrequiredasOfstring | nullrequiredThe most recent day that the sums include. AdCrunch reads the insights once a day.
budgetnumber | nullrequiredchannelstringrequiredmetatiktoksnapchatgoogle_searchgoogle_pmaxgoogle_displayyoutubeprogrammatic_displaylinkedinxcountedobject[]requiredThe recorded objects that the sums count: each one with no recorded ancestor.
Show propertiesHide properties
objectentityIdstringrequiredThe native provider id.
entityTypestringrequiredproviderstringrequireddeliveredobject | nullrequiredThe sums of the counted objects. Each metric comes from the sums, never from a mean of the days. null unless status is delivered.
Show propertiesHide properties
clicksnumberrequiredcomparablebooleanrequiredWhether the money is in the currency of the Campaign Plan. false when an object spent in another currency.
conversionValuenumber | nullrequiredThe sum of the conversion value, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
conversionsnumberrequiredcpanumber | nullrequiredspend / conversions, from the sums, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
cpcnumber | nullrequiredspend / clicks, from the sums, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
cpmnumber | nullrequiredspend × 1000 / impressions, from the sums, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
currenciesstring[]requiredThe account currencies of the counted objects. null is a currency that AdCrunch does not know.
impressionsnumberrequiredroasnumber | nullrequiredconversionValue / spend, from the sums, with two decimals. It needs one account currency, not the currency of the Campaign Plan.
spendnumber | nullrequiredThe sum of the spend, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
lineItemIdstringrequirednoDataYetobject[]requiredThe recorded objects with no insight in the window yet. Not a spend of 0.
Show propertiesHide properties
objectentityIdstringrequiredThe native provider id.
entityTypestringrequiredproviderstringrequiredpacingobject | nullrequiredThe spend against the spend that the budget expects to date. null with no budget, or with no start that applies.
Show propertiesHide properties
elapsedDaysnumberrequiredThe days of the window up to today. 0 before the start.
expectedSpendnumberrequiredWhole units of the Campaign Plan currency. A total budget: budget × elapsed days / window days. A daily budget: budget × elapsed days.
rationumber | nullrequiredspend / expectedSpend, with two decimals. null when the expected spend is 0, or when the spend is not known or not comparable. A ratio, never a verdict.
windowDaysnumber | nullrequiredThe days of a total window. null for a daily budget.
sincestring | nullrequiredThe first day that the sums read: the start that applies.
statusstringrequirednothing_recorded: no recorded object, which is not a spend of 0. no_data_yet: no insight of the objects yet. delivered: the sums of the counted objects.
nothing_recordedno_data_yetdeliveredtargetobject | nullrequiredThe target of the Line Item. null when it has none.
Show propertiesHide properties
deliverednumber | nullrequireddirectionstringrequiredceiling meets at or below the value (a cost). floor meets at or above it (a return).
ceilingfloormetboolean | nullrequirednull when the delivered value is null.
metricstringrequiredcpacpccpmroasvaluenumberrequiredWhole units of the Campaign Plan currency for cpa, cpc and cpm, a ratio for roas.
unitstringrequiredtotaldailyuntilstringrequiredThe last day that the sums read: today, or the end that applies when it is in the past.
slugstringrequiredtodaystringrequiredThe day that the pacing counts to, UTC.
totalobject | nullrequiredThe objects of the Line Items that delivered, read again over the window of the Campaign Plan. Each object counts once, so the total can be less than the sum of the Line Items. null when no Line Item delivered.
Show propertiesHide properties
asOfstringrequiredA calendar date, YYYY-MM-DD.
countedobject[]requiredThe objects that the total counts: across all the Line Items, each one once.
Show propertiesHide properties
objectentityIdstringrequiredThe native provider id.
entityTypestringrequiredproviderstringrequiredsincestring | nullrequiredThe first day that the total reads: the start of the plan.
untilstringrequiredThe last day: today, or the end of the plan when it is in the past.
comparablebooleanrequiredtruedeliveredobjectrequiredThe sums of the counted objects. Each metric comes from the sums, never from a mean of the days. null unless status is delivered.
Show propertiesHide properties
clicksnumberrequiredcomparablebooleanrequiredWhether the money is in the currency of the Campaign Plan. false when an object spent in another currency.
conversionValuenumber | nullrequiredThe sum of the conversion value, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
conversionsnumberrequiredcpanumber | nullrequiredspend / conversions, from the sums, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
cpcnumber | nullrequiredspend / clicks, from the sums, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
cpmnumber | nullrequiredspend × 1000 / impressions, from the sums, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
currenciesstring[]requiredThe account currencies of the counted objects. null is a currency that AdCrunch does not know.
impressionsnumberrequiredroasnumber | nullrequiredconversionValue / spend, from the sums, with two decimals. It needs one account currency, not the currency of the Campaign Plan.
spendnumber | nullrequiredThe sum of the spend, in whole units of the Campaign Plan currency. null when comparable is false: AdCrunch never converts a currency.
asOfstringrequiredA calendar date, YYYY-MM-DD.
countedobject[]requiredThe objects that the total counts: across all the Line Items, each one once.
Show propertiesHide properties
objectentityIdstringrequiredThe native provider id.
entityTypestringrequiredproviderstringrequiredsincestring | nullrequiredThe first day that the total reads: the start of the plan.
untilstringrequiredThe last day: today, or the end of the plan when it is in the past.
comparablebooleanrequiredThe Line Items do not share one unit, or an object spent in another currency. Show "not comparable", never a total.
falsedeliveredstring | nullrequirednullThe request does not match the schema of this operation: a field is missing or has the wrong type, or the body is not valid JSON. error is invalid_request, and issues names each field. Nothing was changed.
issuesobject[]requiredOne entry for each field that does not match.
Show propertiesHide properties
objectinstringrequiredThe part of the request that holds the field.
bodycookieheadersparamsquerymessagestringrequiredA sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.
pathstringrequiredA JSON Pointer into that part of the request, such as /filename. An empty string is the whole part.
errorstringrequiredA stable code for the failure. This is the field to branch on. It does not change for a given failure.
invalid_requestmessagestringrequiredA sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.
No API key, or one that does not resolve. See the security scheme. error is unauthorized.
errorstringrequiredA stable code for the failure. This is the field to branch on. It does not change for a given failure.
unauthorizedmessagestringrequiredA sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.
The organization has no active subscription. An owner subscribes at paywallUrl. error is organization_unentitled.
paywallUrlstring<uri>requiredThe page where an owner of the organization subscribes. Show it to the person.
errorstringrequiredA stable code for the failure. This is the field to branch on. It does not change for a given failure.
organization_unentitledmessagestringrequiredA sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.
The caller does not hold campaign_plan:read and observe:read. error is forbidden.
errorstringrequiredA stable code for the failure. This is the field to branch on. It does not change for a given failure.
forbiddenmessagestringrequiredA sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.
No Campaign Plan with that slug. error is not_found.
errorstringrequiredA stable code for the failure. This is the field to branch on. It does not change for a given failure.
messagestringrequiredA sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.