Skip to content
Reference

Tool reference

The 97 tools the connector gives your assistant, in 12 groups. Each one says whether it only reads, changes something, or costs money, so your app can ask you before anything that spends.

Updated
On this page

How to read this page

Connect at https://mcp.adprimezero.com/mcp (ChatGPT: https://mcp.adprimezero.com/mcp/chatgpt, which leaves out the tools marked Not in ChatGPT). Connect your assistant has the steps. Your assistant reads these same names and descriptions from the server; you rarely need to type a tool name yourself.

Read only
48 tools only read your account.
Changes things
49 tools create or update something.
Costs money
8 tools spend from your prepaid balance: running ads, or paid AI work such as images, video, and voiceovers.
Confirm first
Can change live delivery, spend, or remove something. Your assistant should ask you first.

97 tools

Account, funding, and receipts 7

get_account

Get account and balance

  • Read only

Read this account: prepaid balance (current_balance_cents), daily spend cap, trust tier, status, and profile. Call it first to see whether there is money to launch with. A zero balance blocks launching only; when the person wants to launch or add funds, use request_prepay_link and give them the link. Do not attach a payment link to answers about anything else.

Parameters

None.

register_account

Register a new account

  • Changes things

Register a new Adprime Zero account at Tier 0 ($100/day cap). Returns an api_key the caller must store immediately; it is shown exactly once.

Parameters

emailstringRequired

Owner email; receives login codes and balance alerts

Format: email

organization_namestringRequired

Display name for the account; appears in dashboards and ad-server logs

1 to 100 characters

intentstringRequired

Natural-language description of why this account exists. AI moderation runs on this string.

20 to 500 characters

domainstringRequired

Primary product or company URL. Shorthand like example.com is completed for signup.

Format: uri

agent_user_agentstringOptional

If the registrant is itself an AI agent, an honest declaration of the agent string. Used for trust-tier signals later.

1 to 200 characters

Create a payment link

  • Changes things
  • Not in ChatGPT

Request a funding handoff URL for the operator. amount_cents is required, from 500 ($5) to 500000 ($5,000); if the person named no amount, ask, or use 2000 ($20). External-agent keys receive an Adprime Zero login URL with the account email pre-filled; after browser verification, the flow continues to Stripe Checkout or Demo Wallet. The returned funding_intent_id is the durable status object to poll after the browser flow.

Parameters

amount_centsintegerRequired

Amount to add, in cents: 500 ($5 minimum) to 500000 ($5,000 maximum).

500 to 500000

return_urlstringOptional

Where to send the user after Checkout. Defaults to /dashboard?funding=success.

Format: uri

list_funding_intents

List payment links

  • Read only
  • Not in ChatGPT

List recent funding attempts for the account. Use this after a browser payment handoff to explain pending, succeeded, failed, expired, and provider status.

Parameters

limitintegerOptional

1 to 100

get_funding_intent_status

Get payment link status

  • Read only
  • Not in ChatGPT

Check the durable status of one funding intent after a human opens the hosted payment page. This reports local ledger state and provider payment status; a browser redirect alone is not proof of added balance.

Parameters

funding_intent_idstringRequired

Starts with fi_

list_receipts

List receipts

  • Read only

List durable Adprime Zero receipt PDF records for card charges and prepaid funding (Stripe Checkout, automatic top-up, refunds, and adjustments). Ad spend and assistant usage are ledger history, not receipt PDFs.

Parameters

limitintegerOptional

1 to 100

cursorstringOptional

1 to 200 characters

kindstringOptional

1 to 80 characters

get_receipt

Get receipt

  • Read only

Fetch one receipt record. The PDF itself is available through GET /account/receipts/{receipt_document_id}/pdf with the same bearer credential, or through the dashboard/CLI download command.

Parameters

receipt_document_idstringRequired

Starts with rcpt_

Creatives and media 9

list_creatives

List creatives

  • Read only

List recent creatives with their exchange approval status and landing-page approval status. A campaign can launch only with a creative whose status is approved and whose destination is approved. Newest first; pass next_cursor as cursor for older creatives.

Parameters

limitintegerOptional

1 to 100

cursorstringOptional

At least 1 characters

get_creative

Get creative and approval status

  • Read only

Read one creative: exchange approval status, landing-page approval with the reasons for any review or rejection, and the click URL. Poll this after submit_creative; exchange approval can take from minutes to about a day.

Parameters

creative_idstringRequired

Starts with cr_

pre_check_creative

Check a creative before submitting

  • Read only

Dry-run submit_creative: same body, returns would_be_status and reasons from the destination and format checks. Stores nothing and creates no exchange object. Use it before a real submit, especially for trusted click-tracker creatives with landing_page_url. It needs exactly one image source (image_url, image_base64, or account_media_id) even when you only want the landing-page verdict; there is no page-only check, so make a draft banner first (upload_media, then derive_banner_from_image) and pre-check with that.

Parameters

namestringRequired

Internal name for this creative

1 to 100 characters

formatstringRequired
One of banner_300x250, banner_728x90, banner_320x50, banner_300x600, banner_160x600, banner_970x250, banner_336x280
image_urlstringOptional

Format: uri

image_base64stringOptional

Base64-encoded image bytes; up to 200KB

account_media_idstringOptional

An ami_ media-library item at the exact format size, e.g. from derive_banner_from_image.

Pattern ^ami_[0-9A-Za-z]+$

headlinestringRequired

Up to 100 characters

descriptionstringRequired

Up to 500 characters

destinationobjectRequired
click_urlstringRequired

Format: uri

landing_page_urlstringOptional

Final landing page behind a trusted click tracker. Required when click_url is on the account trusted click-tracker allowlist; refused otherwise.

Format: uri

expected_content_summarystringRequired

What the agent claims this URL serves. Stored for audit and future reporting.

10 to 500 characters

advertiser_disclosurestringRequired

Required: "Sponsored by Acme Corp" style disclosure that prints in audit.

1 to 200 characters

submit_creative

Submit a creative for approval

  • Changes things

Submit a banner creative for Beeswax/FreeWheel approval. Send the image as exactly one of account_media_id (a media item at the exact format size, e.g. from derive_banner_from_image), image_url, or image_base64. Adprime Zero validates the image shape and approves the landing page, then Beeswax is the approval authority. If destination.click_url uses a host from list_trusted_click_trackers, also send destination.landing_page_url (the final page the tracker redirects to): approval crawls that page and never fetches the tracker. landing_page_url is refused for any other click host.

Parameters

namestringRequired

Internal name for this creative

1 to 100 characters

formatstringRequired
One of banner_300x250, banner_728x90, banner_320x50, banner_300x600, banner_160x600, banner_970x250, banner_336x280
image_urlstringOptional

Format: uri

image_base64stringOptional

Base64-encoded image bytes; up to 200KB

account_media_idstringOptional

An ami_ media-library item at the exact format size, e.g. from derive_banner_from_image.

Pattern ^ami_[0-9A-Za-z]+$

headlinestringRequired

Up to 100 characters

descriptionstringRequired

Up to 500 characters

destinationobjectRequired
click_urlstringRequired

Format: uri

landing_page_urlstringOptional

Final landing page behind a trusted click tracker. Required when click_url is on the account trusted click-tracker allowlist; refused otherwise.

Format: uri

expected_content_summarystringRequired

What the agent claims this URL serves. Stored for audit and future reporting.

10 to 500 characters

advertiser_disclosurestringRequired

Required: "Sponsored by Acme Corp" style disclosure that prints in audit.

1 to 200 characters

list_trusted_click_trackers

List trusted click trackers

  • Read only

Read-only list of click-tracker hosts the Adprime Zero operator trusts for this account. A creative whose click_url uses one of these hosts must also send destination.landing_page_url. Agents cannot add hosts.

Parameters

None.

upload_media

Upload an image

  • Changes things

Store an image in the account media library (PNG, JPEG, WebP, or GIF, up to 8MB). Returns its account_media_id and an expiring preview_url. Uploading does not submit or approve anything; use derive_banner_from_image to make a submittable banner from it.

Parameters

display_namestringRequired

1 to 160 characters

original_filenamestringOptional

Up to 240 characters

mime_typestringRequired
One of image/png, image/jpeg, image/webp, image/gif
data_base64stringRequired

Base64 image bytes, up to 8MB decoded.

At least 1 characters

alt_textstringOptional

Up to 500 characters

tagsarray of stringOptional

1 to 60 characters · Up to 20 items

list_media_library

List media library

  • Read only

List images in the account media library, newest first: uploads, generated images, and derived banners (source_kind rendered_variant).

Parameters

searchstringOptional

1 to 120 characters

source_kindstringOptional
One of upload, generated_image, rendered_variant, approved_creative
limitintegerOptional

1 to 100

get_media_item

Get media item

  • Read only

One media-library item with its size, byte count, and a fresh preview_url (expires in 72 hours) that a person can open in a browser.

Parameters

account_media_idstringRequired

Pattern ^ami_[0-9A-Za-z]+$

derive_banner_from_image

Make a banner from an image

  • Changes things

Cut a PNG or JPEG media item to an exact IAB banner size under 200KB (default) and store it as a new media item. cover (default) crops to the aspect ratio, steered by gravity or focal_point; contain keeps the whole image on a padded background. Returns account_media_id, the crop, warnings about anything cut off or degraded, and a preview_url. Read the warnings and look at the preview, then call pre_check_creative and submit_creative with account_media_id. Free; does not submit or approve anything.

Parameters

formatstringRequired

Target IAB size, e.g. banner_300x250.

One of banner_300x250, banner_728x90, banner_320x50, banner_300x600, banner_160x600, banner_970x250, banner_336x280
fitstringOptional

cover crops the source to the target aspect ratio (no bars). contain fits the whole source and pads the rest with `background`. For 728x90 and 320x50, cover keeps only a thin horizontal band of a square or landscape source.

Default "cover"

One of cover, contain
gravitystringOptional

Which part of the source to keep when cover crops. Default center. Ignored when focal_point is set.

One of center, top, bottom, left, right, top_left, top_right, bottom_left, bottom_right
focal_pointobjectOptional

Fractional source position (0-1, from the top-left) to keep centered when cover crops.

xnumberRequired

0 to 1

ynumberRequired

0 to 1

output_formatstringOptional

auto: lossless PNG when it fits under max_bytes, else the highest JPEG quality that fits. png: lossless, then a 256-to-32 color palette. jpeg: quality ladder only.

Default "auto"

One of auto, png, jpeg
max_bytesintegerOptional

10000 to 220000

Default 200000

backgroundstringOptional

Hex color for contain padding and for flattening transparency into JPEG. Default: the average color of the source border for contain, white for flattening.

Pattern ^#[0-9a-fA-F]{6}$

display_namestringOptional

1 to 160 characters

account_media_idstringRequired

The source image, e.g. an upload_media result.

Pattern ^ami_[0-9A-Za-z]+$

Video Ad Studio 12

video_ad_guide

Read the video ad guide

  • Read only

Read this before making a video ad: the workflow, channel presets and safe zones, scene types, image and voice rules, disclosure, costs, and the AdSpec JSON Schema.

Parameters

None.

list_video_projects

List video ad projects

  • Read only

List video ad projects, newest first, with status, rendered presets, and a poster link.

Parameters

None.

create_video_project

Create a video ad project

  • Changes things

Start a video ad project. Give the landing page URL; optionally a first spec. Returns video_project_id. Free.

Parameters

titlestringOptional

1 to 120 characters

brand_kit_idstringOptional

Brand kit for the project; the workspace default when omitted.

Pattern ^bk_[0-9A-Za-z]+$

landing_page_urlstringOptional

Where the ad sends people. Drafting reads it; the CTA must name this site.

Format: uri · Up to 2048 characters

specmap of anyOptional

An AdSpec v1 object. Call video_ad_guide for the rules and the JSON Schema.

get_video_project

Get video ad project

  • Read only

One project: its current spec, version history, generated images and voice takes (ids, preview links, costs), and renders with download links.

Parameters

video_project_idstringRequired

Video project id (vp_...).

Pattern ^vp_[0-9A-Za-z]+$

draft_video_spec

Draft a video ad from the landing page (paid)

  • Changes things
  • Costs money

Write a first spec from the brief and the landing page's own text (claims are only taken from the page). Saves it as a new version and returns image suggestions to generate. Costs about 1-3 cents.

Parameters

video_project_idstringRequired

Video project id (vp_...).

Pattern ^vp_[0-9A-Za-z]+$

brand_kit_idstringOptional

Brand to draft in; the project's kit, then the default, when omitted.

Pattern ^bk_[0-9A-Za-z]+$

productstringOptional

Up to 300 characters

audiencestringOptional

Up to 300 characters

offerstringOptional

Up to 300 characters

tonestringOptional

Up to 200 characters

length_secintegerOptional

5 to 60

presetstringOptional
One of meta_reels, meta_stories, meta_feed, tiktok_in_feed, youtube_shorts, snap, square, landscape
voiceoverbooleanOptional
voicestringOptional
One of marin, cedar, coral, ash, ballad, sage, verse, alloy, echo, shimmer
notesstringOptional

Up to 1000 characters

save_video_spec

Save a video ad spec version

  • Changes things

Save a new spec version (an edit). Returns the version number and preflight checks; fix every blocking check before rendering. Saving an identical spec returns the existing version. Free.

Parameters

video_project_idstringRequired

Video project id (vp_...).

Pattern ^vp_[0-9A-Za-z]+$

specmap of anyRequired

An AdSpec v1 object. Call video_ad_guide for the rules and the JSON Schema.

change_notestringOptional

Up to 300 characters

generate_ad_image

Generate an image for a video ad (paid)

  • Changes things
  • Costs money

Generate one image for a video ad or banner (photo, transparent product cutout, or texture), on brand when given a brand kit. Pass the kit product photos as reference_media_ids whenever the product appears, so the model draws the real product. Returns account_media_id for the spec and a preview_url. About 1-2 cents, 2-5 with references.

Parameters

promptstringRequired

Subject, setting, light, mood, camera. No text, logos, or real people.

3 to 1500 characters

rolestringOptional

cutout = one product on a transparent background.

Default "photo"

One of photo, cutout, texture
shapestringOptional

Default "tall"

One of tall, wide, square
video_project_idstringOptional

Video project id (vp_...).

Pattern ^vp_[0-9A-Za-z]+$

brand_kit_idstringOptional

Adds the kit's image style and palette; defaults to the project's kit.

Pattern ^bk_[0-9A-Za-z]+$

reference_media_idsarray of stringOptional

Images the model must follow, e.g. the brand kit product photos, so it draws the real product.

Pattern ^ami_[0-9A-Za-z]+$ · Up to 6 items

use_brand_referencesbooleanOptional

Also send the kit's product and style photos as references.

record_voiceover

Record a voiceover line (paid)

  • Changes things
  • Costs money

Record one voiceover line with OpenAI's GPT-Live voice (checked word for word against the script). Renders record missing lines automatically; use this to hear a line or get a retake. About 1 cent; a line already recorded is free.

Parameters

textstringRequired

1 to 180 characters

voicestringOptional

Default "marin"

One of marin, cedar, coral, ash, ballad, sage, verse, alloy, echo, shimmer
stylestringOptional

Up to 300 characters

enginestringOptional

Default "live"

One of live, realtime
video_project_idstringOptional

Video project id (vp_...).

Pattern ^vp_[0-9A-Za-z]+$

retakebooleanOptional

Record a new take even when this line already has one.

check_video

Check a video ad before rendering

  • Read only

Preflight a spec version for each preset: channel shape and length, hook length, voice pace, captions, AI disclosure, claims, images, and that the CTA names the landing page. Free.

Parameters

video_project_idstringRequired

Video project id (vp_...).

Pattern ^vp_[0-9A-Za-z]+$

spec_versionintegerOptional

At least 1

presetsarray of stringOptional

1 to 8 items

One of meta_reels, meta_stories, meta_feed, tiktok_in_feed, youtube_shorts, snap, square, landscape

preview_video_frames

Preview frames of a video ad

  • Read only

Render stills from the spec (rendered by the real composition) and return them as images, each with a signed link. Look at every frame before rendering: overflow, contrast, empty space, a slow first second. With record_voice the first call can take about a minute; if it times out, call it again: recorded lines are kept, so the retry is quick and not charged again. Free apart from voice.

Parameters

video_project_idstringRequired

Video project id (vp_...).

Pattern ^vp_[0-9A-Za-z]+$

spec_versionintegerOptional

At least 1

presetstringOptional
One of meta_reels, meta_stories, meta_feed, tiktok_in_feed, youtube_shorts, snap, square, landscape
at_secondsarray of numberOptional

Up to 8 seconds to look at; default is five spread across the ad.

0 to 120 · Up to 8 items

record_voicebooleanOptional

Record missing voice lines first (paid) so timing is final.

render_video

Render a video ad

  • Changes things

Render MP4s for 1-4 presets in the cloud (records any missing voice lines first, which is paid). Returns render ids at once; a render takes about 1-2 minutes, so poll get_video_render. Rendering itself is free.

Parameters

video_project_idstringRequired

Video project id (vp_...).

Pattern ^vp_[0-9A-Za-z]+$

presetsarray of stringRequired

1 to 4 items

One of meta_reels, meta_stories, meta_feed, tiktok_in_feed, youtube_shorts, snap, square, landscape
spec_versionintegerOptional

At least 1

idempotency_keystringOptional

Reuse to make a retry return the same renders.

8 to 120 characters

get_video_render

Get a video render

  • Read only

Status of one render. While it is still rendering this waits up to about 25 seconds before answering, so call it again only if status is still not succeeded or failed. When succeeded, download_url is a signed link to the MP4 (72 hours) and validation lists the delivery checks it passed.

Parameters

video_render_idstringRequired

Render id (vr_...).

Pattern ^vr_[0-9A-Za-z]+$

Brand kits 7

list_brand_kits

List brand kits

  • Read only

List the workspace's brand kits (the default first): colors, fonts, logo, voice, tone, image style, guidelines, and reference images with preview links. Read this before making images or videos so they are on brand.

Parameters

None.

get_brand_kit

Get a brand kit

  • Read only

One brand kit with its reference images (logo, product photos, style references) and preview links.

Parameters

brand_kit_idstringRequired

Brand kit id (bk_...).

Pattern ^bk_[0-9A-Za-z]+$

create_brand_kit

Create a brand kit

  • Changes things

Save a brand kit: name, six colors, fonts, voiceover defaults, tone, image style, guidelines, disclosure line. The workspace's first kit becomes its default. Then add the logo and product photos with add_brand_asset. Free.

Parameters

namestringRequired

1 to 80 characters

website_urlstring or nullOptional
is_defaultbooleanOptional
colorsobjectRequired
bgstringRequired

Pattern ^#[0-9a-fA-F]{6}$

fgstringRequired

Pattern ^#[0-9a-fA-F]{6}$

primarystringRequired

Pattern ^#[0-9a-fA-F]{6}$

primaryFgstringRequired

Pattern ^#[0-9a-fA-F]{6}$

accentstringRequired

Pattern ^#[0-9a-fA-F]{6}$

accentFgstringRequired

Pattern ^#[0-9a-fA-F]{6}$

display_fontstringOptional
One of interTight, bricolage, archivoBlack, anton, dmSerif, spaceGrotesk, jetbrainsMono
body_fontstringOptional
One of interTight, bricolage, archivoBlack, anton, dmSerif, spaceGrotesk, jetbrainsMono
uppercase_displaybooleanOptional
logo_includes_namebooleanOptional
voiceobjectOptional
voicestringOptional
One of marin, cedar, coral, ash, ballad, sage, verse, alloy, echo, shimmer
stylestringOptional

Up to 300 characters

enginestringOptional
One of live, realtime
taglinestring or nullOptional

Short brand line, for CTA and end cards.

tonestring or nullOptional

How the brand talks: words to use, words to avoid, reading level.

image_stylestring or nullOptional

Visual direction for generated images, e.g. "bright natural light, warm neutrals, candid people, no studio backdrops".

guidelinesstring or nullOptional

Anything else every ad must respect: claims rules, product names, legal lines.

disclosure_textstring or nullOptional

Advertiser disclosure for banners, e.g. "Sponsored by Ember & Oak".

update_brand_kit

Update a brand kit

  • Changes things

Change any field of a brand kit, make it the default, or archive it. Free.

Parameters

namestringOptional

1 to 80 characters

website_urlstring or nullOptional
is_defaultbooleanOptional
colorsobjectOptional
bgstringRequired

Pattern ^#[0-9a-fA-F]{6}$

fgstringRequired

Pattern ^#[0-9a-fA-F]{6}$

primarystringRequired

Pattern ^#[0-9a-fA-F]{6}$

primaryFgstringRequired

Pattern ^#[0-9a-fA-F]{6}$

accentstringRequired

Pattern ^#[0-9a-fA-F]{6}$

accentFgstringRequired

Pattern ^#[0-9a-fA-F]{6}$

display_fontstringOptional
One of interTight, bricolage, archivoBlack, anton, dmSerif, spaceGrotesk, jetbrainsMono
body_fontstringOptional
One of interTight, bricolage, archivoBlack, anton, dmSerif, spaceGrotesk, jetbrainsMono
uppercase_displaybooleanOptional
logo_includes_namebooleanOptional
voiceobjectOptional
voicestringOptional
One of marin, cedar, coral, ash, ballad, sage, verse, alloy, echo, shimmer
stylestringOptional

Up to 300 characters

enginestringOptional
One of live, realtime
taglinestring or nullOptional

Short brand line, for CTA and end cards.

tonestring or nullOptional

How the brand talks: words to use, words to avoid, reading level.

image_stylestring or nullOptional

Visual direction for generated images, e.g. "bright natural light, warm neutrals, candid people, no studio backdrops".

guidelinesstring or nullOptional

Anything else every ad must respect: claims rules, product names, legal lines.

disclosure_textstring or nullOptional

Advertiser disclosure for banners, e.g. "Sponsored by Ember & Oak".

archivedbooleanOptional
brand_kit_idstringRequired

Brand kit id (bk_...).

Pattern ^bk_[0-9A-Za-z]+$

add_brand_asset

Add an image to a brand kit

  • Changes things

Attach an image to a brand kit with a role: logo (drawn by the video composer), product (real product photos; used as references for generated images and directly in video scenes), or style (look and mood references). Free.

Parameters

brand_kit_idstringRequired

Brand kit id (bk_...).

Pattern ^bk_[0-9A-Za-z]+$

rolestringRequired

logo: drawn by the video composer (never redrawn by an image model). product: real product shots, sent to the image model as references and usable directly in video scenes. style: mood and look references for generated images.

One of logo, product, style
labelstringOptional

What it shows, e.g. "Oak blend bag, front".

Up to 120 characters

account_media_idstringOptional

An image already in the media library (from upload_media or generate_ad_image).

Pattern ^ami_[0-9A-Za-z]+$

data_base64stringOptional

Or the image bytes, base64 (PNG, JPEG, WebP, or SVG for logos; up to 8MB).

mime_typestringOptional
One of image/png, image/jpeg, image/webp, image/svg+xml

remove_brand_asset

Remove an image from a brand kit

  • Changes things
  • Confirm first

Detach an image from a brand kit (the image stays in the media library). Free.

Parameters

brand_kit_idstringRequired

Brand kit id (bk_...).

Pattern ^bk_[0-9A-Za-z]+$

account_media_idstringRequired

Pattern ^ami_[0-9A-Za-z]+$

derive_brand_kit_from_site

Make a brand kit from a website (paid)

  • Changes things
  • Costs money

Read a website's own colors, fonts, name, and copy and propose a brand kit (text colors are contrast-checked). Saves it with the site icon as a starting logo unless save is false. Show the buyer the result. About 1-2 cents.

Parameters

urlstringRequired

The brand's website.

Format: uri · Up to 2048 characters

savebooleanOptional

Save it as a new kit (default true); false returns the proposal only.

make_defaultbooleanOptional

Targeting 4

list_targeting

List targeting sets

  • Read only

List saved targeting sets (geography, audiences, inventory rules) to reuse in create_campaign.

Parameters

limitintegerOptional

1 to 100

cursorstringOptional

At least 1 characters

get_targeting

Get targeting set

  • Read only

Read one saved targeting set, including resolved audience segments and their data cost.

Parameters

targeting_idstringRequired

Starts with tgt_

create_targeting

Create a targeting set

  • Changes things

Create a named Targeting object reusable across campaigns. For audience segments, submit ids returned by discover_segments, not segment names; data CPM is estimated before delivery reconciliation. State/province targeting uses geo.include_regions / geo.exclude_regions with Beeswax region keys such as USA/WA (Washington), USA/CO, USA/NV; unknown keys are refused, never dropped, an included region must belong to an included country, and include_regions and exclude_regions cannot be combined (the exchange rejects both; to leave out a state, list every allowed state in include_regions).

Parameters

namestringRequired

1 to 100 characters

geoobjectRequired
include_countriesarray of stringRequired

ISO 3166-1 alpha-3 country code

Pattern ^[A-Z]{3}$ · Exactly 3 characters · At least 1 item

exclude_countriesarray of stringOptional

ISO 3166-1 alpha-3 country code

Pattern ^[A-Z]{3}$ · Exactly 3 characters

Default []

include_regionsarray of stringOptional

Beeswax geo.region key, e.g. USA/WA (Washington), USA/CO, USA/NV, CAN/ON.

Up to 64 items

One of CAN/AB, CAN/BC, CAN/MB, CAN/NB, CAN/NL, CAN/NS, CAN/NT, CAN/NU, CAN/ON, CAN/PE,
Show 54 moreCAN/QC, CAN/SK, CAN/YT, USA/AK, USA/AL, USA/AR, USA/AZ, USA/CA, USA/CO, USA/CT, USA/DC, USA/DE, USA/FL, USA/GA, USA/HI, USA/IA, USA/ID, USA/IL, USA/IN, USA/KS, USA/KY, USA/LA, USA/MA, USA/MD, USA/ME, USA/MI, USA/MN, USA/MO, USA/MS, USA/MT, USA/NC, USA/ND, USA/NE, USA/NH, USA/NJ, USA/NM, USA/NV, USA/NY, USA/OH, USA/OK, USA/OR, USA/PA, USA/RI, USA/SC, USA/SD, USA/TN, USA/TX, USA/UT, USA/VA, USA/VT, USA/WA, USA/WI, USA/WV, USA/WY
exclude_regionsarray of stringOptional

Beeswax geo.region key, e.g. USA/WA (Washington), USA/CO, USA/NV, CAN/ON.

Up to 64 items

One of CAN/AB, CAN/BC, CAN/MB, CAN/NB, CAN/NL, CAN/NS, CAN/NT, CAN/NU, CAN/ON, CAN/PE,
Show 54 moreCAN/QC, CAN/SK, CAN/YT, USA/AK, USA/AL, USA/AR, USA/AZ, USA/CA, USA/CO, USA/CT, USA/DC, USA/DE, USA/FL, USA/GA, USA/HI, USA/IA, USA/ID, USA/IL, USA/IN, USA/KS, USA/KY, USA/LA, USA/MA, USA/MD, USA/ME, USA/MI, USA/MN, USA/MO, USA/MS, USA/MT, USA/NC, USA/ND, USA/NE, USA/NH, USA/NJ, USA/NM, USA/NV, USA/NY, USA/OH, USA/OK, USA/OR, USA/PA, USA/RI, USA/SC, USA/SD, USA/TN, USA/TX, USA/UT, USA/VA, USA/VT, USA/WA, USA/WI, USA/WV, USA/WY
content_categoriesobjectOptional

Default {"include_categories":[],"exclude_categories":[]}

include_categoriesarray of stringOptional

IAB content taxonomy code (e.g. IAB19 or IAB19-8)

Pattern ^IAB\d+(-\d+)?$

Default []

exclude_categoriesarray of stringOptional

IAB content taxonomy code (e.g. IAB19 or IAB19-8)

Pattern ^IAB\d+(-\d+)?$

Default []

audience_segmentsobjectOptional

Default {"include_segments":[],"exclude_segments":[]}

include_segmentsarray of stringOptional

Pattern ^[a-zA-Z0-9][a-zA-Z0-9_.:-]*$ · 2 to 128 characters

Default []

exclude_segmentsarray of stringOptional

Pattern ^[a-zA-Z0-9][a-zA-Z0-9_.:-]*$ · 2 to 128 characters

Default []

inventory_qualityobjectOptional

Default {"environments":[],"device_types":[],"inventory_sources_include":[],"placemen...

environmentsarray of stringOptional

Default []

One of web, app
device_typesarray of stringOptional

Default []

One of mobile, desktop, tablet, ctv, connected_device, set_top_box, games_console
inventory_sources_includearray of stringOptional

1 to 16 characters

Default []

placements_excludearray of stringOptional

Pattern ^[A-Za-z0-9_-]+\/.+$ · 3 to 128 characters · Up to 500 items

Default []

sites_excludearray of stringOptional

Pattern ^[A-Za-z0-9_-]+\/.+$ · 3 to 128 characters · Up to 500 items

Default []

ads_txt_authorized_onlybooleanOptional

Default false

segment_policy_acknowledgmentobjectOptional

Default {"acknowledged_sensitive_segments":false}

acknowledged_sensitive_segmentsbooleanOptional

Default false

notestringOptional

Up to 500 characters

discover_segments

Search audience segments

  • Read only

Discover real third-party audience segments from the Adprime Zero Beeswax/LiveRamp catalog. Use the returned id as audience_segments.include_segments/exclude_segments in create_targeting; do not target by name. Each row includes estimated data CPM, reach, provider, and policy tier. Skip a row whose reach_nam is 0 or whose seat_serving.status is no_users or failed: nothing will match it, and a campaign that relies on it will not bid.

Parameters

qstringOptional

1 to 120 characters

data_provider_idintegerOptional

Greater than 0

policy_tierstringOptional
One of allowed, requires_review, restricted
limitintegerOptional

1 to 100

cursorstringOptional

1 to 200 characters

Campaign lifecycle 7

list_campaigns

List campaigns

  • Read only

List campaigns with status (draft, running, paused, auto_paused_daily_cap, ...), budgets, creative, and targeting ids. auto_paused_daily_cap is normal: the campaign spent its daily budget and resumes after midnight UTC. A member key lists only campaigns in its own teams; team_id narrows to one team or "unassigned". Newest first; pass next_cursor as cursor for older campaigns.

Parameters

limitintegerOptional

1 to 100

cursorstringOptional

At least 1 characters

team_idstringOptional

At least 1 characters

get_campaign

Get campaign

  • Read only

Read one campaign: status, budgets, schedule, creative and targeting ids, and exchange ids once launched. Use get_campaign_performance for delivery numbers.

Parameters

campaign_idstringRequired

Starts with camp_

create_campaign

Create a draft campaign

  • Changes things

Create a campaign linking an approved creative to a targeting with a budget. Optional team_id puts it in a team (see list_teams). A member key sees only campaigns in its own teams: with exactly one edit seat the campaign defaults to that team, with more than one team_id is required, and a key with only read seats cannot create. Owner and admin keys that omit team_id create an unassigned campaign.

Parameters

namestringRequired

1 to 100 characters

creative_idstringRequired

Starts with cr_

targeting_idstringRequired

Starts with tgt_

pricing_modelstringOptional

Default "cpm"

One of cpm, cpc, cpa
bid_cpm_centsintegerRequired

USD amount in integer cents

At least 0

daily_budget_centsintegerRequired

USD amount in integer cents

At least 0

total_budget_centsintegerOptional

Optional lifetime cap. When omitted, campaign spends until paused or out of prepay balance.

At least 0

start_atstringOptional

When to start. Defaults to now.

Format: date-time

end_atstringOptional

When to stop. Defaults to never; balance is the natural stop.

Format: date-time

pacingstringOptional

Default "even"

One of even, asap
frequency_cap_impressionsintegerOptional

Greater than 0

Default 3

frequency_cap_window_hoursintegerOptional

Greater than 0

Default 24

optimization_goalstringOptional

Default "delivery"

One of delivery, conversions, roas
conversion_event_idstringOptional

Starts with cevt_

target_cpa_centsintegerOptional

USD amount in integer cents

At least 0

target_roas_bpsintegerOptional

Greater than 0

team_idstringOptional

Team that owns the campaign. Required for members with more than one edit seat; omitted means unassigned for owners and admins.

Starts with team_

copy_campaign

Copy a campaign

  • Changes things

Copy a campaign into a new pending-review campaign, optionally overriding name, flight dates, the creative set, targeting_id, and team_id. Omitted team_id keeps the source campaign team; null makes the copy unassigned (owner and admin keys only). A member key needs an edit seat on the source campaign team.

Parameters

namestringOptional

1 to 100 characters

targeting_idstringOptional

Starts with tgt_

creative_idsarray of stringOptional

Starts with cr_ · At least 1 item

start_atstringOptional

ISO 8601 UTC timestamp

Format: date-time

end_atstringOptional

ISO 8601 UTC timestamp

Format: date-time

team_idstring or nullOptional
campaign_idstringRequired

Starts with camp_

activate_campaign

Launch a campaign (spends money)

  • Changes things
  • Costs money
  • Confirm first

Launch a campaign: it starts bidding and spends the prepaid balance, up to its daily budget. The API refuses, and lists what is missing, unless the creative is approved by the exchange, its landing page is approved, and the account has available balance. A future start_at is honored: the campaign is set up now and serves from that time.

Parameters

campaign_idstringRequired

Starts with camp_

pause_campaign

Pause a campaign

  • Changes things

Pause a running campaign. It is switched off at the exchange right away. Spend from the last couple of hours can still appear afterwards, because reporting runs about two hours behind.

Parameters

campaign_idstringRequired

Starts with camp_

resume_campaign

Resume a campaign (spends money)

  • Changes things
  • Costs money
  • Confirm first

Resume a paused campaign. The same launch checks as activate_campaign run again (approvals and balance).

Parameters

campaign_idstringRequired

Starts with camp_

Creatives on a campaign 6

list_campaign_creatives

List creatives on a campaign

  • Read only

List first-class creative associations for a campaign, including creative approval state, destination state, external Beeswax association ids, and per-creative performance totals. Per-creative totals count hourly Beeswax reporting only, which runs about two hours behind, so a creative can read zero while get_campaign_performance already shows the line item delivering. That zero means not reported per creative yet, not did not serve.

Parameters

campaign_idstringRequired

Starts with camp_

add_campaign_creative

Add a creative to a campaign

  • Changes things

Add an approved creative to an existing campaign rotation. The API enforces creative approval, destination approval, blocked-domain policy, and exchange sync safety.

Parameters

creative_idstringRequired

Starts with cr_

rolestringOptional

Default "rotation"

One of primary, rotation, replacement_candidate
rotation_weightintegerOptional

Greater than 0

Default 1

start_atstringOptional

ISO 8601 UTC timestamp

Format: date-time

end_atstringOptional

ISO 8601 UTC timestamp

Format: date-time

campaign_idstringRequired

Starts with camp_

replace_campaign_creative

Replace a creative on a campaign

  • Changes things
  • Confirm first

Add a replacement creative and optionally pause the prior active/primary creative association. This keeps a durable replacement trail.

Parameters

creative_idstringRequired

Starts with cr_

replace_association_idstringOptional

Starts with cca_

pause_replacedbooleanOptional

Default true

rotation_weightintegerOptional

Greater than 0

Default 1

campaign_idstringRequired

Starts with camp_

pause_campaign_creative

Pause a creative on a campaign

  • Changes things

Pause one creative association on a campaign. The API blocks pausing the final active creative; pause the whole campaign instead.

Parameters

campaign_idstringRequired

Starts with camp_

campaign_creative_association_idstringRequired

Starts with cca_

resume_campaign_creative

Resume a creative on a campaign (spends money)

  • Changes things
  • Costs money
  • Confirm first

Resume one paused creative association after the creative and destination gates are valid again.

Parameters

campaign_idstringRequired

Starts with camp_

campaign_creative_association_idstringRequired

Starts with cca_

remove_campaign_creative

Remove a creative from a campaign

  • Changes things
  • Confirm first

Remove one creative association from a campaign after first deactivating it externally when possible.

Parameters

campaign_idstringRequired

Starts with camp_

campaign_creative_association_idstringRequired

Starts with cca_

Reporting 9

query_performance

Query performance

  • Read only

Query campaign reporting from Adprime Zero rollups. Supports delivery metrics (impressions, clicks, spend_cents, ctr_bps) and conversion metrics (conversions, cvr_bps, cpa_cents, roas_bps) when conversion events are linked. Read freshness_status, metric_sources, and warnings before concluding zero clicks: snapshot rows can provide timely impressions/spend while Beeswax Reporting rows are the provider click source. Beeswax provider reports must use clicks plural; ad_click_tokens are not delivery click truth.

Parameters

campaign_idstringRequired

Starts with camp_

start_atstringRequired

ISO 8601 UTC timestamp

Format: date-time

end_atstringRequired

ISO 8601 UTC timestamp

Format: date-time

dimensionsarray of stringRequired

At least 1 item

One of campaign_id, day, hour, country, content_category, creative_id, conversion_event_id
metricsarray of stringRequired

At least 1 item

One of impressions, clicks, spend_cents, win_rate, ctr_bps, viewability_bps, conversions, attributed_conversions, conversion_value_cents, cvr_bps,
Show 2 morecpa_cents, roas_bps
filtersobjectOptional
countryarray of stringOptional

ISO 3166-1 alpha-3 country code

Pattern ^[A-Z]{3}$ · Exactly 3 characters

content_categoryarray of stringOptional

IAB content taxonomy code (e.g. IAB19 or IAB19-8)

Pattern ^IAB\d+(-\d+)?$

list_campaign_performance

List campaign performance

  • Read only

Return a one-call account-wide campaign performance table with campaign status, budgets, exchange IDs, delivery, conversions, freshness_status, metric_sources, warnings, and next actions. Use this first when the buyer asks how all campaigns are doing or whether zero clicks is real. totals cover every matching campaign; items are a newest-first page (limit, default 100, max 500), so pass next_cursor as cursor for the rest.

Parameters

start_atstringOptional

Format: date-time

end_atstringOptional

Format: date-time

statusstringOptional
campaign_idsstringOptional
include_freshnessbooleanOptional
limitintegerOptional

1 to 500

cursorstringOptional

At least 1 characters

get_campaign_performance

Get campaign performance

  • Read only

Fetch the campaign-scoped hourly delivery rollup convenience view, including conversion totals when events are linked. The response includes local read time, provider sync timestamps, metric sources, and warnings. If impressions/spend exist but clicks are zero, inspect freshness_status before telling the user the campaign had no clicks.

Parameters

campaign_idstringRequired

Starts with camp_

start_atstringOptional

Format: date-time

end_atstringOptional

Format: date-time

get_beeswax_reporting_status

Get reporting freshness

  • Read only

Check Beeswax Reporting freshness for one campaign. Use this when campaign performance has impressions/spend but zero clicks, or whenever freshness_status from performance is not fresh.

Parameters

campaign_idstringRequired

Starts with camp_

start_atstringOptional

Format: date-time

end_atstringOptional

Format: date-time

refresh_beeswax_campaign_reporting

Refresh campaign reporting

  • Changes things

Ask Adprime Zero to run the due Beeswax Reporting reconciliation, then return a durable reporting_refresh_id and poll URL. This does not bypass provider async lag; if status is pending, call get_beeswax_reporting_refresh_status before treating zero clicks as final.

Parameters

campaign_idstringRequired

Starts with camp_

start_atstringOptional

Format: date-time

end_atstringOptional

Format: date-time

get_beeswax_reporting_refresh_status

Get reporting refresh status

  • Read only

Poll a durable Beeswax Reporting refresh request returned by refresh_beeswax_campaign_reporting. Use the reporting_refresh_id, not a provider task id.

Parameters

campaign_idstringRequired

Starts with camp_

reporting_refresh_idstringRequired

Starts with rfr_

list_beeswax_reporting_sync_runs

List reporting sync runs

  • Read only

List recent Beeswax Reporting provider sync runs for recovery/debugging. This is provider control-plane metadata; use campaign performance/status tools to interpret a specific campaign.

Parameters

limitintegerOptional

1 to 50

get_funnel_summary

Get landing funnel summary

  • Read only

Summarize first-party funnel evidence for owned campaigns: traffic-split assignments, landing-page visits, landing-page leads, click-token issuance, and clicked-token counts. This is not Beeswax delivery click truth.

Parameters

campaign_idstringOptional

Starts with camp_

start_atstringOptional

Format: date-time

end_atstringOptional

Format: date-time

limitintegerOptional

1 to 100

list_campaign_click_tokens

List campaign click tokens

  • Read only

List first-party click-token records for a campaign. These records support redirect/attribution debugging; provider delivery clicks still come from Beeswax Reporting.

Parameters

campaign_idstringRequired

Starts with camp_

limitintegerOptional

1 to 100

Conversions and optimization 14

create_conversion_event

Create a conversion event

  • Changes things

Create an advertiser conversion event. Returns ingest_secret once. Use kind=lead for form fills and kind=honeypot for bot traps that must never be a campaign optimization goal. postback_auth defaults to secret; set event_id for an ID-only postback URL with no secret in it (the usual affiliate-network pattern). Never embed ak_ API keys in tags.

Parameters

namestringRequired

1 to 120 characters

kindstringOptional

Default "custom"

One of standard, purchase, signup, lead, honeypot, custom
descriptionstringOptional

Up to 500 characters

default_value_centsintegerOptional

USD amount in integer cents

At least 0

currencystringOptional

Exactly 3 characters

Default "USD"

count_uniquebooleanOptional

Default false

click_window_daysintegerOptional

1 to 90

Default 7

view_window_daysintegerOptional

0 to 30

Default 0

postback_authstringOptional

Default "secret"

One of secret, event_id

list_conversion_events

List conversion events

  • Read only

List conversion events for the account.

Parameters

None.

get_conversion_event

Get conversion event

  • Read only

Fetch one conversion event with recent ingest counters.

Parameters

conversion_event_idstringRequired

Starts with cevt_

update_conversion_event

Update a conversion event

  • Changes things

Update a conversion event name, value defaults, attribution windows, status, or postback_auth. Use this instead of creating a duplicate event when the buyer is correcting setup. postback_auth=event_id makes public ingest accept fires with only the event id (no secret), rate limited per event and client IP; a supplied secret is still checked and a wrong one rejected. postback_auth=secret requires the ingest secret again. Re-read get_conversion_event_install afterwards, because get_postback_url changes.

Parameters

namestringOptional

1 to 120 characters

descriptionstring or nullOptional
default_value_centsinteger or nullOptional
count_uniquebooleanOptional
click_window_daysintegerOptional

1 to 90

view_window_daysintegerOptional

0 to 30

statusstringOptional
One of active, archived
postback_authstringOptional
One of secret, event_id
conversion_event_idstringRequired

Starts with cevt_

get_conversion_event_install

Get conversion install code

  • Read only

Return the GET postback URL (get_postback_url) plus browser pixel, JS, and POST examples. Agents must paste get_postback_url verbatim. Do not invent tag URLs. When postback_auth is event_id, none of the URLs carry a secret; do not add one.

Parameters

conversion_event_idstringRequired

Starts with cevt_

Link a conversion event to a campaign

  • Changes things

Link a conversion event to a campaign for attribution.

Parameters

campaign_idstringRequired

Starts with camp_

conversion_event_idstringRequired

Starts with cevt_

Unlink a conversion event from a campaign

  • Changes things
  • Confirm first

Remove the attribution link between a conversion event and a campaign. This does not delete historical ingest or attribution rows.

Parameters

conversion_event_idstringRequired

Starts with cevt_

campaign_idstringRequired

Starts with camp_

send_test_conversion

Send a test conversion

  • Changes things

Fire a synthetic test conversion through the ingest pipeline.

Parameters

conversion_event_idstringRequired

Starts with cevt_

get_conversion_event_ingest_log

Get conversion ingest log

  • Read only

Fetch recent ingest attempts for one conversion event. Use this to verify browser pixels, server postbacks, and test fires before optimizing campaigns toward conversions. ingest_auth says how each row was authenticated: secret, event_id (accepted without a secret), or api_key (test fire).

Parameters

conversion_event_idstringRequired

Starts with cevt_

limitintegerOptional

1 to 100

set_campaign_conversion_optimization

Turn conversion optimization on or off

  • Changes things
  • Confirm first

Turn the conversion optimization loop on or off for one campaign. Opt-in is required: the loop evaluates nothing until this is enabled. Set conversion_optimization_auto_apply true for AUTOPILOT: the server applies waste bid-downs (placement/site at 0.3x) itself and judges each about a day later, reverting automatically if delivery collapsed; bid strategy and CPA target changes are still only proposed. Disabling stops new proposals, turns autopilot off, and does NOT revert changes that were already applied, which still need judging.

Parameters

conversion_optimization_enabledbooleanRequired
conversion_optimization_auto_applybooleanOptional
campaign_idstringRequired

Starts with camp_

get_campaign_conversion_signal

Get campaign conversion signal

  • Read only

Read one campaign conversion picture over a window: goal conversions, funnel (lead/form-fill) conversions, honeypot trap fires, attribution confidence, raw CPA, and quality-adjusted CPA. Trap fires are reported separately and must never be treated as conversions. Spend is already reconciled across the two reporting sources; do not re-derive it.

Parameters

campaign_idstringRequired

Starts with camp_

window_daysintegerOptional

1 to 90

list_campaign_optimization_actions

List proposed optimizations

  • Read only

List reversible conversion-optimization proposals for a campaign, newest first. Each carries a rationale, the deciding metric named before the change, a confidence score, before_state, and a revert_command. Read this before proposing anything yourself.

Parameters

campaign_idstringRequired

Starts with camp_

apply_campaign_optimization_action

Apply an optimization to live bidding

  • Changes things
  • Confirm first

Apply one proposed optimization action to live delivery. You must restate expected_lever, which fails the call if the proposal changed since you read it. Only one action per campaign may be in flight, because two simultaneous changes make the result unattributable. After applying you are expected to judge it.

Parameters

campaign_idstringRequired

Starts with camp_

action_idstringRequired

Starts with copt_

expected_leverstringRequired
One of bid_modifier, supply_exclusion, budget_shift, bidding_strategy, cpa_target

judge_campaign_optimization_action

Keep or revert an applied optimization

  • Changes things
  • Confirm first

Record whether an applied optimization action is kept or reverted, with a note. REVERT IS A NORMAL OUTCOME, not a failure. An applied change that is never judged becomes permanent policy by default, which is the state this surface exists to prevent. Reverting restores the exact provider payload captured before the change.

Parameters

campaign_idstringRequired

Starts with camp_

action_idstringRequired

Starts with copt_

decisionstringRequired
One of kept, reverted
outcome_notestringRequired

1 to 2000 characters

Traffic audit 10

get_supply_audit_status

Get traffic audit status

  • Read only

Check Supply Audit (Beta) status for this account: whether nightly supply scanning is active, the detector thresholds in force, open finding counts, and the last scan including whether its provider read was truncated. Read this before interpreting findings.

Parameters

None.

activate_supply_audit

Turn on the nightly traffic audit

  • Changes things

Turn on nightly supply-quality scanning for this account. The scan is read-only against provider reporting: it never changes budgets, pauses campaigns, or writes exchange objects. Findings are recommendations only in this release.

Parameters

None.

deactivate_supply_audit

Turn off the nightly traffic audit

  • Changes things

Stop nightly supply-quality scanning for this account. Existing findings are retained so historical evidence is not lost.

Parameters

None.

update_supply_audit_policy

Update traffic audit settings

  • Changes things

Tune Supply Audit detector thresholds and scan cadence. Thresholds are in basis points where noted (100 bps = 1.00%). Raise floors to reduce noise; lower them to catch more marginal waste. Changes apply to the next scan, and existing findings keep the thresholds they were created under.

Parameters

lookback_daysintegerOptional

1 to 30

scan_interval_hoursintegerOptional

1 to 168

zero_click_min_spend_centsintegerOptional

At least 0

zero_click_min_impressionsintegerOptional

At least 0

high_ctr_min_impressionsintegerOptional

At least 0

high_ctr_absolute_floor_bpsintegerOptional

At least 1

high_ctr_relative_multiple_bpsintegerOptional

At least 1

low_pageview_min_clicksintegerOptional

At least 0

low_pageview_max_rate_bpsintegerOptional

At least 0

list_supply_audit_flags

List traffic audit findings

  • Read only

List supply-quality findings for this account, highest wasted spend first. Each finding names the supply entity, the detector that fired, the delivery metrics, and an evidence object with the thresholds and metric sources used. IMPORTANT: confidence `instrumentation_gap` means downstream behavior could not be measured and must NOT be read as proof of invalid traffic. Clicks are provider delivery clicks from the Reporting API `clicks` field, which is distinct from click tokens and from landing page views.

Parameters

statusstringOptional
One of open, acknowledged, dismissed, applied, expired, all
detectorstringOptional
One of zero_click_spend, high_ctr_no_downstream, low_click_to_pageview, unauthorized_ads_txt_delivery
entity_typestringOptional
One of placement, domain, site, app_bundle, inventory_source, publisher
limitintegerOptional

1 to 500

acknowledge_supply_audit_flag

Acknowledge a traffic finding

  • Changes things

Mark a supply finding as reviewed without rejecting it. Use this when you have seen a finding and plan to act on it later, so the next scan does not treat it as new.

Parameters

supply_audit_flag_idstringRequired

Starts with saf_

dismiss_supply_audit_flag

Dismiss a traffic finding

  • Changes things

Reject a supply finding as a false positive. The evidence is preserved rather than deleted so threshold tuning can be reviewed later.

Parameters

supply_audit_flag_idstringRequired

Starts with saf_

apply_supply_audit_flag

Create targeting that excludes a finding

  • Changes things

Act on an exchange-grain supply finding by creating a NEW targeting set that leaves the flagged exchange out. The new targeting is cloned from the targeting the flagged campaign already used, so geo, content, segment, environment, and device choices are preserved and only the exchange allowlist changes. This does NOT pause, edit, or activate any campaign or line item, does NOT write to Beeswax, and does NOT change any budget: point your next campaign at the returned targeting_id. Only `inventory_source` findings can be applied; placement, domain, site, and app_bundle findings are refused with code `grain_not_applicable` because Beeswax app_site list targeting is not available on this seat. An apply that would leave the allowlist empty is refused with `would_exclude_everything`, because an empty allowlist matches no inventory and the next campaign would not serve. If the source targeting had no exchange restriction, the response sets `narrowed_from_unrestricted` and the new allowlist contains only exchanges actually observed in the audit window, which narrows future reach; tell the buyer when that happens.

Parameters

supply_audit_flag_idstringRequired

Starts with saf_

run_supply_audit_scan

Run a traffic audit scan now

  • Changes things

Request a supply-quality scan now rather than waiting for the nightly run. The scan reads provider reporting for a window of COMPLETE days only, never the partial current day, because provider click counts keep settling after delivery stops. Provider reporting is asynchronous, so a scan left in `running` continues on the platform cron and does not need to be re-requested.

Parameters

forcebooleanOptional

list_supply_audit_scans

List traffic audit scans

  • Read only

List recent supply scan runs with their windows, row counts, finding deltas, and coverage caveats. Check `partial_coverage` before computing any share-of-spend figure from findings.

Parameters

limitintegerOptional

1 to 100

Testing sprints 6

set_sprint_policy

Set sprint budget policy

  • Changes things
  • Confirm first

Enable or disable testing sprints for this account and set the daily ceiling (total across all sprints, UTC day) and per-arm budget limits. Enabling adds a server-enforced ceiling and anti-circling rules around campaigns; every arm still passes the normal creative, destination and prepaid-balance gates.

Parameters

statusstringRequired
One of active, disabled
daily_ceiling_centsintegerOptional

500 to 100000

arm_min_centsintegerOptional

100 to 10000

arm_max_centsintegerOptional

100 to 10000

max_concurrent_sprintsintegerOptional

1 to 3

ceiling_override_centsinteger or nullOptional
ceiling_override_hoursintegerOptional

1 to 48

get_sprint_ledger

Get sprint ledger

  • Read only

READ THIS FIRST before proposing a sprint. Returns the policy, today's budget, the champion config the control must copy, open and closed variable families, every hypothesis already tested and its verdict, replicate_candidates ranked by pooled evidence with estimated spend to a verdict, supply_yield (human landings per dollar by exchange and environment: a hypothesis source for an exchange allowlist, never a verdict), eligible creatives, and the rules. Never re-propose a value that LOST.

Parameters

None.

launch_sprint

Launch a testing sprint (spends money)

  • Changes things
  • Costs money
  • Confirm first

Create and activate 2-4 NEW test campaigns (arms); this spends real money. The first sprint on an account must be an A/A (kind "aa", two identical arms). After that: one control equal to the champion, and challengers that each change exactly ONE variable family (use variable_family "mixed" with a per-arm variable_family to test several families around one shared control). A refusal carries a `guard` and is final for that idea. There is no campaign update verb; arms are only created new.

Parameters

kindstringRequired
One of aa, ab
hypothesisstringRequired

10 to 500 characters

variable_familystringRequired
One of bid_cpm, exchange_allowlist, supply_blocklist, device_type, environment, content_category, audience_segment, creative, ads_txt, geo,
Show 3 morebid_shading, none, mixed
predicted_directionstringOptional

Default "improve"

One of improve, worsen
deciding_metricstringRequired
One of cost_per_human_landing_cents, human_landing_rate_bps, trap_rate_bps, cpm_cents, cost_per_conversion_cents
armsarray of objectRequired

2 to 4 items

labelstringRequired

Pattern ^[a-z0-9-]{1,24}$

rolestringRequired
One of control, challenger
creative_idstringRequired

Starts with cr_

targeting_idstringRequired

Starts with tgt_

bid_cpm_centsintegerRequired

50 to 5000

bid_shading_controlstring or nullOptional
budget_centsintegerRequired

100 to 10000

value_summarystringOptional

Up to 200 characters

variable_familystringOptional
One of bid_cpm, exchange_allowlist, supply_blocklist, device_type, environment, content_category, audience_segment, creative, ads_txt, geo,
Show 1 morebid_shading
harness_thread_idstringOptional

Up to 64 characters

model_idstringOptional

Up to 64 characters

conversion_event_idstringOptional

Starts with cevt_

get_sprint

Get sprint

  • Read only

Sprint and arms. Also advances a running sprint to spent_out from live spend and sets readout_due_at (at most 2 hours after spend-out for landing sprints, earlier once reporting has covered the hour after the last spend; 24 hours for conversion sprints).

Parameters

sprint_idstringRequired

Starts with spr_

get_sprint_readout

Get sprint readout

  • Read only

Per-arm spend, impressions, human (publisher-referred) landings with scanner traffic broken out, human landings by exchange, conversions for conversion sprints, and the first-party traffic grade. `ready` says whether the sprint can be closed yet.

Parameters

sprint_idstringRequired

Starts with spr_

close_sprint

Close a sprint

  • Changes things
  • Confirm first

Close a sprint whose readout is ready. The SERVER computes the verdict (WIN, LOSE, or INCONCLUSIVE) from pooled evidence; report the verdict it returns. The agent_summary may quote only dollar figures present in the readout.

Parameters

sprint_idstringRequired

Starts with spr_

agent_summarystringRequired

20 to 4000 characters

harness_thread_idstringOptional

Up to 64 characters

Workspace and teams 6

get_my_workspace_access

Get my workspace access

  • Read only

Read what THIS API key may do before acting. A key is bound to exactly ONE organization (returned as organization: account_id, name, role); to work in another organization, connect it separately and pick it on the consent screen. Returns account_id plus access: role (owner, admin, or member), scope (all_campaigns or team_campaigns), can_create_campaigns, can_manage_workspace, can_manage_billing, and the teams it holds seats on with read or edit permission. A member key only sees campaigns in its own teams; others return 404 rather than appearing in lists, and billing, webhooks, sprints, Supply Audit, and people management return 403. Call this first when a campaign you expect is missing or a call is refused, instead of retrying.

Parameters

None.

list_teams

List teams

  • Read only

List teams in this workspace with member_count, campaign_count, and my_permission (read or edit). Owner and admin keys see every live team. A member key sees only the teams it sits on, and only the campaigns in those teams anywhere in the API. Teams group campaigns for access; the wallet, creatives, targeting, and conversion events stay shared across the workspace.

Parameters

None.

create_team

Create a team

  • Changes things

Create a named team (owner and admin keys only). Names are unique among live teams. A new team is empty: put campaigns in it with move_campaign_to_team or team_id on create_campaign / copy_campaign, and add people with invite_teammate.

Parameters

namestringRequired

1 to 80 characters

descriptionstringOptional

Up to 500 characters

list_workspace_members

List workspace members

  • Read only

List everyone in this workspace: user_id, email, role (owner, admin, member), joined_at, last_login_at, and team seats with read or edit permission. Owner and admin keys only; a member key gets 403 and should use get_my_workspace_access to read its own seats.

Parameters

None.

invite_teammate

Invite a teammate by email

  • Changes things

Invite a person by email (owner and admin keys only). role member needs team_id and permission: read views the campaigns and reporting in that team; edit can also create, copy, activate, pause, and change creatives on them. role admin takes no team_id or permission, because admins see and manage every team, billing, and people. The API emails the invite; accepting needs a six-digit code sent to the invited address, so invite_url is safe to give the human but cannot be used to join without that inbox. If the email already belongs to this workspace, no invite is created and the person is seated on the team directly (added_existing_member: true). If email_sent is false, share invite_url.

Parameters

emailstringRequired

Format: email

rolestringOptional

Default "member"

One of admin, member
team_idstringOptional

Starts with team_

permissionstringOptional
One of read, edit

move_campaign_to_team

Move a campaign to a team

  • Changes things

Move one campaign to another team, or to unassigned with team_id null (unassigned is owner and admin keys only). Moving changes only who can see and edit the campaign. It never changes delivery, budgets, targeting, creatives, the exchange line item, or spend history. A member key needs edit on BOTH the current and the destination team, and cannot see unassigned campaigns or campaigns outside its teams (404).

Parameters

team_idstring or nullRequired

Null moves the campaign to unassigned (admins only).

campaign_idstringRequired

Starts with camp_