Get Ad Preview

For Instagram Ads, you can get a preview of:

Preview Existing Ads

You can use format options with an ad or ad creative ID to preview an existing ad. For ad_format, you have:

FormatDescription

INSTAGRAM_EXPLORE_CONTEXTUAL

Instagram Explore Feed format. Learn more about ads in Instagram Explore.

INSTAGRAM_EXPLORE_IMMERSIVE

Instagram Explore Video format. Learn more about ads in Instagram Explore.

INSTAGRAM_REELS

Instagram Reels placement.

INSTAGRAM_STANDARD

Instagram feed post format.

INSTAGRAM_STORY

Instagram story format.

THREADS_STREAM

Threads feed post format.

The Instagram ad preview call looks like this:

curl -G \
  -d 'ad_format=INSTAGRAM_STANDARD' \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0/<AD_ID>/previews

The Threads ad preview call looks like this:

curl -G \
  -d 'ad_format=THREADS_STREAM \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0/<AD_ID>/previews

Preview Before Adding Creative

Instagram

To preview an ad before providing ad creative, pass the creative's object_story_spec in the preview's creative parameter. You must provide instagram_user_id and page_id for both Instagram-only placement and mixed placement ads:

curl -G \
  --data-urlencode 'creative={ 
    "object_story_spec": { 
      "instagram_user_id": "<INSTAGRAM_USER_ID>", 
      "link_data": { 
        "call_to_action": {"type":"LEARN_MORE","value":{"link":"<URL>"}}, 
        "caption": "www.example.com", 
        "image_hash": "<IMAGE_HASH>", 
        "link": "<URL>", 
        "message": "Ad Message" 
      }, 
      "page_id": "<PAGE_ID>" 
    } 
  }' \
  -d 'ad_format=INSTAGRAM_STANDARD' \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0/act_<AD_ACCOUNT_ID>/generatepreviews

Threads

To preview an ad before providing an ad creative, pass the creative's object_story_spec in the preview's creative parameter. You must provide threads_user_id and page_id for both Threads with Instagram placements:

curl -G \
  --data-urlencode 'creative={ 
    "object_story_spec": { 
      "instagram_user_id": "<INSTAGRAM_USER_ID>", 
      "threads_user_id" : "<THREAD_USER_ID>"
      "link_data": { 
        "call_to_action": {"type":"LEARN_MORE","value":{"link":"<URL>"}}, 
        "caption": "www.example.com", 
        "image_hash": "<IMAGE_HASH>", 
        "link": "<URL>", 
        "message": "Ad Message" 
      }, 
      "page_id": "<PAGE_ID>" 
    } 
  }' \
  -d 'ad_format=THREADS_STREAM \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0/act_<AD_ACCOUNT_ID>/generatepreviews

Preview After Adding Creative

After you provide ad creative, you can get the URL for the corresponding Instagram post, and can see responses to the ad post. The post is not identical to the one your audience sees. It does not have "Sponsored" or a call-to-action.

This URL is not available with Advantage+ catalog ad creatives, which is when you use template_data in object_story_spec. This URL is also unavailable for ad creatives for ads in Instagram stories.

Example request

curl -X GET \
  -d 'fields="instagram_permalink_url"' \
  -d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v24.0/<CREATIVE_ID>/

Example response

{
  "instagram_permalink_url": "<INSTAGRAM_POST_URL>",
  "id": "<AD_CREATIVE_ID>"
}