# PUT /v1/projects/:projectId/ads/:platform/ads/:adId/creative (/docs/api/reference/ads/replace-creative)



<Endpoint method="PUT" path="/v1/projects/:projectId/ads/{platform}/ads/:adId/creative" scope="ads:write:creative" phase="1" />

Atomically swaps the active creative on an ad. Body and authority same as [`POST …/ads/:adId/creative`](/docs/api/reference/ads/push-creative); the difference is REST semantic — PUT replaces, POST adds.

On Meta with `creative` axis `auto`, Layers handles the swap as a single platform-side mutation. On `draft`, both the new creative and the implicit "remove old" land as paired pending actions.

## See also [#see-also]

* [`POST …/ads/:adId/creative`](/docs/api/reference/ads/push-creative)
* [Ads write model](/docs/api/concepts/ads-write-model)
