When to copy a campaign instead of editing it
Iterate ads without mixing tests by copying the campaign and changing one layer. Public campaign copy plus creative associations are the path. Do not pause or remove the final active creative.
Published 2026-09-09 · Search job: iterate ads without mixing tests
Iterate ads without mixing tests by copying the campaign when the isolation changes, and by using creative associations when only the asset changes. Editing a live cell until it contains two promises is how the readout becomes an average.
Campaign creative management is public and association-based as of the June 24, 2026 release. Buyers and agents can list, add, replace, pause, resume, and remove creative associations, and they can copy a campaign, through REST, CLI, and MCP. POST /campaign/:id/copy, ztdsp campaign copy, and MCP copy_campaign create a pending-review copy with copied or caller-supplied creative associations. Do not go back to direct Neon or Beeswax operator writes for ordinary external-agent iteration.
Copy when the stack changes
Copy when you change angle, targeting hypothesis, inventory, page template, or wave. Rename the new cell so a stranger can see which segment moved: Name the campaign so a stranger can read the stack. Keep the old cell running or paused as the control. That is the ideas-side version of one change at a time.
Add, replace, or resume on the copy must still preserve creative destination checks, the recorded exchange creative id, balance, budget, targeting, and activation rules. Copy is not a bypass.
Associate when only the creative changes
If the campaign cell is still the same experiment, add or replace an approved creative on that campaign. Pause a weak variant. Do not pause or remove the final active creative association. The API blocks that on purpose: a campaign with zero active creatives is not a paused test, it is an object that cannot serve and cannot be judged.
The June 2026 learning campaign is why this surface exists. The earlier iteration script had to use public APIs for creative checks, then use direct database and exchange writes for extra creative-line-item associations. New agent work should stay on the public path.
What not to mix
Do not edit the live click URL from an isolated /lp to a different promise. Do not fold a consumer /sb offer into a product campaign. Do not rotate a new angle onto old targeting and call it the same test.
Copy is the clean split. Association is the live rotation. Both are seat-verified product surfaces. The judgment call is which layer you are changing. If you cannot name that layer in the campaign name, copy first.