GuidesArticleSeat-verified

Rotate creatives on a live campaign

Add, replace, pause, resume, or remove creatives through campaign associations. The API blocks pause or remove of the final active creative. Copy the campaign when the next test would mix the first.

Published 2026-09-09 · Search job: swap ad creative without pausing

You swap a live ad by changing campaign creative associations, not by rebuilding the campaign. You cannot pause or remove the final active creative.

That rule is in the public API. Dashboard, ztdsp campaign creatives, MCP creative-management tools, and POST /campaign/:id/creatives all share it. Ordinary iteration should not go back to direct database or exchange writes.

What an association is

A campaign points at creatives through campaign_creative_associations. The creative itself keeps its review status, destination status, and exchange creative id. Adding an approved variant does not copy those checks away. Add, replace, and resume must still see an approved creative, an approved destination, a recorded exchange creative id, available prepaid balance, budget, targeting, and the usual activation checks.

You can:

  • List the associations on a campaign.
  • Add an approved creative as another variant.
  • Replace the primary creative with another approved one.
  • Pause or resume one association while another stays active.
  • Remove an association that is not the last active one.
  • Copy the campaign, with the same association set or with replacement creative ids.

CLI: ztdsp campaign creatives list|add|replace|pause|resume|remove and ztdsp campaign copy. MCP names match: list_campaign_creatives, add_campaign_creative, replace_campaign_creative, pause_campaign_creative, resume_campaign_creative, remove_campaign_creative, copy_campaign.

Why the last active creative stays

A campaign with zero active creatives is not a paused test. It is a live object that cannot serve, with no honest "this is the control." Blocking pause and remove of the final active association keeps one serving ad on the campaign you meant to keep running. If you want the whole campaign quiet, pause the campaign.

If you want a clean next cell (new page, new audience, new promise), copy. Editing the live campaign's only creative and its targeting in the same afternoon mixes the test. The isolated funnel note is about the page. This page is about the ad object.

What the agent should not do

It should not submit a second creative and assume the first stopped. It should not invent association ids. It should not treat a pending review as rotatable. It should not pause the last ad "just for a minute" and expect the API to allow it.

After a rotation, read delivery with freshness fields. A new creative can be approved and still take time to show in provider rows. Do not declare the old message the winner on an hour of CTR.

The parent buyer job is Buy ads without an agency. The agent loop that calls these tools is How an agent buys ads.