AdCritter Platform Overview

AdCritter is a self-service advertising platform for creating and managing digital advertising campaigns across multiple channels including Connected TV (CTV), Digital Roadside Billboards (digital out-of-home or DooH), Internet Display & Native, and Streaming Audio (streaming apps, radio, and podcasts).

The AdCritter API allows developers to integrate all of this functionality into their own applications. Specifically, the API provides the ability to create and manage advertiser accounts, campaigns, ads (advertising assets/creatives), geographic & audience targeting, budget allocation and delivery configuration across all media channels. It also provides the ability to retrieve performance analytics for reporting purposes.

Getting started

When building apps
A typical end-to-end flow for getting your first campaign live. Each step lists the relevant endpoints; see the entity reference below for full request and response schemas.
1
Authenticate
Send your API key in the X-Api-Key header on every request. Keys are issued from your AdCritter workspace and never expire on a schedule - rotate by creating a new key.
X-Api-Key: ac_live_{your_key}
2
Resolve an advertiser
Decide how your app handles advertisers. Apps that give each user their own advertiser call POST /v1/advertisers at signup and store the returned ID; apps where users join existing advertisers call GET /v1/advertisers to list the ones they can access.
POST /v1/advertisers | GET /v1/advertisers
3
Create a campaign
POST /v1/advertisers/{advertiserId}/campaigns with a name and optional type (internet, native, tv, billboard, or audio - defaults to 'internet'). The campaign is created in 'Saved For Later' status with no budget or targeting.
POST /v1/advertisers/{advertiserId}/campaigns
4
Upload ads
POST /v1/advertisers/{advertiserId}/ads/{type} as multipart/form-data with the campaign ID and a binary file field. Image, video, and audio uploads are capped at 5MB.
POST /v1/advertisers/{advertiserId}/ads/{type}
5
Launch the campaign
POST /v1/advertisers/{advertiserId}/campaigns/{campaignId}/launch to move the campaign from 'Saved For Later' to live. At least one approved ad is required.
POST /v1/advertisers/{advertiserId}/campaigns/{campaignId}/launch
6
Monitor performance
GET /v1/advertisers/{advertiserId}/reports/snapshot returns pre-computed pacing for the current billing interval. GET /reports/campaigns/{campaignId} returns detailed metrics with a daily time series for a date range.
GET /v1/advertisers/{advertiserId}/reports/snapshot

API reference

Entity hierarchy

organization
Top-level container representing a business or agency.
advertiser
A client or brand within an organization. Owns campaigns, ads, media assets, and billing configuration. An organization can own multiple advertisers; agencies manage one per client.
campaign
An advertising campaign across internet, native, TV, billboard, or audio channels with a budget, date range, optional geo targeting (states, cities, DMAs, or zip codes - one tier per campaign), audience configuration, delivery settings, and a status lifecycle (Saved For Later → Live → Campaign Ended).
ad
An ad asset attached to a campaign - display image, native ad, TV video, billboard design, or audio file.
media-asset
A reusable creative stored in the account-level asset library. Serves as a template - ads created from a media asset receive a snapshot of the asset's properties at creation time.
geo
Geographic targeting for a campaign - supports states, cities, DMAs, or zip codes (one tier per campaign, cannot mix).
audience
Audience configuration defines who sees ads. Two types: demographic (geo + optional segments) and retargeting.
settings
Campaign delivery settings including dayparting, frequency caps, and platform-managed optimization.
budget
Budget allocation configured at campaign creation - amount, frequency (monthly or total), start date, and optional end date.
report
Performance metrics for campaigns - impressions, clicks, spend, CTR, CPC, CPM.
blueprint
AI-powered market research containing structured market analysis and AI-generated persona profiles. Foundation for one or more marketing plans.
plan
AI-generated marketing plan created from a completed blueprint. Contains strategy summaries, campaign recommendations, and viewable sections.
domain
Ad delivery domains - the curated websites where internet display campaigns serve impressions.

Entity relationships

organization > advertiser
An organization contains one or more advertisers
advertiser > campaign
An advertiser contains campaigns
campaign > ad
A campaign contains ads
campaign > geo
A campaign has optional geo targeting (one tier per campaign)
campaign > audience
A campaign has audience configuration
campaign > settings
A campaign has delivery settings
campaign > budget
A campaign has budget allocation
campaign > report
Campaign performance is available through report endpoints
blueprint > plan
A blueprint serves as the foundation for one or more plans
advertiser > plan
An advertiser can have blueprints and marketing plans
advertiser > media-asset
An advertiser owns media assets in their asset library
media-asset > ad
A media asset can be used to create ads - the ad receives a snapshot of the asset's properties

Authentication

API Key
X-Api-Key
format: ac_live_{base64key}
API keys are hashed with SHA256 server-side. The 'ac_live_' prefix identifies live keys; the first 8 characters after the prefix serve as a human-readable identifier.
Store the key as a server-side secret. It cannot be retrieved after issuance — rotate by creating a new key.

Response envelope

Every response uses a standard envelope: { timestamp, response, errors }. The response field carries the payload. The errors field is an array of { code, name, message } objects, populated only when the request fails.

envelope
{
  "timestamp": "2026-04-22T18:04:11Z",
  "response": { ... },
  "errors": []
}