Create Campaign
adsap_create_campaignCreate Meta campaign. Defaults to PAUSED — only set ACTIVE when explicitly requested. For Catalog or Collection ads, set advantage_catalog_ads: true + catalog_id (OUTCOME_SALES only): Meta binds the catalog at the CAMPAIGN level, so a plain sales campaign cannot host those formats and the ad create will fail later. The ad set needs no catalog fields, and the product set is chosen per ad. ALWAYS call with dry_run: true first: it validates and renders a launch review card where the user confirms, creates (paused) and activates in-card — after it renders, reply with ONE short sentence and stop. Do not call the real create from chat unless the user explicitly asks in a new message and the card's activity log shows nothing was created there.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| status | No | PAUSED | |
| dry_run | No | Validate only, no creation | |
| objective | Yes | ||
| spend_cap | No | In cents | |
| stop_time | No | Required with lifetime_budget | |
| catalog_id | No | Meta product catalog id to bind to the campaign. Required when advantage_catalog_ads is true, ignored otherwise. Get ids from adsap_list_catalogs. The product SET is chosen later per ad, not here. | |
| start_time | No | Required with lifetime_budget | |
| buying_type | No | AUCTION | |
| bid_strategy | No | Campaign-level bid strategy. Only applied under CBO (campaign_budget_optimization: true) or when share_budget_with_ad_sets is true (budget sharing requires a campaign bid strategy — Meta error 4834005); ignored for plain ad-set-budget campaigns. Cap and ROAS values are set per ad set via adsap_create_ad_sets (bid_amount / roas_target), not at the campaign level. Defaults to LOWEST_COST_WITHOUT_CAP. | |
| daily_budget | No | In cents. Mutually exclusive with lifetime_budget. | |
| ad_account_id | Yes | ||
| idempotency_key | No | ||
| lifetime_budget | No | In cents. Mutually exclusive with daily_budget. | |
| promoted_object | No | OUTCOME_APP_PROMOTION + iOS apps ONLY: campaign-level app binding for iOS/SKAdNetwork campaigns (is_skadnetwork_attribution is set automatically). Meta treats any campaign with a campaign-level promoted_object as an iOS-14 SKAN campaign — Android apps are rejected there (2446632), so for Android pass the app on the ad set instead; Android values here are ignored. The app must be in Live mode and advertisable by the ad account. | |
| advantage_catalog_ads | No | Enable Advantage+ Catalog Ads (catalog-based advertising). OUTCOME_SALES only, and requires catalog_id. REQUIRED for any campaign that will host Catalog or Collection ads: Meta binds the catalog at the CAMPAIGN level, so a plain sales campaign cannot host them. Mirrors the web UI's Advantage+ Catalog Ads switch. | |
| special_ad_categories | No | Meta Special Ad Category. Required for ads about financial products and services (FINANCIAL_PRODUCTS_SERVICES; CREDIT is the retired name), employment, housing, social issues/elections/politics, or online gambling and gaming. Housing, employment and financial categories lock ad set targeting to 18-65+, all genders and a 15 mi / 25 km radius floor; the other two only confine ad set locations to special_ad_category_country. ONLINE_GAMBLING_AND_GAMING also needs Meta's gambling authorization on the ad account. | |
| share_budget_with_ad_sets | No | Campaign-level toggle for Meta's "Share some of your budget with other ad sets" (is_adset_budget_sharing_enabled). Only valid on ABO campaigns (no campaign-level budget) whose ad sets use DAILY budgets; rejected on CBO campaigns (Meta error 4834002). Worth considering for ABO campaigns with multiple ad sets. Defaults to false (off) when omitted. | |
| special_ad_category_country | No | ISO country codes, one or several. Required when special_ad_categories is set; ad sets under the campaign must target inside this list. | |
| campaign_budget_optimization | No | Enable CBO |