AdCrunch API
Every AdCrunch API, in one document. Each API also publishes its own, at /openapi/<name>.json.
One origin serves the four, and the first segment of a path names the API. /observe reads the campaigns, the ads and the Insights of the ad accounts your organization connects. /mutations changes what runs on them. /context holds the Skills, Brands, Personas, Documents and Campaign Plans an organization writes down for its agents. /assets holds your images and videos, and places them in the library of an ad account.
One credential works on the four — see the security scheme.
The guide explains what these operations share: authentication, the failure shape, and the conventions for ids, money, time and pagination. It also describes three flows that span several operations: a change, an upload, and an edit that does not overwrite.
Start at https://docs.adcrunch.dev/api/introduction.
https://api.pr-701.adcrunch.devCampaigns
The campaigns of your advertisers. Read every account of your organization at once, or one account on its own. A campaign is a campaign at every provider, so one listing spans them all.
- GETStored read: List campaigns
/observe/campaigns - GETLive read: List an advertiser’s campaigns
/observe/{advertiserId}/campaigns - GETLive read: Get one campaign
/observe/{advertiserId}/campaigns/{id}
Ad groups
The ad groups of your advertisers. One concept and three words: a Meta ad set, a TikTok ad group and a Google Ads ad group. Every row keeps the word its own provider writes, in type. Performance Max campaigns have no ad groups — read the asset groups instead.
- GETStored read: List ad groups
/observe/ad-groups - GETLive read: List an advertiser’s ad groups
/observe/{advertiserId}/ad-groups - GETLive read: Get one ad group
/observe/{advertiserId}/ad-groups/{id}
Ads
The ads of your advertisers. An ad at Meta and TikTok; at Google Ads an ad_group_ad, the link resource whose id is the composite {adGroupId}~{adId}. Narrow by adGroupId for one ad group, or by campaignId for every ad of a campaign. Performance Max campaigns have no ads.
- GETStored read: List ads
/observe/ads - GETLive read: List an advertiser’s ads
/observe/{advertiserId}/ads - GETLive read: Get one ad
/observe/{advertiserId}/ads/{id}
Creatives
The creatives of your advertisers: the image or video, the headline, the body copy and the call to action a provider assembles for an ad. A Creative is account-level, and Meta is the one provider that has one — TikTok embeds its creative material in the Ad itself, and Google Ads keeps its own on the ad_group_ad link resource. A Creative is not an Asset: an Asset is a source media file your organization owns.
- GETStored read: List creatives
/observe/creatives - GETLive read: List an advertiser’s creatives
/observe/{advertiserId}/creatives - GETLive read: Get one creative
/observe/{advertiserId}/creatives/{id}
Asset groups
The asset groups of your advertisers. Performance Max’s delivery container, and Google Ads only. A Performance Max campaign has no ad groups and no ads — the asset group holds what its automation assembles into placements. A child of a campaign and a sibling of an ad group.
- GETStored read: List asset groups
/observe/asset-groups - GETLive read: List an advertiser’s asset groups
/observe/{advertiserId}/asset-groups - GETLive read: Get one asset group
/observe/{advertiserId}/asset-groups/{id}
Insights
Aggregated metrics for any level: advertiser, campaign, ad group or ad. The metrics include spend, impressions, clicks, reach and conversions. Group the rows into days, weeks or months, and break them down by provider, by advertiser or by entity type. A date range is required.
Mutations
Start a change on an advertiser, poll the one you started, and read the organization history.
Skills
Your organization’s ad-ops playbooks. List them, read one, or write one. The slug is the handle an agent uses.
- GETList the Skills
/context/skills - POSTCreate a Skill
/context/skills - GETGet a Skill by slug
/context/skills/{slug} - DELETEDelete a Skill
/context/skills/{slug} - PATCHUpdate a Skill
/context/skills/{slug}
Brands
Your organization’s brand context: identity, voice, guidelines and messaging, written as markdown. A list gives you the name, the description, the logo and which of the four sections carry prose. Read one Brand to get its narrative. The slug is the handle an agent uses.
- GETList the Brands
/context/brands - POSTCreate a Brand
/context/brands - GETGet a Brand by slug
/context/brands/{slug} - DELETEDelete a Brand
/context/brands/{slug} - PATCHUpdate a Brand
/context/brands/{slug} - GETList a Brand's advertisers
/context/brands/{slug}/advertisers - POSTAttach an advertiser
/context/brands/{slug}/advertisers - DELETEDetach an advertiser
/context/brands/{slug}/advertisers/{advertiserId}
Personas
The audiences a Brand speaks to, described as people. A Persona belongs to one Brand only, and you address it through that Brand. Its handle is thus the pair of slugs, and two Brands can each hold a loyalists. Two Brands that describe the same real person hold two Personas, and not one shared Persona.
- GETList a Brand's Personas
/context/brands/{slug}/personas - POSTCreate a Persona
/context/brands/{slug}/personas - GETGet a Persona
/context/brands/{slug}/personas/{personaSlug} - DELETEDelete a Persona
/context/brands/{slug}/personas/{personaSlug} - PATCHUpdate a Persona
/context/brands/{slug}/personas/{personaSlug}
Documents
Files attached to a Brand, such as a logo or a guidelines PDF. The bytes do not go through this API: reserve the upload, send the bytes to the URL you get back, then finalize. A Document is reference material that an agent reads. It never leaves AdCrunch, and this is what makes it different from an Asset.
- GETList a Brand's documents
/context/brands/{slug}/documents - POSTStart a document upload
/context/brands/{slug}/documents - POSTFinalize a document upload
/context/brands/{slug}/documents/{documentId}/finalize - GETGet a document
/context/brands/{slug}/documents/{documentId} - DELETEDelete a document
/context/brands/{slug}/documents/{documentId}
Campaign Plans
What your organization intends to run, before it buys: on which channels, for whom, for how much, and over what period. A Campaign Plan is not a provider campaign. It belongs to AdCrunch, and it comes before any provider. The campaigns that a Campaign Plan later produces are in the Observe API. Write each amount in whole units of the currency of that Campaign Plan.
- GETList the Campaign Plans
/context/campaign-plans - POSTCreate a Campaign Plan
/context/campaign-plans - GETGet a Campaign Plan
/context/campaign-plans/{slug} - DELETEDelete a Campaign Plan
/context/campaign-plans/{slug} - PATCHUpdate a Campaign Plan
/context/campaign-plans/{slug} - POSTApprove a Campaign Plan
/context/campaign-plans/{slug}/approve
Line Items
The rows of a Campaign Plan. One Line Item is one thing you buy. It is coarser than an ad set: it holds the envelope of an intent, and it can produce more than one provider object. Therefore it holds only what is the same for all of them. A Line Item has no handle of its own. Address it through its Campaign Plan.
- POSTAdd a Line Item
/context/campaign-plans/{slug}/line-items - DELETEDelete a Line Item
/context/campaign-plans/{slug}/line-items/{lineItemId} - PATCHUpdate a Line Item
/context/campaign-plans/{slug}/line-items/{lineItemId} - POSTValidate a Line Item
/context/campaign-plans/{slug}/line-items/{lineItemId}/validate - GETCheck a Line Item’s execution readiness
/context/campaign-plans/{slug}/line-items/{lineItemId}/readiness - POSTRecord what a Line Item spawned
/context/campaign-plans/{slug}/line-items/{lineItemId}/executions
Assets
An organization’s source media. Reserve an upload, transfer the bytes directly to storage, then finalize — which is where what actually landed is validated.
- GETList the organization Assets
/assets - POSTReserve an Asset and mint an upload URL
/assets/uploads - POSTFinalize an uploaded Asset
/assets/{id}/finalize - GETGet one Asset
/assets/{id} - DELETEDelete an Asset
/assets/{id} - PATCHRename an Asset
/assets/{id} - POSTRegister an Asset to an advertiser
/assets/{id}/registrations