Update Responsive Search Ad
update_rsaEDITS the copy of an existing Google Ads RESPONSIVE SEARCH AD (RSA) in place — swap, drop or add a headline or description while keeping the SAME ad and its performance history. This is the tool for "remove that one headline", "replace this description", "add two more headlines"; rebuilding the ad instead would reset its learning, burn one of the 3 enabled-RSA slots in the ad group, and leave a paused near-duplicate behind.
TWO WAYS to give the change, and the partial one is usually what you want: • PARTIAL (recommended): remove_headlines / add_headlines / remove_descriptions / add_descriptions. The live ad is read first, only your delta is applied, and everything you did not mention — including each surviving asset's PIN — is written back unchanged. remove_* matches on the exact text; a text that is not in the ad is reported instead of silently ignored. • FULL REPLACE: headlines / descriptions replace ALL existing ones, so you must re-send every line you want to keep. Do not mix the two for the same field. Google limits either way: 3-15 headlines ≤30 chars, 2-4 descriptions ≤90 chars — checked before the call, so an edit that would leave too few is refused rather than rejected by Google.
final_url/path1/path2 optional. To change ONLY the destination URL, pass just final_url (leave the copy fields empty) — this updates final_urls on standard ads (RSA and other final-URL ad types). NOTE: call-only ads (CALL_AD) do NOT allow their URL to be edited via the API (Google returns VALUE_MUST_BE_UNSET); a call ad must be recreated with the new URL. To DELETE an ad entirely use update_ad_status(status='REMOVED'). PINNING: headline_pins / description_pins are optional lists in the SAME ORDER as the headlines/descriptions given; each entry pins that text to a fixed position — headline 1/2/3, description 1/2 (0/empty = unpinned). E.g. headline_pins=[1,0,0] pins the first headline to position 1. Google's own field names are accepted too, so headline_pins=['HEADLINE_1','',''] means the same thing. A position-to-text dictionary is NOT accepted — the list must follow the same order as the headlines you send. Text or pin changes start a new Google review. Pins are part of the replaced content, so send them together with the headlines/descriptions. confirm=false → dry-run.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | ||
| path1 | No | ||
| path2 | No | ||
| confirm | No | ||
| final_url | No | ||
| headlines | No | ||
| customer_id | Yes | ||
| descriptions | No | ||
| add_headlines | No | ||
| headline_pins | No | ||
| add_descriptions | No | ||
| description_pins | No | ||
| remove_headlines | No | ||
| remove_descriptions | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||