Appearance
Fresh 2026
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)
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_resultsare returned in the response. - If all validation passes, the
validation_resultsare 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_onlyparameter that. If set to true, that parameter causes the API to always reject uploads and solely returns the validation results. - If
validation_onlyis flaggedtrue, but no ad placements are provided throughvalidation_ad_placements, the API defaults to running validation for all ad placements.