Ads API.
Connect to every ad platform through Cherrie’s simple API or MCP.

Cherrie PixelAccounts, campaigns, ad groups, ads. Read and write, every platform.
The same four resources on every platform. Everything the Cherrie dashboard does runs through these endpoints—no separate or legacy path off to the side.
- GET
Accounts
/accounts
Every connected ad account, with its currency and timezone. Its id is account_id on everything else.
- GETPOSTPATCH
Campaigns
/campaigns
Create one, or a campaign and its first ad group in one call. Patch name, status and budget by id. Duplicate with its children.
- GETPOSTPATCH
Ad groups
/ad-groups
Meta ad set, X line item, Google ad group — one noun everywhere. Budget, bids, pixel event, schedule and audience live here.
- GETPOSTPATCH
Ads
/ads
Creative from a template or inline, uploaded for you. Patch name, status and schedule. Removing one is status: delete.
Response
{
"data": {
"meta": [
{
"id": "104829375610284",
"name": "Acme",
"currency": "USD",
"timezone": "America/Los_Angeles"
}
],
"google": [ … ],
"tiktok": [ … ]
}
}One shape in, one shape out
Send one request. We speak every platform.
Send one request with the same fields everywhere—campaigns, budgets, status, and spend in one format. We translate it for each platform, make the calls, and return the same structure back, keyed by channel.
POST /api/v1/campaigns
{
"account_id": "104829375610284",
"name": "Spring launch",
"objective": "sales",
"daily_budget": 50
}
MetaGoogle Ads
TikTok
X
Snapchat
Pinterest
Reddit
LinkedInChatGPT
{
"data": {
"platform": "meta",
"campaign_id": "120918273645019283",
"name": "Spring launch",
"status": "paused",
"daily_budget": 50
}
}Analytics
Every number, one schema.
GET /analytics, GET /summary, or include=metrics on any list. Spend, impressions, clicks and results at account, campaign, ad group or ad level — total or by day — ranked by spend across channels.
| Campaign | Last 7 days | Spend | Purchases |
|---|---|---|---|
| $1,840.20 | 62 | ||
| $920.50 | 41 | ||
| $610.00 | 19 | ||
| $340.75 | 11 | ||
| $185.00 | 6 |
spend in major units · currency on the account · days in the account’s timezone · page.platform_errors when one vendor fails
From anywhere
Cherrie API and MCP. Use with any AI.
One key works everywhere. Call it over REST, hand it to Claude or Cursor as an MCP server, or generate a client from the OpenAPI document.
REST
Any language, one key.
A cherrie_sk_… bearer token identifies you and the brand. JSON in, JSON out, 300 requests a minute.
GET /api/v1/campaigns?include=metrics
Host: cherrie.ai
Authorization: Bearer cherrie_sk_…MCP
Point an agent at it.
The same API is an MCP server. Every endpoint is a tool; writes are marked destructive so the client confirms before spending.
{ "mcpServers": { "cherrie": {
"url": "https://cherrie.ai/api/v1/mcp",
"headers": {
"Authorization": "Bearer cherrie_sk_…"
}
} } }OpenAPI
Generate a client.
An OpenAPI 3.1 document describes every route, field and error — the same source the in-app docs and try panel are built from.
GET /api/v1/openapi.json
# feed it to your codegen, your
# gateway, or your agent's tool loaderRules that hold on every platform.
The API is small on purpose. Learn these once; the difficulty stays inside the providers.
- Money is major units. 12.34 means $12.34 on every request and response. Never cents, never micros. Currency lives on the account.
- Status is ours. active, paused, deleted, archived, pending, unknown — on every platform alike. New campaigns start paused.
- Patch by id. Send only the fields that change. Campaign and ad group patches don't need an account or platform.
- Lists are keyed by platform. limit applies per platform, results rank by spend, and page.next_cursor pages each lane.
- Partial failures are reported, not hidden. If one vendor errors, the rest still return and page.platform_errors says who didn't.
- Impossible calls fail here. validation_error or unsupported_operation with a message you can act on — never a vendor stack trace.
- Unknown query params are a 400. A typo is never silently dropped.
- Days are calendar days. In the account's timezone — the same day Ads Manager shows.
Everything the dashboard can do.
Base URL /api/v1. Same endpoints the Cherrie app runs on.
/accounts
Connected ad accounts, with currency, timezone and lifetime spend.
/campaigns
Native campaigns; create with a first ad group; duplicate with children.
/ad-groups
Budgets, bids, pixel events, schedules and audiences.
/ads
Ads from templates or inline creative, with previews.
/analytics
Spend, impressions, clicks and results at any level, total or by day.
/summary
One read of a window with the math done — ads and store together.
/ad-templates
Reusable copy, URL and page for new ads.
/media
Upload images and video once, use them on any platform.
/audiences
Named audiences to target or exclude.
/pixels
Pixels and their events — the ids an ad group optimizes for.
/customers
Your people, their tags, value and activity.
/shopify
The connected store's sales report, by store, product or type.