API-first media buying
Media buying through REST, ztdsp, and MCP on one prepaid account. The dashboard is the same account, not a different product.
Published 2026-09-09 · Search job: media buying API
API-first here means the agent and the script are first-class, not that the website is a toy.
Adprime Zero exposes one account through REST, the ztdsp CLI, MCP (npx -y ztdsp mcp), and the dashboard. Targeting, creative submit, campaign create, creative rotation, funding-link request, conversion events, and performance query all share that account. An agent that stores ADP_ZERO_API_KEY is not using a shadow API. It is using the public one.
This is still prepaid remnant display, not a generic "media buying API" that covers search, social, and CTV. Honest scope matches programmatic ads for startups.
What the API is for
Builders who already live in Cursor, Claude Code, Codex, or a workflow runner. The discovery document is the API root plus ztdsp agent-guide. The quickstart is public: set ADP_ZERO_API_URL to https://adp-zero-api.adam-25a.workers.dev, create or connect an account, request a prepay link, create targeting, submit creative, launch.
MCP is the same surface in tool form. The MCP setup card is the client block. After tools appear, the launch rules stay: do not invent Beeswax IDs, do not collect cards, do not embed the API key in a browser tag.
Webhooks exist for funded accounts, creative updates, campaign activated or paused, destination URL changes, and conversion received or attributed. Subscribe if the agent should wake on those events instead of polling forever.
What "first" does not mean
It does not mean the dashboard is deprecated. People still open funding pages and review status in a browser. External-agent funding links open login with the account email pre-filled, then continue to Stripe Checkout or the demo wallet.
It does not mean every exchange object is yours to PATCH. Campaign creative management is association-based on purpose. Add, replace, pause, resume, remove, and copy go through public routes. Direct database or Beeswax writes are not the product path.
It does not mean reporting is a single number. Delivery clicks use the clicks plural field. Snapshot rows and hourly rows cover the same auctions if you sum them wrong. generated_at is response time. Provider freshness is separate. The June 26, 2026 correction exists because the wrong field name looked like zero activity. See clicks plural.
Compared with a DSP API
A DSP API assumes you already have a seat and a trafficking model. Our API assumes you have an Adprime Zero account and a prepaid balance. You get buyer objects (camp_, cr_, targeting IDs, cevt_). You do not get to mint exchange IDs by guessing.
A DSP API often includes deals, lists, and bidder configuration. Those remain trader or account-manager work on this stack. The API will not pretend otherwise.
When to use it
Use the API or MCP when an agent should create the next cell, rotate a creative, or pull performance without a person clicking through every screen.
Use the dashboard when you are looking at review status, funding, or a readout you want to see.
Use both on the same account. If they disagree, trust freshness fields and first-party visits over a guessed CTR. Then read how to judge display traffic before you write another script that "optimizes."