Skip to main content
Facebook AdsVersion: v3

Upsert campaign

PUT/ad-publishing/facebook/campaigns

Create or update a Facebook campaign

Authorizations

Authorizationstringheaderrequired

Bearer authentication header of the form Bearer <token>, where <token> is your access token.

Scope:adPublishing.write
Auth methods:OAuthPrivate Integration
Token type:Sub-Account Token

Request​

Headers

Versionstringrequired

API Version

Available optionsv3
Example:v3

Body

idstring

Campaign identifier

Example:camp_123
locationIdstringrequired

Location identifier

Example:loc_abc123
namestring

Campaign name

Example:Summer Campaign
objectivestring

Campaign objective

Available optionsOUTCOME_LEADSOUTCOME_TRAFFICOUTCOME_ENGAGEMENTOUTCOME_SALES
Example:OUTCOME_LEADS
specialAdCategoriesstring[]

Special ad categories

Available optionsEMPLOYMENTCREDITFINANCIAL_PRODUCTS_SERVICESHOUSINGISSUES_ELECTIONS_POLITICSONLINE_GAMBLING_AND_GAMINGNONE
Example:["NONE"]
isCampaignBudgetboolean

Advantage campaign budget. When true the campaign carries budget and bidStrategy, and ad sets carry no budget of their own.

Example:false
budgetobject

Campaign-level budget (Advantage campaign budget). Requires isCampaignBudget.

bidStrategystring

Campaign-level bid strategy. Only with isCampaignBudget.

Available optionsLOWEST_COST_WITHOUT_CAPLOWEST_COST_WITH_BID_CAPCOST_CAP
Example:LOWEST_COST_WITHOUT_CAP
bidAmountnumber

Default 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.

Example:2.5
adsetBudgetSharingboolean

Ad set budget sharing: Meta may move up to 20% of an ad set budget to sibling ad sets. Mutually exclusive with isCampaignBudget.

Example:false
sourcestring

Campaign data source

Example:facebook
customValueMappingsobject

User-provided overrides for custom_values merge tags used in ad copy

Response

The saved campaign, without its ad sets

idstringrequired

Campaign identifier

Example:6a323f3e4454921db1498ccf
namestringrequired

Campaign name

Example:Spring promotion
locationIdstringrequired

Location identifier

Example:fRMewNQIxSyZ5R4nQyit
fbAdAccountIdstringrequired

Ad account the campaign belongs to

Example:act_357046700569338
fbCampaignIdstring

Facebook campaign id, set once published

Example:120250378905720122
objectivestringrequired

Campaign objective

Example:OUTCOME_LEADS
specialAdCategoriesstring[]required

Special ad categories declared for the campaign

Example:["NONE"]
publishingStatusstringrequired

Publishing status of the campaign itself. Independent of its children — pausing one ad set leaves the campaign PUBLISHED.

Available optionsDRAFTSCHEDULEDPUBLISHINGPUBLISHEDPAUSEDIN_REVIEWWITH_ISSUESREJECTEDARCHIVEDFAILED
Example:DRAFT
fbErrorstringnullable

Despite 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.

Example:null
sourcestringrequired

Where the campaign was created from

Example:AD_MANAGER
metaobject

Ancillary campaign metadata

unpublishedChangesboolean

Whether the campaign has edits not yet published

Example:false
createdAtstringrequired

Created at

Example:2026-06-17T06:31:26.599Z
updatedAtstringrequired

Updated at

Example:2026-08-19T11:45:39.340Z