update_display_ad_creative

Google Ads Write

๐Ÿšจ **IF THIS TOOL RETURNS A QUOTA ERROR:** - The error message will include a clickable upgrade link - Show the FULL error message to the user (it contains the upgrade link) - DO NOT attempt to work ar

Endpoint

POST https://api.adspirer.ai/api/v1/tools/update_display_ad_creative/execute

Headers

Description

๐Ÿšจ **IF THIS TOOL RETURNS A QUOTA ERROR:** - The error message will include a clickable upgrade link - Show the FULL error message to the user (it contains the upgrade link) - DO NOT attempt to work around the error or use alternative data - DO NOT create campaigns or perform actions without valid tool data - STOP and direct the user to upgrade via the provided link Edit any combination of CREATIVE fields on a Responsive Display Ad. Complements `update_ad_content` (which handles headlines / descriptions / long_headline / final_urls). This tool handles EVERYTHING ELSE on the RDA. **Text fields:** - `business_name` (max 25) - `main_color` / `accent_color` (hex e.g. '#FFAABB') - `allow_flexible_color` (bool) - `price_prefix` (max 10) - `promo_text` (max 20) - `call_to_action` (enum label like SHOP_NOW, LEARN_MORE, or free-form โ‰ค30 chars) - `format_setting` (ALL_FORMATS | NATIVE | NON_NATIVE) **Image + video fields** (REPLACE the entire list when provided โ€” you may supply both URL objects to upload AND existing asset resource names to reuse; they're merged): - `marketing_images`: landscape 1.91:1 URLs to upload - `square_marketing_images`: square 1:1 URLs - `logo_images`: landscape 4:1 logos - `square_logo_images`: square 1:1 logos - `youtube_video_ids`: list of YouTube IDs - `existing_*_images`: reuse existing asset resource names (from discover_existing_assets) **Workflow tip** โ€” to add images WITHOUT replacing: first call `get_campaign_structure` or `discover_existing_assets` to get the current resource names, then pass them as `existing_*_images` AND your new ones as `marketing_images`. The service merges them. **At least one field must be provided.** Any omitted field is not touched. **Execution time:** 4-10 seconds (includes image uploads if any).

Request body

All tool arguments are wrapped in an arguments object.

FieldTypeDescription
ad_group_idstring requiredParent ad group ID.
ad_idstring requiredRDA (AdGroupAd) ID to update.
business_namestring optionalBusiness name, max 25 chars.
main_colorstring optionalHex color like '#RRGGBB' or '#RGB'.
accent_colorstring optionalHex color.
allow_flexible_colorboolean optionalLet Google pick optimal colors.
price_prefixstring optionalMax 10 chars, e.g. 'from'.
promo_textstring optionalMax 20 chars, e.g. 'Up to 50% off'.
call_to_actionstring optionalCTA label (SHOP_NOW, LEARN_MORE, etc.) OR free-form โ‰ค30 chars.
format_settingstring optionalALL_FORMATS | NATIVE | NON_NATIVE.
marketing_imagesarray optionalLandscape images (1.91:1) to UPLOAD: [{url,name?},...]. Uploads + replaces list.
square_marketing_imagesarray optionalโ€”
logo_imagesarray optionalโ€”
square_logo_imagesarray optionalโ€”
youtube_video_idsarray optionalYouTube video IDs (replace entire video list).
existing_marketing_imagesarray optionalReuse existing image asset resource names.
existing_square_marketing_imagesarray optionalโ€”
existing_logo_imagesarray optionalโ€”
existing_square_logo_imagesarray optionalโ€”
customer_idstring optionalRequired for multi-account users.

Example request

{
  "arguments": {
    "ad_group_id": "string",
    "ad_id": "string",
    "business_name": "string",
    "main_color": "string",
    "accent_color": "string",
    "allow_flexible_color": false,
    "price_prefix": "string",
    "promo_text": "string"
  }
}

Example responses

200 โ€” Success

{
  "success": true,
  "data": {
    "text": "(tool-specific textual output for update_display_ad_creative)",
    "quota": {
      "used": 42,
      "limit": 150,
      "tier": "plus",
      "period_end": "2026-05-01"
    }
  },
  "tool": "update_display_ad_creative"
}

400 โ€” Tool-level error (bad arguments / multi-account selection)

{
  "success": false,
  "error": "You have 25 meta_ads accounts connected. Please specify which account to use by passing the ad_account_id parameter:\n  - Acme Holdings (ad_account_id=\"act_123456789\")\n  - Acme EU (ad_account_id=\"act_987654321\")",
  "is_error": true,
  "tool": "update_display_ad_creative"
}

402 โ€” Quota exhausted

{
  "success": false,
  "error": "\ud83d\udea8 Monthly limit reached (150/150 tool calls on Plus tier).\nUpgrade to Pro at https://adspirer.ai to keep building.",
  "is_error": true,
  "tool": "update_display_ad_creative",
  "quota": {
    "used": 150,
    "limit": 150,
    "tier": "plus",
    "period_end": "2026-05-01",
    "upgrade_url": "https://adspirer.ai"
  }
}

Try it live


Adspirer REST API โ€” get an API key at adspirer.ai/keys ยท adspirer.ai