Introduction
What the AdCrunch REST API does, when to use it instead of MCP, and how to make your first request with an API key.
The AdCrunch REST API gives your own code the access that an AI agent has over MCP, and four operations more: it reads the mutation history, it lists the Personas of a Brand, and it renames and deletes an Asset. An advertiser is an ad account that your organization connects to AdCrunch. The API reads the campaigns and the performance of your advertisers. It changes what runs on them. It stores the context that your agents read. It stores the images and videos that your ads use.
Four APIs, one origin
The four APIs answer at one origin, https://api.adcrunch.dev. The first segment of a path names the API.
| API | Path | What it does |
|---|---|---|
| Observe | /observe |
Reads campaigns, ad groups, ads, creatives, asset groups, and their Insights. |
| Mutations | /mutations |
Changes what runs on an advertiser: a status, a budget, or a new object. It records each change. |
| Context | /context |
Stores Skills, Brands, Personas, Documents, and Campaign Plans. |
| Assets | /assets |
Stores your images and videos, and places them in the library of an advertiser. |
One credential works on the four APIs. See Authentication.
Not every provider supports every operation. What each provider supports is the one table for each provider.
HTTP or MCP?
The two surfaces run the same code. They use the same words, and they obey the same permissions. Choose by who calls.
- MCP is for an AI agent in a conversation: Claude, ChatGPT, or Cursor. A person signs in through the browser, and the agent acts for that person. See Connect to AI agents.
- The REST API is for code that you write: a script, a scheduled job, or a backend service. No person is present to sign in, so the code sends an API key.
Your first request
Create an API key in the console, under Settings → API keys. Then list the campaigns of each of your advertisers:
curl https://api.adcrunch.dev/observe/campaigns \
-H "Authorization: Bearer $ADCRUNCH_API_KEY"
The answer is one page of campaigns, from all your advertisers and all your providers:
{
"data": [
{
"provider": "meta",
"advertiserId": "acc_1203456789012345",
"type": "campaign",
"id": "120210000000000",
"name": "Spring sale",
"status": "ACTIVE",
"currency": "EUR",
"budget": 50
}
],
"pagination": { "limit": 500, "offset": 0, "total": 1 },
"source": "store"
}
This row is shorter than a real row. List campaigns shows each field.
What the API does not do
No field or permission turns these limits off.
- A create never starts spend. Each campaign, ad set, and ad that the API creates starts paused.
- The API deletes nothing at a provider. It archives an object instead.
- The API acts only on your organization. The credential names the organization. No parameter can name a different one.
Make a change explains the first two limits.
Read the API as OpenAPI
The whole API is one OpenAPI 3 document at https://api.adcrunch.dev/openapi.json. Give it to a code generator or to an API client. Each API also publishes its own document:
https://api.adcrunch.dev/openapi/observe.jsonhttps://api.adcrunch.dev/openapi/mutations.jsonhttps://api.adcrunch.dev/openapi/context.jsonhttps://api.adcrunch.dev/openapi/assets.json
Pricing
The pricing page states what each plan includes.