update_campaign
Update an existing Meta Ads campaign’s name, status, budget, and bid strategy. Migrate from campaign budget optimization to ad set level budgets in one atomic call.
Instructions
Update an existing campaign in a Meta Ads account.
Note: Campaigns do not support start_time for scheduling — set start_time on the ad set instead.
Migrating CBO (Advantage Campaign Budget) → ABO (ad set level budgets):
Pass `adset_budgets` with one entry per ad set in the campaign. Meta atomically
removes the campaign-level budget and assigns budgets at the ad set level in a
single call. This is Meta's documented mechanism — the legacy
`use_adset_level_budgets=true` flag attempts to clear `daily_budget`/`lifetime_budget`
but Meta silently ignores the empty values, so the migration does not persist.
Args:
campaign_id: Meta Ads campaign ID
access_token: Meta API access token (optional - will use cached token if not provided)
name: New campaign name
status: New campaign status (e.g., 'ACTIVE', 'PAUSED')
special_ad_categories: List of special ad categories if applicable
daily_budget: New daily budget in account currency (in cents).
lifetime_budget: New lifetime budget in account currency (in cents).
bid_strategy: New bid strategy
bid_cap: New bid cap in account currency (in cents) as a string
spend_cap: New spending limit for the campaign in account currency (in cents) as a string
campaign_budget_optimization: Enable/disable campaign budget optimization
objective: New campaign objective (Note: May not always be updatable)
use_adset_level_budgets: Deprecated for CBO → ABO migration — use `adset_budgets`
instead. Kept for backwards compatibility; sends empty `daily_budget`/
`lifetime_budget` which Meta silently ignores in most cases.
adset_budgets: List of `{"adset_id": "...", "daily_budget": <cents>}` objects.
Use to migrate from CBO to ABO: Meta removes the campaign-level Advantage
budget and assigns the provided daily budgets at the ad set level in one
atomic call. Example:
[{"adset_id": "1234", "daily_budget": 5000},
{"adset_id": "5678", "daily_budget": 7000}]
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| status | No | ||
| bid_cap | No | ||
| objective | No | ||
| spend_cap | No | ||
| campaign_id | Yes | ||
| access_token | No | ||
| bid_strategy | No | ||
| daily_budget | No | ||
| adset_budgets | No | ||
| lifetime_budget | No | ||
| special_ad_categories | No | ||
| use_adset_level_budgets | No | ||
| campaign_budget_optimization | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |