campaigns
permission. See Management API overview for base URL,
authentication, and error format.
All routes are org-scoped through the key. You can only read or mutate campaigns
owned by a user in your organization.
Concepts
A campaign is the top-level container (name, brand, objective, schedule). Line items are the deliverable ad units under a campaign. In the database, line items are stored in theads table; the API uses the term “line item” throughout.
There is no
org_id field on campaigns. Tenancy is enforced through
campaigns.user_id and the org_users membership table.
Typical workflow
1
Validate (optional)
POST /v1/advertiser/campaigns/validate checks campaign and line item fields
without writing.2
Create
Create a campaign alone (
POST /campaigns), a line item under an existing
campaign (POST /campaigns/:id/line-items), or both atomically
(POST /campaigns/compose).3
Configure line items
Set budget, bids, targeting, and attach creatives on the line item subresource
routes.
4
Activate
POST /v1/advertiser/campaigns/:id/activate validates the campaign has at least
one line item and sets the campaign and its line items to active.compose and duplicate run in a single database transaction. If any step fails,
nothing is left behind.
Endpoints
Create a campaign
name, brand_name, user_id.
Response (201):
Compose a campaign and line item
Usecompose when you want both records created together:
201):
List and update line items
List line items under a campaign:Activate
Activation requires at least one line item. The campaign and all its line items are set toactive:
Value normalization
The API accepts common product terms and maps them to database constraints:
Campaigns allow only
active, paused, and completed. There is no draft
status for campaigns; newly created campaigns start as paused. Line items may
remain draft until activation.
Errors
OpenAPI reference
Field-level schemas (CampaignInput, LineItemInput, and others) live in the
machine-readable contract:

