Meta Ads Write
User wants to update an existing Meta campaign's status, budget, name, or schedule
POST https://api.adspirer.ai/api/v1/tools/update_meta_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 | **REQUIRED.** The Meta Campaign ID to update. If you don't have it, call `list_meta_campaigns` first. You MUST also provide at least one update field (status, name, daily_budget, lifetime_budget, start_time, stop_time, or bid_strategy) — do NOT call this tool with only a campaign_id and no changes. Note: objective cannot be changed after creation; targeting and optimization_goal live at the ad set level (use `update_meta_ad_set`). |
status | string optional | New status: 'ACTIVE', 'PAUSED' (optional) |
name | string optional | New campaign name (optional) |
daily_budget | number optional | New daily budget in the ad account's OWN CURRENCY as a decimal — NOT cents, and NOT converted to USD. For 20/day send 20, not 2000 (the tool converts to Meta's internal unit for you; sending cents books a 100x budget). |
lifetime_budget | number optional | New lifetime budget in the ad account's OWN CURRENCY as a decimal — NOT cents, and NOT converted to USD. For a 500 total send 500, not 50000. |
start_time | string optional | New start time in ISO format YYYY-MM-DDTHH:MM:SS (optional) |
stop_time | string optional | New stop time in ISO format YYYY-MM-DDTHH:MM:SS (optional) |
bid_strategy | string optional | Campaign bidding strategy (optional). One of: 'LOWEST_COST_WITHOUT_CAP' (automatic bidding, Meta's default), 'LOWEST_COST_WITH_BID_CAP' (manual bid cap), 'COST_CAP' (target cost per result), 'LOWEST_COST_WITH_MIN_ROAS' (ROAS floor). NOTE: the capped strategies need a bid cap on the ad sets — set `bid_amount` via update_meta_ad_set first. Bid strategy applies at the campaign level for CBO campaigns; ABO campaigns carry it on the ad set. |
ad_account_id | string optional | Meta Ad Account ID. Required for multi-account users. Get from get_connections_status. |
{
"arguments": {
"campaign_id": "<campaign_id>",
"status": "string",
"name": "string",
"daily_budget": 1.0,
"lifetime_budget": 1.0,
"start_time": "string",
"stop_time": "string"
}
}
{
"success": true,
"data": {
"text": "(tool-specific textual output for update_meta_campaign)",
"quota": {
"used": 42,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01"
}
},
"tool": "update_meta_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_meta_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_meta_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
Adspirer REST API — get an API key at adspirer.ai/keys · adspirer.ai