API Reference โบ Google Ads โบ get_ad_creative
get_ad_creative
Google Ads
Read
๐จ **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/get_ad_creative/execute
Headers
Authorization: Bearer sk_live_... โ your Adspirer API key (required)
Content-Type: application/json (required)
Idempotency-Key: <uuid> โ recommended for write operations to make retries safe
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
Read/export the creative composition of existing ads โ videos, images (downloadable URLs), and all text.
This tool retrieves READ-ONLY data via 2 live GAQL queries (cached 15 min in Redis). Safe to call multiple times.
**Why this tool:** `get_campaign_structure` shows ads but not what they're made of. This tool returns the full creative payload of any existing ad so you can audit, archive, or rebuild winners into other formats.
**Returns per ad:**
- Identity: `ad_id`, `ad_name`, `ad_type`, `status`, `ad_strength`, ad group + campaign context
- **Videos:** YouTube `video_id` + `watch_url` + `thumbnail_url` + title per video asset
- **Images:** direct downloadable `url` (Google CDN) + `width`/`height` + `mime_type` + `role` (marketing / square_marketing / portrait_marketing / logo / square_logo)
- **Text:** `headlines[]`, `long_headlines[]`, `descriptions[]`, `business_name`, `call_to_actions[]`
- **Carousel ads:** per-card headline + CTA + card images (resolved to URLs)
- `final_urls`, `display_url`; RSA `path1`/`path2`; RDA colors
**Supported ad types (v1):** DEMAND_GEN_VIDEO_RESPONSIVE_AD, DEMAND_GEN_MULTI_ASSET_AD, DEMAND_GEN_CAROUSEL_AD, RESPONSIVE_SEARCH_AD, RESPONSIVE_DISPLAY_AD. PMax creative lives in asset groups (no per-ad rows) โ not covered; use list_pmax_asset_group_images.
**Known API limits (not bugs):** video files are NOT downloadable via the Google Ads API (YouTube watch URL is the canonical reference); per-video orientation (landscape/square/portrait) is not exposed by the API.
**Parameters:**
- customer_id: Optional (uses connected account if omitted)
- ad_id: single ad โ OR ad_group_id โ OR campaign_id (bulk). At least one required.
- status_filter: 'all' (default โ includes paused, useful for archiving) | 'enabled'
- limit: max ads (default 50, max 100)
**Execution time:** 2-5 seconds (2 GAQL queries, then cached 15 min)
**Use this tool when:**
- User asks "what's in this ad?", "download/export my creatives", "which video/image does this ad use?"
- After get_ad_performance identified a winner/loser and the user wants to see or reuse its creative
- User wants to rebuild a winning ad in another format or audit live creatives
**Tip:** Pair with `get_ad_performance` โ performance tells you WHICH ad wins, this tells you WHAT it's made of.
Request body
All tool arguments are wrapped in an arguments object.
| Field | Type | Description |
customer_id | string optional | Google Ads customer ID. Required for multi-account users. Get from get_connections_status. |
ad_id | string optional | A single ad ID to export (from get_ad_performance or get_campaign_structure). |
ad_group_id | string optional | Export all ads in this ad group. |
campaign_id | string optional | Bulk: export all ads in this campaign (from list_campaigns). |
status_filter | string optional | 'all' (default โ every non-REMOVED ad, paused included for archiving) or 'enabled' (only ENABLED ads). default: "all" |
limit | integer optional | Max ads returned (default 50, max 100). default: 50 |
raw_data | boolean optional | Return the full raw JSON payload instead of formatted markdown. default: false |
Example request
{
"arguments": {
"customer_id": "string",
"ad_id": "string",
"ad_group_id": "string",
"campaign_id": "string",
"status_filter": "all",
"limit": 50
}
}
Example responses
200 โ Success
{
"success": true,
"data": {
"text": "(tool-specific textual output for get_ad_creative)",
"quota": {
"used": 42,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01"
}
},
"tool": "get_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": "get_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": "get_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