# Replace ad creative (edit ad content) (adsap_replace_ad_creative)

Edits the content of a live Meta ad: primary text, headline, description, call to action, destination link, display link, URL parameters, and the image or video.

Canonical: https://adsap.ai/docs/tools/adsap_replace_ad_creative
Updated: 2026-09-13

**Platform:** Meta · **Read or write:** Write · **Plan:** Early Access · **Consumes a task:** Yes · **Preview supported:** Yes

## What it does

Edits the content of a live Meta ad: primary text, headline, description, call to action, destination link, display link, URL parameters, and the image or video. Meta creatives cannot be edited in place, so the copilot builds a new creative and points the ad at it. The ad keeps its id. Ask for a preview first: it returns the before and after diff plus the current media slots.

## Parameters

Descriptions are shortened from the tool schema. Your assistant sees the full text.

| Name | Type | Required | Description |
|---|---|---|---|
| `ad_id` | string | Yes | The Meta AD id to edit (the ad, not the creative). The ad keeps this id; only its creative is replaced. |
| `ad_account_id` | string | Yes | act_&lt;digits&gt;. |
| `creative_spec` | object | Yes | The content fields to change. Text fields are ARRAYS: send the complete set with edits applied; unchanged entries are kept. Media swaps use creative-library assets only (image-&gt;image, video-&gt;video). |
| `creative_spec.primary_texts` | array of string | No | Full ordered set of primary-text (body) variations, WITH your edits applied. Send ALL of them: entries you don't change are preserved verbatim. Omit to leave every primary text unchanged. |
| `creative_spec.headlines` | array of string | No | Full ordered set of headlines, WITH your edits applied. Send ALL of them: unedited entries are preserved. Omit to leave headlines unchanged. |
| `creative_spec.description` | string | No | Link description (single value). Omit to leave unchanged. |
| `creative_spec.cta_type` | string | No | Call-to-action button enum, e.g. SHOP_NOW, LEARN_MORE, SIGN_UP. Omit to leave unchanged. |
| `creative_spec.link` | string | No | Destination URL. Omit to leave unchanged. |
| `creative_spec.display_link` | string | No | The display link / caption domain shown on the ad (e.g. example.com). Omit to leave unchanged. |
| `creative_spec.url_tags` | string | No | URL tracking parameters (UTM) appended to the destination, e.g. 'utm_source=facebook&utm_medium=cpc'. Omit to leave unchanged. |
| `creative_spec.image_hash` | string | No | Single-image shorthand: a creative-library image hash to swap the ad's one image. For multi-image ads (e.g. square + vertical) use `media` instead. Like-for-like only: you can't put an image on a video ad. |
| `creative_spec.video_id` | string | No | Single-video shorthand: a creative-library video id to swap the ad's one video. For multi-asset ads use `media`. Like-for-like only. |
| `creative_spec.media` | array of object or null | No | Multi-slot media swap. One entry per existing media slot, IN THE ORDER returned by a dry_run's current_media; null = keep that slot unchanged. Each entry sets image_hash OR video_id matching that slot's type. |
| `dry_run` | boolean | No | Preview only: the request is validated and the resolved payload returned, nothing is created or changed. |

## Example prompts

- "Change the headline on the Blue Sneaker ad to 'Now 30% off' and keep everything else."
- "Swap the image on the Blue Sneaker ad for the new lifestyle shot from the creative library."
- "Preview replacing the destination URL on this ad with the new landing page."

## Notes

Editing a spending ad can reset its likes, comments and shares and restart the learning phase. Media swaps are like for like: image to image, video to video, from the creative library only.

## Related tools

- [`adsap_create_ad_from_ig_post`](/tools/adsap_create_ad_from_ig_post): Turn an existing Instagram post, video, or reel into an ad inside an EXISTING ad set: Meta Ads Manager's "Use existing post".
- `adsap_get_ad_library_snapshot`: Show what an Ad Library ad ACTUALLY LOOKS LIKE (creative, copy, page name), in a SELF-CONTAINED card.
- [`adsap_get_ad_preview`](/tools/adsap_get_ad_preview): Render a pixel-accurate visual preview of an existing Meta ad (real Meta render; video ads also get an animated clip in the interactive...
- [`adsap_get_creative_performance`](/tools/adsap_get_creative_performance): Ranked creative performance analysis with fatigue detection.
- `adsap_get_import_status`: Check progress of a Meta historical-asset import started with adsap_import_account_creatives: status, phase (images then videos)...
- [`adsap_get_preview_clip`](/tools/adsap_get_preview_clip): Fetch the animated placement-preview clip (recorded video of the real Meta preview) for an ad+placement previously rendered with...
- [`adsap_get_upload_status`](/tools/adsap_get_upload_status): Check status of an async video upload.
- `adsap_import_account_creatives`: Import ALL historical creative assets (images + videos) that already exist in a Meta ad account into the Adsap Creative Library.
- [`adsap_list_creative_assets`](/tools/adsap_list_creative_assets): List uploaded Meta creative images and videos in the ad account asset library.
- `adsap_list_drive_files`: Browse Google Drive for creative image/video files to upload to Meta.
- `adsap_list_dropbox_files`: Browse Dropbox for creative image/video files to upload to Meta.
- `adsap_list_ig_media`: List an Instagram account's recent media/posts (live from Meta): the posts, reels, and stories that can be promoted.
- `adsap_search_ad_library`: Search Meta's public Ad Library for ads (competitor research / ad transparency).
- [`adsap_upload_creative`](/tools/adsap_upload_creative): Upload image/video from Google Drive or Dropbox to a Meta ad account.

## Guide

Read [Creatives](/guides/creatives) for the workflow around this tool, and the [Tool reference](/tools) for every tool.
