Upsert campaign
Create or update a Facebook campaign
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your access token.
adPublishing. writeOAuthPrivate IntegrationSub-Account TokenRequest
Headers
API Version
v3v3Body
Campaign identifier
camp_123Location identifier
loc_abc123Campaign name
Summer CampaignCampaign objective
OUTCOME_LEADSOUTCOME_TRAFFICOUTCOME_ENGAGEMENTOUTCOME_SALESOUTCOME_LEADSSpecial ad categories
EMPLOYMENTCREDITFINANCIAL_PRODUCTS_SERVICESHOUSINGISSUES_ELECTIONS_POLITICSONLINE_GAMBLING_AND_GAMINGNONE["NONE"]Advantage campaign budget. When true the campaign carries budget and bidStrategy, and ad sets carry no budget of their own.
falseCampaign-level budget (Advantage campaign budget). Requires isCampaignBudget.
Campaign-level bid strategy. Only with isCampaignBudget.
LOWEST_COST_WITHOUT_CAPLOWEST_COST_WITH_BID_CAPCOST_CAPLOWEST_COST_WITHOUT_CAPDefault bid cap / cost-per-result goal in account currency for every ad set; an ad set's own bidAmount wins. Only with isCampaignBudget or adsetBudgetSharing.
2.5Ad set budget sharing: Meta may move up to 20% of an ad set budget to sibling ad sets. Mutually exclusive with isCampaignBudget.
falseCampaign data source
facebookUser-provided overrides for custom_values merge tags used in ad copy
Response
The saved campaign, without its ad sets
Campaign identifier
6a323f3e4454921db1498ccfCampaign name
Spring promotionLocation identifier
fRMewNQIxSyZ5R4nQyitAd account the campaign belongs to
act_357046700569338Facebook campaign id, set once published
120250378905720122Campaign objective
OUTCOME_LEADSSpecial ad categories declared for the campaign
["NONE"]Publishing status of the campaign itself. Independent of its children — pausing one ad set leaves the campaign PUBLISHED.
DRAFTSCHEDULEDPUBLISHINGPUBLISHEDPAUSEDIN_REVIEWWITH_ISSUESREJECTEDARCHIVEDFAILEDDRAFTDespite the name this is not always an error. Reads return null when there is nothing to report and the upsert returns "", but pausing an ad set or an ad overwrites it with an informational notice — One or more adsets are paused or One or more ads are paused — which the matching resume clears back to null. Treat it as a status line, not a failure signal.
nullWhere the campaign was created from
AD_MANAGERAncillary campaign metadata
Whether the campaign has edits not yet published
falseCreated at
2026-06-17T06:31:26.599ZUpdated at
2026-08-19T11:45:39.340Z