POST /api/v1/ads/campaigns
Create a campaign (objective or goal, optional CBO budget, specialAdCategories). PAUSED by default; requires confirm: true
BearerAuthAuthorizationBearer <token>API key sk_...
application/json- body
accountId*stringConnected Facebook Page account id
adAccountId*stringAd account id (act_...)
confirm*booleanRequired (true) for anything that can spend: creates (campaign, ad set, ad, boost), status ACTIVE, budget, bid, schedule or targeting changes; and for what cannot be undone (status DELETED or ARCHIVED, deleting an audience). Without it: 400 confirmation_required, nothing is created
name*stringobjective?string"OUTCOME_AWARENESS""OUTCOME_TRAFFIC""OUTCOME_ENGAGEMENT""OUTCOME_LEADS""OUTCOME_SALES""OUTCOME_APP_PROMOTION"goal?stringAlternative to objective: engagement, traffic, awareness, ...
dailyBudget?integerCampaign (CBO) daily budget: an integer in the ad account currency's API units (currencyOffset 100: cents, 1500 = 15.00 USD; currencyOffset 1, e.g. JPY, KRW, CLP, COP: whole units, 1500 = 1500 CLP)
1 <= valuelifetimeBudget?integerCampaign lifetime budget: an integer in the ad account currency's API units (currencyOffset 100: cents, 1500 = 15.00 USD; currencyOffset 1, e.g. JPY, KRW, CLP, COP: whole units, 1500 = 1500 CLP)
1 <= valuespendCap?integerSpend cap: an integer in the ad account currency's API units (currencyOffset 100: cents, 1500 = 15.00 USD; currencyOffset 1, e.g. JPY, KRW, CLP, COP: whole units, 1500 = 1500 CLP)
1 <= valuebidStrategy?stringspecialAdCategories?array<string>startTime?stringdate-timestopTime?stringdate-timestatus?stringPAUSED (default) or ACTIVE (only together with confirm: true)
"PAUSED""ACTIVE"{campaign, mock}
application/json- response
campaign?mock?booleancurl -X POST 'https://example.com/api/v1/ads/campaigns' \ -H 'Content-Type: application/json' \ -d '{ "accountId": "string", "adAccountId": "string", "confirm": true, "name": "string"}'{ "campaign": {}, "mock": true}