Media-Level Ad Format Validation

Business Creative Media Validation Results

Placement Label

FACEBOOK_STORY_MOBILE

Facebook Stories

MOBILE_FULLWIDTH

Mobile (full width)

MOBILE_INTERSTITIAL

Audience Network Interstitial

MOBILE_MEDIUM_RECTANGLE

Audience Network Medium Rectangle

MOBILE_NATIVE

Audience Network Native

INSTAGRAM_STANDARD

Instagram Feed

INSTAGRAM_STORY

Instagram Stories

MESSENGER_MOBILE_INBOX_MEDIA

Messenger Inbox

MESSENGER_MOBILE_STORY_MEDIA

Messenger Stories

DESKTOP_FEED_STANDARD

Desktop Feed

MOBILE_FEED_STANDARD

Mobile Feed

RIGHT_COLUMN_STANDARD

Desktop Right Column

Supported Video Ad Placements

Placement Label

FACEBOOK_STORY_MOBILE

Facebook Stories

MOBILE_FULLWIDTH

Mobile (Full width)

AUDIENCE_NETWORK_INSTREAM_VIDEO

Audience Network In-Stream Video

AUDIENCE_NETWORK_INSTREAM_VIDEO_MOBILE

Audience Network In-Stream Video (Mobile)

MOBILE_INTERSTITIAL

Audience Network Interstitial

MOBILE_MEDIUM_RECTANGLE

Audience Network Medium Rectangle

AUDIENCE_NETWORK_REWARDED_VIDEO

Audience Network Rewarded Video

INSTAGRAM_STANDARD

Instagram Feed

INSTAGRAM_STORY

Instagram Stories

INSTREAM_VIDEO_DESKTOP

Facebook In-Stream Video (Desktop)

INSTREAM_VIDEO_MOBILE

Facebook In-Stream Video (Mobile)

MESSENGER_MOBILE_INBOX_MEDIA

Messenger Inbox

MESSENGER_MOBILE_STORY_MEDIA

Messenger Stories

DESKTOP_FEED_STANDARD

Desktop Feed

MOBILE_FEED_STANDARD

Mobile Feed

SUGGESTED_VIDEO_MOBILE

Suggested Videos (Mobile)

Supported Endpoints

Ad Placement Validation on Existing Images or Videos

To see validation results for an existing image or video, send a GET request to the {business-image-id}/ad_placement_validation_results or {business-video-id}/ad_placement_validation_results edge.

Example Response (Image)

{
  "data": [
    {
      "ad_placement": "FACEBOOK_STORY_MOBILE",
      "ad_placement_label": "Facebook Stories",
      "is_valid": false,
      "error_messages": [
        "Fb Story Ads Resolution Is Too Low: The width of photo and video has to be larger than 500px for ads in Facebook Stories."
      ]
    },
...
  ]
}

Example Response (Video)

{
  "data": [
    {
      "ad_placement": "INSTREAM_VIDEO_MOBILE",
      "ad_placement_label": "Facebook In-Stream Video (Mobile)",
      "is_valid": false,
      "error_messages": [
        "Ad Video Duration Is Too Short: Duration of the video used in the ad is too short."
      ]
    },
...
    {
      "ad_placement": "FACEBOOK_STORY_MOBILE",
      "ad_placement_label": "Facebook Stories",
      "is_valid": true
    }
  ]
}

Ad Placement Validation on all Business Creatives

You can also conveniently run validation against all creatives within a business by adding the ad_placement_validation_results field on a GET request to the {business-id}/creatives edge.

Example Request

curl -i -X GET \
 "https://graph.facebook.com/{version}/{business-id}/creatives?fields=ad_placement_validation_results&access_token={access_token}"

Ad Placement Validation at Upload Endpoints

When adding creatives to a folder, you can also run ad placement validation when uploading the creative by providing an array of ad placements through the optional validation_ad_placements parameter on either image/video upload POST request.

The supported placement types can be found in the Placement column in Supported Video Ad Placements. The API runs validations against the provided ad placements, rejects the upload if validation fails on any of them, and returns the validation results in the response.

An example call could include the parameter like this:

"validation_ad_placements"=["FACEBOOK_STORY_MOBILE", "MESSENGER_MOBILE_STORY_MEDIA"]

The results of the validation are returned in a example response like this:

"validation_results" => [
    {
        "ad_placement" => "FACEBOOK_STORY_MOBILE"
        "ad_placement_label" => "Facebook Stories"
        "error_messages" => ["The width of the media in the ad is too low. Try to use a different media.""The height of the media in the ad is too low. Try to use a different media."],
        "is_valid" => false,
    },
    {
        "ad_placement" => "MESSENGER_MOBILE_STORY_MEDIA"
        "ad_placement_label" => "Messenger Stories",
        "error_messages" => [],
        "is_valid" => true.
    },
]

Conditional Results

  • If the validation fails (as in the above example), only validation_results are returned in the response.
  • If all validation passes, the validation_results are appended to the normal upload response.
  • If you only run validations against the uploaded media (and never persist the upload), you can include a validation_only parameter that. If set to true, that parameter causes the API to always reject uploads and solely returns the validation results.
  • If validation_only is flagged true, but no ad placements are provided through validation_ad_placements, the API defaults to running validation for all ad placements.