---
title: "Edit the copy on a ChatGPT Ads ad"
method: POST
path: "/api/v1/tools/chatgpt_update_ad/execute"
tags: ["ChatGPT Ads"]
---

# Edit the copy on a ChatGPT Ads ad

`POST /api/v1/tools/chatgpt_update_ad/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/chatgpt_update_ad/execute`
- Auth: HTTP bearer

Changes the headline, body copy or destination URL on an existing chat card. The creative is replaced as a whole, so everything not being changed — the uploaded image above all — is sent back with it and nothing is silently dropped.
Use when: the user wants different copy on an ad that already exists, or the landing page has moved. Read the ad first with chatgpt_list_ads so the before/after you show is real.
Do not use it to change the image: an image is uploaded when the ad is created, so a new picture means a new ad with chatgpt_create_ad. Do not use it to pause or resume — those tools state the risk properly.
Editing a creative sends the ad back into review on this platform. An approved ad stops delivering until it is approved again, which is a real cost on a good ad — say so before the user approves the change.
Returns the ad read back from the platform, including its review verdict, so the new copy and the new review state are confirmed rather than assumed. The limits are the same as when creating: title 3–50, body at most 100, https destination.
At least one of title, body or target_url must be given. Do not rewrite the user's wording to fit a limit — tell them it is too long and ask.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `ad_account_id` string: ChatGPT Ads advertiser account id. One advertiser key belongs to one account, so this is only needed when the user has connected more than one key. Omit it to use the primary account.
    - `ad_id` string, required: The ad to edit, from chatgpt_list_ads.
    - `title` string: New headline, 3–50 characters.
    - `body` string: New body copy, at most 100 characters.
    - `target_url` string, uri: New destination URL. Must be https.
    - `name` string: New ad name in Ads Manager. Cosmetic; does not affect delivery.
    - `idempotency_key` string: Optional caller-supplied key; identical keys never execute twice.
    - `raw_data` boolean: Return compact JSON only (no markdown). Use when you will compute on the result.

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

[API](https://skmtc.dev/adako/apis/adako-rest-api.md) · [All operations](https://skmtc.dev/adako/apis/adako-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adako/apis/adako-rest-api/revisions/59ee60d48a56?raw)
