Upsert ad
Create or update a Facebook ad
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your access token.
adPublishing. writeOAuthPrivate IntegrationSub-Account TokenRequest
Headers
API Version
v3v3Body
Ad identifier
ad_123Location identifier
loc_abc123Ad name
My Ad CreativeSingle primary text. Normalised into primaryTexts when that array is empty, so send primaryTexts instead unless you have exactly one variant.
Check out our offer!Ad-level headline for CAROUSEL ads — used for any card that does not set its own media[].headline. SINGLE (image and video) ads take their headline from the headlines array instead.
Great DealSingle ad description. SINGLE (image and video) ads take their description from the descriptions array, and carousel cards from media[].description.
Limited time offerAd image URL
https://example.com/img.jpgAd media type
SINGLECAROUSELSINGLEMedia items (images or videos) attached to the ad creative
Enable multi-advertiser ads
falseParent campaign ID
camp_123Parent ad set ID
adset_123Call-to-action button. Valid values depend on the parent campaign objective (and, for sales, the ad set conversionLocation) — OUTCOME_LEADS: APPLY_NOW, DOWNLOAD, GET_OFFER, GET_QUOTE, LEARN_MORE, SIGN_UP, SUBSCRIBE; OUTCOME_TRAFFIC: APPLY_NOW, BOOK_TRAVEL, BUY_NOW, CONTACT_US, GET_OFFER, GET_PROMOTIONS, GET_QUOTE, LEARN_MORE, NO_BUTTON, ORDER_NOW, SHOP_NOW, SIGN_UP, SUBSCRIBE; OUTCOME_ENGAGEMENT: APPLY_NOW, BOOK_TRAVEL, CONTACT_US, GET_PROMOTIONS, GET_QUOTE, INQUIRE_NOW, LEARN_MORE, MESSAGE_PAGE, ORDER_NOW, SEND_UPDATES, SHOP_NOW, SIGN_UP, SUBSCRIBE; OUTCOME_SALES with conversionLocation: messaging: APPLY_NOW, BOOK_TRAVEL, CONTACT_US, GET_QUOTE, LEARN_MORE, MESSAGE_PAGE, ORDER_NOW, PLAY_GAME, SHOP_NOW, SIGN_UP, SUBSCRIBE; OUTCOME_SALES with conversionLocation: website: APPLY_NOW, BOOK_TRAVEL, BUY_TICKETS, CONTACT_US, GET_OFFER, GET_QUOTE, GET_SHOWTIMES, LEARN_MORE, LISTEN_NOW, ORDER_NOW, PLAY_GAME, SHOP_NOW, SIGN_UP, SUBSCRIBE, WATCH_MORE. Note BOOK_TRAVEL is the "Book now" button. Not validated server-side, so values outside this set are forwarded to Facebook and may be rejected there.
LEARN_MOREConversation form ID
conv_123Destination link URL
https://example.comDestination form ID
form_123Primary text variants. Used by every media type. Supply more than one to run Facebook text variations; with a single entry it becomes the ad message. Prefer this over the singular primaryText.
Headline variants. Applies to SINGLE (image and video) ads only — carousel ads take their per-card headline from media[].headline, falling back to the singular headline. Supply more than one to run Facebook text variations.
Description variants. Applies to SINGLE (image and video) ads only — carousel ads take their per-card description from media[].description. Supply more than one to run Facebook text variations.
Response
The saved ad
Ad identifier
6a323f3f4454921db1498ce1Ad name
Ad 1Parent campaign id
6a323f3e4454921db1498ccfParent ad set id
6a323f3f4454921db1498cd8Facebook ad id, set once published
120250378908850122Publishing status. On a published entity this is not the state you asked for but the effective_status Meta reports, mapped back — a pause or resume re-reads it live, so an ad awaiting review comes back IN_REVIEW rather than PAUSED or PUBLISHED. Any effective status this service does not recognise also maps to IN_REVIEW.
DRAFTSCHEDULEDPUBLISHINGPUBLISHEDPAUSEDIN_REVIEWWITH_ISSUESREJECTEDARCHIVEDFAILEDPUBLISHEDPublish error from Facebook. null on reads when there is none.
nullCreative format
SINGLECall-to-action button
GET_OFFERWhether multi-advertiser ads are enabled
truePrimary text variants. Used by SINGLE image and video ads.
Headline variants
Description variants
Single primary text. Carried alongside primaryTexts, mirroring its first entry.
Get an instant estimateSingle headline. Used by carousel ads; mirrors the first headlines entry otherwise.
Free home valuationSingle description
Fast and hassle-freeCreative media
Instant form the ad routes to, when the conversion location is on-ad
36267736432839880Click destination. null when the ad routes to an instant form instead.
nullWhether the ad has edits not yet published
falseCreated at
2026-06-17T06:31:27.661ZUpdated at
2026-08-19T11:45:39.340Z