Skip to content

Ad creative

Updated: Jun 28, 2026

Use Facebook ads to reach your existing customers and find new ones. Each guide describes Facebook ads products to help meet your advertising goals. There are several types of ad units with a variety of appearances, placement, and creative options. For guidelines on ads units as creative content, see Facebook Ads Guide⁠.

Creative

An ad creative is an object that contains all the data for visually rendering the ad. In the API, there are different types of ads that you can create on Facebook. See the list of ad creative types.

If you have a campaign with the Page Post Engagement Objective, you can create an ad that promotes a post made by the Page. This ad is considered a Page post ad. Page post ads require a field called object_story_id, which is the id property of a Page post. Learn more about Ad Creative, Reference.

An ad creative has three parts:

  • The ad creative, defined by the visual attributes of the creative object
  • Placement that the ad runs on
  • Preview of the unit, per placement

To create the ad creative object, make the following call:

curl -X POST \
  -F 'name="Sample Promoted Post"' \
  -F 'object_story_id="<PAGE_ID>_<POST_ID>"' \
  -F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adcreatives

The response to the API call is the id of the creative object. Store the creative id; you need it for the ad object:

curl -X POST \
  -F 'name="My Ad"' \
  -F 'adset_id="<AD_SET_ID>"' \
  -F 'creative={
       "creative_id": "<CREATIVE_ID>"
     }' \
  -F 'status="PAUSED"' \
  -F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/ads

Limits

There are limits on the creative's text, image size, image aspect ratio and other aspects of the creative. See the Ads Guide⁠.

Read

In the Ads API, each field you want to retrieve needs to be asked for explicitly, except for id. Each object's Reference has a section for reading back the object and lists what fields are readable. For the creative, the readable fields are the same as those specified when you created the object, plus id.

curl -G \
  -d 'fields=name,object_story_id' \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<CREATIVE_ID>

Placements

A placement is where Facebook shows your ad, such as on Feed on desktop, Feed on a mobile device or on the right column. See Ads Product Guide⁠.

Run ads across the full range of available placements. Facebook's ad auction delivers ad impressions to the placement most likely to drive campaign results at the lowest possible cost.

To use this optimization, leave this field blank. You can also select specific placements in an ad set's target_spec.

This example has a Page post ad. The available placements are Mobile Feed, Desktop Feed and Right column of Facebook. In the API, see Placement Options. If you choose desktopfeed and rightcolumn as the page_type, the ad runs on Desktop Feed and Right column placements. Any ad created below this ad set has only the desktop placement.

curl -X POST \
  -F 'name=Desktop Ad Set' \
  -F 'campaign_id=<CAMPAIGN_ID>' \
  -F 'daily_budget=10000' \
  -F 'targeting={
    "geo_locations": {"countries":["US"]},
    "publisher_platforms": ["facebook","audience_network"]
  }' \
  -F 'optimization_goal=LINK_CLICKS' \
  -F 'billing_event=IMPRESSIONS' \
  -F 'bid_amount=1000' \
  -F 'status=PAUSED' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adsets

Preview an ad

You preview an ad in one of two ways — with ad preview API or the ad preview plugin.

There are three ways to generate a preview with the API:

  • By ad ID
  • By ad creative ID
  • By supplying a creative spec

Following the reference docs for the preview API, the minimum required API call is:

curl -G \
  --data-urlencode 'creative="<CREATIVE_SPEC>"' \
  -d 'ad_format="<AD_FORMAT>"' \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/generatepreviews

The creative spec is an array of each field and value required to create the ad creative.

The ad creative call looks like this:

curl -X POST \
  -F 'name="Sample Promoted Post"' \
  -F 'object_story_id="<PAGE_ID>_<POST_ID>"' \
  -F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adcreatives

Take object_story_id and use it in the preview API call:

curl -G \
  -d 'creative={"object_story_id":"<PAGE_ID>_<POST_ID>"}' \
  -d 'ad_format=<AD_FORMAT>' \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/generatepreviews

The available values for ad_format differ slightly from page_types. But, in this scenario, you select Desktop Feed and Right column of Facebook. This requires you to make two API calls to generate the previews for each placement:

curl -G \
  -d 'creative={"object_story_id":"<PAGE_ID>_<POST_ID>"}' \
  -d 'ad_format=DESKTOP_FEED_STANDARD' \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/generatepreviews
curl -G \
  -d 'creative={"object_story_id":"<PAGE_ID>_<POST_ID>"}' \
  -d 'ad_format=RIGHT_COLUMN_STANDARD' \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/generatepreviews

The response is an iframe that's valid for 24 hours.

See more

Unofficial mirror for reference/search purposes. All content originates from developers.facebook.com — see the source link at the top of each page. Machine-readable indexes: llms.txt · llms-full.txt · About