Skip to main content
Facebook AdsVersion: v3

Publish campaign

POST/ad-publishing/facebook/campaigns/{campaignId}/publish

Queue a Facebook campaign for publishing and push it live to Facebook. Publishing runs asynchronously, so the campaign comes back in the state it was queued in — publishingStatus is still DRAFT on the campaign and on every ad set and ad, and no Facebook ids are attached yet. Poll GET /facebook/campaigns/{campaignId}/publishing-progress for the outcome.

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

Path Parameters

campaignIdstringrequired

Campaign identifier

Example:507f1f77bcf86cd799439011

Body

locationIdstringrequired

Location identifier

Example:loc_abc123

Response

The campaign with its ad sets and ads, as queued for publishing

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
adsetsobject[]required

Ad sets with their ads