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
POST https://api.adspirer.ai/api/v1/tools/update_campaign/execute
Authorization: Bearer sk_live_... โ your Adspirer API key (required)Content-Type: application/json (required)Idempotency-Key: <uuid> โ recommended for write operations to make retries safeAll tool arguments are wrapped in an arguments object.
| Field | Type | Description |
|---|---|---|
campaign_id | string required | The campaign ID to update. Use list_campaigns first to get available campaign IDs. |
name | string optional | New campaign name (optional) |
status | string optional | New status: ENABLED or PAUSED (optional) |
budget_amount | number optional | New daily budget in dollars, e.g., 50.00 for $50/day (optional) |
target_search_network | boolean optional | Search Partners network toggle. Default OFF on new campaigns. Search Partners traffic typically has 30โ50% lower conversion rates than google.com search โ only enable when explicitly requested. Pass true to enable, false to disable. |
target_content_network | boolean optional | Display Network expansion for Search campaigns. Default OFF on new campaigns. Display traffic has very different user intent โ only enable when explicitly requested. Pass true to enable, false to disable. |
language_codes | array optional | REPLACE the campaign's language targeting with this list. ISO-639-1 codes (`en`, `es`, `fr`, `de`, `pt`, `it`, `nl`, `ja`, `zh`, `ko`, `ru`, `ar`, `hi`, `tr`, `pl`, `id`, `th`, `vi`, `sv`, `fi`, `da`, `no`, `cs`, `el`, `he`, `hu`, `ro`, `sk`, `uk`, `bg`, `bn`, `ml`, `ta`, `te`, `mr`, `ur`, `fa`, `ms`, `tl`, `lt`, `lv`, `et`, `sl`, `hr`, `sr`, `ca`, `is`) or `languageConstants/<id>` resource names from `list_google_languages`. Pass `["en"]` for English-only targeting. Sending this REPLACES the campaign's existing language criteria โ pass the full intended list. |
locations_to_add | array optional | Locations to ADD to the campaign's geo targeting. Accepts free-text (`'Miami, FL'`, `'United States'`) OR `geoTargetConstants/<id>` resource names from `resolve_google_locations`. New criteria are appended โ existing targets are untouched. To remove existing targets, use `locations_to_remove`. |
locations_to_remove | array optional | Locations to REMOVE from the campaign's geo targeting. Each entry must be a criterion resource name in the form `customers/<cid>/campaignCriteria/<campaign_id>~<criterion_id>`. Call `get_campaign_targeting` first to get the exact resource names for currently-targeted locations. |
audience_targeting_mode | string optional | Campaign-level audience targeting mode for AUDIENCE dimension: `OBSERVATION` (audience signals only inform reporting and bid adjustments โ ads still serve to non-audience users) or `TARGETING` (ads ONLY serve to users in the listed audience segments). OBSERVATION is the default and matches the SOP for most Search campaigns. Switching to TARGETING narrows reach significantly โ confirm with user. |
ai_max_enabled | boolean optional | Google Ads AI Max toggle on Search campaigns. AI Max uses Google's AI to expand match types and rewrite ads beyond what the advertiser specified. SOPs that require exact-match-only or fixed ad copy should keep this OFF. Pass `false` to disable, `true` to enable. Only affects Search campaigns โ ignored on PMax/Display. |
customer_id | string optional | Google Ads customer ID. Required for multi-account users. Get from get_connections_status. |
{
"arguments": {
"campaign_id": "<campaign_id>",
"name": "string",
"status": "string",
"budget_amount": 1.0,
"target_search_network": false,
"target_content_network": false,
"language_codes": [
"string"
]
}
}
{
"success": true,
"data": {
"text": "(tool-specific textual output for update_campaign)",
"quota": {
"used": 42,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01"
}
},
"tool": "update_campaign"
}
{
"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_campaign"
}
{
"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_campaign",
"quota": {
"used": 150,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01",
"upgrade_url": "https://adspirer.ai"
}
}
Interactive: Swagger UI
Machine-readable: OpenAPI 3.1 spec ยท llms-full.txt
More tools: Google Ads ยท All tools
Adspirer REST API โ get an API key at adspirer.ai/keys ยท adspirer.ai