Skip to content
Fresh 2026

Media-Level Ad Format Validation

Business Creative Media Validation Results

PlacementLabel
FACEBOOK_STORY_MOBILEFacebook Stories
MOBILE_FULLWIDTHMobile (full width)
MOBILE_INTERSTITIALAudience Network Interstitial
MOBILE_MEDIUM_RECTANGLEAudience Network Medium Rectangle
MOBILE_NATIVEAudience Network Native
INSTAGRAM_STANDARDInstagram Feed
INSTAGRAM_STORYInstagram Stories
MESSENGER_MOBILE_INBOX_MEDIAMessenger Inbox
MESSENGER_MOBILE_STORY_MEDIAMessenger Stories
DESKTOP_FEED_STANDARDDesktop Feed
MOBILE_FEED_STANDARDMobile Feed
RIGHT_COLUMN_STANDARDDesktop Right Column

Supported Video Ad Placements

PlacementLabel
FACEBOOK_STORY_MOBILEFacebook Stories
MOBILE_FULLWIDTHMobile (Full width)
AUDIENCE_NETWORK_INSTREAM_VIDEOAudience Network In-Stream Video
AUDIENCE_NETWORK_INSTREAM_VIDEO_MOBILEAudience Network In-Stream Video (Mobile)
MOBILE_INTERSTITIALAudience Network Interstitial
MOBILE_MEDIUM_RECTANGLEAudience Network Medium Rectangle
AUDIENCE_NETWORK_REWARDED_VIDEOAudience Network Rewarded Video
INSTAGRAM_STANDARDInstagram Feed
INSTAGRAM_STORYInstagram Stories
INSTREAM_VIDEO_DESKTOPFacebook In-Stream Video (Desktop)
INSTREAM_VIDEO_MOBILEFacebook In-Stream Video (Mobile)
MESSENGER_MOBILE_INBOX_MEDIAMessenger Inbox
MESSENGER_MOBILE_STORY_MEDIAMessenger Stories
DESKTOP_FEED_STANDARDDesktop Feed
MOBILE_FEED_STANDARDMobile Feed
SUGGESTED_VIDEO_MOBILESuggested 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)

json
{
  "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)

json
{
  "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

bash
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:

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

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

js
"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.