Meta Ads Write
User wants to edit an existing Meta ad set's targeting, budget, bid, placements, schedule, or optimization settings
POST https://api.adspirer.ai/api/v1/tools/update_meta_ad_set/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 |
|---|---|---|
ad_set_id | string required | **REQUIRED.** The Meta Ad Set ID to update. If you don't have it, call `list_meta_ad_sets` first. You MUST also provide at least one update field (status, name, daily_budget, etc.) — do NOT call this tool with only an ad_set_id and no changes. |
status | string optional | New status: 'ACTIVE', 'PAUSED', 'DELETED', 'ARCHIVED' |
name | string optional | New ad set name |
daily_budget | number optional | New daily budget in USD (minimum $1). Will be converted to cents for Meta API. |
lifetime_budget | number optional | New lifetime budget in USD. Will be converted to cents for Meta API. |
bid_amount | number optional | New bid amount in USD. Will be converted to cents for Meta API. |
targeting | object optional | New targeting specification as a JSON object. Use this for placement exclusions, audience exclusions, age/gender changes, and interest targeting updates. For LOCATION changes prefer the `locations` / `location_types` params below — they build Meta's geo_locations correctly (city keys + radius + reach mode) and merge onto the ad set's existing targeting so the rest isn't wiped. |
locations | array optional | Replace the ad set's location targeting. Country codes (['US','BR']) or location objects from search_meta_targeting ([{'key':'2344821','type':'city','radius':20,'distance_unit':'kilometer'}]). ALWAYS include the 'type' field on each object (city/region/zip/place) — a key with no type is treated as a country code and rejected by Meta. Merged onto current targeting (other targeting is preserved). |
location_types | array optional | Geo reach mode / location expansion ('people interested in this location'). List of 'home' / 'recent' / 'travel_in'. Include 'travel_in' to turn location expansion ON. Applied to the ad set's geo targeting; can be set alone (keeps the existing locations). |
advantage_audience | boolean optional | Advantage+ Audience on/off. Toggle Meta's AI audience expansion without replacing the rest of the ad set's targeting. When provided, merges into targeting.targeting_automation.advantage_audience (0/1). Pass True to enable, False to disable. Leave unset to keep existing value. |
start_time | string optional | New start time in ISO format YYYY-MM-DDTHH:MM:SS |
end_time | string optional | New end time in ISO format YYYY-MM-DDTHH:MM:SS |
optimization_goal | string optional | New optimization goal. Web/general values: REACH, IMPRESSIONS, LINK_CLICKS, LANDING_PAGE_VIEWS, OFFSITE_CONVERSIONS, VALUE, POST_ENGAGEMENT, LEAD_GENERATION. App-campaign values (only valid when parent campaign objective=OUTCOME_APP_PROMOTION): APP_INSTALLS (default), APP_INSTALLS_AND_OFFSITE_CONVERSIONS (combined goal), OFFSITE_CONVERSIONS (in-app events), IN_APP_VALUE (value optimization for in-app events), VALUE. |
app_id | string optional | Update the Facebook App ID on the ad-set promoted_object. Numeric only — NOT iOS bundle ID or Android package name. Use to swap the promoted app on an existing OUTCOME_APP_PROMOTION ad set (e.g. relaunching with a new app version that has a different FB App ID). |
app_store_url | string optional | Update the App Store / Play Store URL on the ad-set promoted_object. Examples: 'https://apps.apple.com/us/app/example/id123456789' or 'https://play.google.com/store/apps/details?id=com.example'. |
app_event_type | string optional | Update the in-app event type for OUTCOME_APP_PROMOTION optimization. Pass 'APP_INSTALLS' to revert to install optimization (clears custom_event_type so Meta uses optimization_goal). Pass a specific event (PURCHASE, LEVEL_ACHIEVED, COMPLETE_REGISTRATION, START_TRIAL, etc.) to optimize for in-app actions. Requires Meta SDK to fire the event from the app. |
daily_min_spend_target | number optional | Minimum daily spend target in account currency for CBO campaigns. Use this instead of daily_budget when the campaign uses Advantage Campaign Budget. Set to 0 to remove the minimum. |
daily_spend_cap | number optional | Maximum daily spend cap in account currency for CBO campaigns. Use this instead of daily_budget when the campaign uses Advantage Campaign Budget. Set to 0 to remove the cap. |
lifetime_min_spend_target | number optional | Minimum lifetime spend target in account currency for CBO campaigns with lifetime budget. |
lifetime_spend_cap | number optional | Maximum lifetime spend cap in account currency for CBO campaigns with lifetime budget. |
ad_account_id | string optional | Meta Ad Account ID. Required for multi-account users. Get from get_connections_status. |
url_tags | string optional | Ad-set-level URL parameters (e.g. 'utm_source=meta&utm_medium=cpc'). Applied to every ad in this ad set. Leading '?' stripped. |
{
"arguments": {
"ad_set_id": "string",
"status": "string",
"name": "string",
"daily_budget": 1.0,
"lifetime_budget": 1.0,
"bid_amount": 0.01,
"targeting": {
"age_min": 25,
"age_max": 55,
"genders": [
1,
2
],
"geo_locations": {
"countries": [
"US"
]
},
"interests": [
{
"id": "6003107902433",
"name": "Fitness and wellness"
}
]
}
}
}
{
"success": true,
"data": {
"text": "(tool-specific textual output for update_meta_ad_set)",
"quota": {
"used": 42,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01"
}
},
"tool": "update_meta_ad_set"
}
{
"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_ad_set"
}
{
"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_ad_set",
"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