Skip to content
Fresh 2026

Page Videos

Represents a collection of Videos for a Page.

Reading

You can't perform this operation on this endpoint.

Creating

Get Started

Refer to the Video API Publishing guide to learn how to upload and publish a video.

Requirements

To create an unpublished video for advertising, you will need:

  • A Page access token requested by a person who can perform the ADVERTISE task on the Page.
  • The pages_manage_ads and pages_show_list permissions

To create and publish a video, you will need:

  • A Page access token requested by a person who can perform the CREATE_CONTENT task on the Page.
  • The pages_manage_posts, pages_read_engagement, and pages_show_list permissions

You can make a POST request to videos edge from the following paths:

  • /{page_id}/videos

When posting to this edge, a Video will be created.

Parameters

ParameterDescription
ad_breaks<br>arrayTime offsets of ad breaks in milliseconds. Ad breaks are short ads that play within a video. Place new ad breaks or delete existing ones.
audio_story_wave_animation_handle<br>stringEverstore handle of wave animation used to burn audio story video
backdated_post<br>arraySettings to allow backdated video post.A backdated post needs to be published.
backdated_time<br>datetimeThe time when the video post was created.<br>Required
backdated_time_granularity<br>enum{year, month, day, hour, min, none}Default value: none<br>Accuracy of the backdated time.
hide_from_newsfeed<br>booleanDefault value: false<br>Whether to hide the video from newsfeed display.
content_category<br>enum {BEAUTY_FASHION, BUSINESS, CARS_TRUCKS, COMEDY, CUTE_ANIMALS, ENTERTAINMENT, FAMILY, FOOD_HEALTH, HOME, LIFESTYLE, MUSIC, NEWS, POLITICS, SCIENCE, SPORTS, TECHNOLOGY, VIDEO_GAMING, OTHER}Content category of this video.
content_tags<br>list<numeric string>Tags that describe the contents of the video. Use search endpoint with type=adinterest to get possible IDs. Example:<br><br>~~~~<br>/search?type=adinterest&q=couscous<br>~~~~<br>
crossposted_video_id<br>numeric string or integerThe video id that the new video post will be reusing
custom_labels<br>list<string>Labels used to describe the video. Unlike content tags, custom labels are not published and only appear in insights data.
description<br>UTF-8 stringThe text describing a post that may be shown in a story about it. It may include rich text information, such as entities and emojis.<br>Supports Emoji
direct_share_status<br>int64The status to allow sponsor directly boost the post.
edit_description_spec<br>JSON objectSpecification for burned-in text and sticker elements that require screen reader support. Contains information about on-screen text overlays, their positions, timing, and accessibility labels to enable proper screen reader functionality for video content.
screen_readers<br>array<JSON object>
embeddable<br>booleanWhether the video is embeddable.
end_offset<br>int64end_offset
expiration<br>ObjectTime the video expires and whether it will be removed or hidden.
time<br>string
type<br>enum{expire_and_delete, expire_only}
feed_targeting<br>feed targetObject that controls news feed targeting for this content. Anyone in these demographics will be more likely to see this content, those not will be less likely, but may still see it anyway. Any of the targeting fields shown here can be used, none are required.
geo_locations<br>Object
countries<br>list<string>
regions<br>list<Object>
key<br>int64
cities<br>list<Object>
key<br>int64
zips<br>list<Object>
key<br>string
locales<br>list<string>Values for targeted locales. Use type of adlocale to find Targeting Options and use the returned key to specify.
age_min<br>int64Must be 13 or higher. Default is 0.
age_max<br>int64Maximum age.
genders<br>list<int64>Target specific genders. 1 targets all male viewers and 2 females. Default is to target both.
college_years<br>list<int64>Array of integers. Represent graduation years from college.
education_statuses<br>list<int64>Array of integers which represent current educational status. Use 1 for high school, 2 for undergraduate, and 3 for alum (or localized equivalents).
interested_in<br>list<int64>Deprecated. Please see the Graph API Changelog for more information.<br>Deprecated
relationship_statuses<br>list<int64>Array of integers for targeting based on relationship status. Use 1 for single, 2 for 'in a relationship', 3 for married, and 4 for engaged. Default is all types.
interests<br>list<int64>One or more IDs of pages to target fans of pages.Use type of page to get possible IDs as find Targeting Options and use the returned id to specify.
file_size<br>int64The size of the entire video file in bytes.
file_url<br>stringAccessible URL of a video file. Cannot be used with upload_phase.
fisheye_video_cropped<br>booleanWhether the single fisheye video is cropped or not
fov<br>int64360 video only: Vertical field of view
front_z_rotation<br>floatThe front z rotation in degrees on the single fisheye video
guide<br>list<list<int64>>360 video only: Guide keyframes data. An array of keyframes, each of which is an array of 3 or 4 elements in the following order: [video timestamp (seconds), pitch (degrees, -90 ~ 90), yaw (degrees, -180 ~ 180), field of view (degrees, 40 ~ 90, optional)], ordered by video timestamp in strictly ascending order.
guide_enabled<br>boolean360 video only: Whether Guide is active.
initial_heading<br>int64360 video only: Horizontal camera perspective to display when the video begins.
initial_pitch<br>int64360 video only: Vertical camera perspective to display when the video begins.
is_voice_clip<br>booleanis_voice_clip, used to indicate that if a video is used as audio record
multilingual_data<br>list<Object>The data of multilingual messages and their dialects
multilingual_status_lang<br>string
multilingual_status<br>UTF-8 stringSupports Emoji
no_story<br>booleanIf set to true, this will suppress feed and timeline story.
original_fov<br>int64Original field of view of the source camera
original_projection_type<br>enum {equirectangular, cubemap, half_equirectangular}360 video only: The original projection type of the 360 video being uploaded.
prompt_id<br>stringThe prompt id in prompts or purple rain that generated this post
prompt_tracking_string<br>stringThe prompt tracking string associated with this video post
published<br>booleanDefault value: true<br>Whether a post about this video is published. Non-published videos cannot be backdated.
reference_only<br>booleanIf set to true, this video will not appear anywhere on Facebook and can not be viewed or shared using permalink. After creating copyright for the video, the video can be used as copyright reference video. Default value is false.
referenced_sticker_id<br>numeric string or integerSticker id of the sticker in the post
replace_video_id<br>numeric string or integerThe video id your uploaded video about to replace
scheduled_publish_time<br>int64Time when the page post about this video should go live, this should be between 10 mins and 6 months from the time of publishing the video.
secret<br>booleanIf set to true, this video will not appear anywhere on Facebook and is not searchable. It can be viewed and shared using permalink and embeds. Default value is false.
social_actions<br>booleanThis can be used to enable or prohibit the use of Facebook socialactions (likes, comments, and sharing) on an unlisted video. Default value is false
source<br>stringThe video, encoded as form data. This field is required.
source_instagram_media_id<br>numeric stringsource_instagram_media_id
specified_dialect<br>stringThe default dialect of a multilingual post
spherical<br>booleanDefault value: false<br>Set if the video was recorded in 360 format.
sponsor_id<br>numeric string or integerFacebook Page id that is tagged as sponsor in the video post
sponsor_relationship<br>int64Sponsor Relationship, such as Presented By or Paid PartnershipWith
start_offset<br>int64Start byte position of the file chunk.
swap_mode<br>enum {replace}Type of replacing video request
targeting<br>targetObject that limits the audience for this content. Anyone not in these demographics will not be able to view this content. This will not override any Page-level demographic restrictions that may be in place.
geo_locations<br>Object
countries<br>list<string>
regions<br>list<Object>
key<br>int64
cities<br>list<Object>
key<br>int64
zips<br>list<Object>
key<br>string
locales<br>list<string>
excluded_countries<br>list<string>
excluded_regions<br>list<int64>
excluded_cities<br>list<int64>
excluded_zipcodes<br>list<string>
timezones<br>list<int64>
age_min<br>enum {13, 15, 18, 21, 25}
thumb<br>imageThe video thumbnail raw data to be uploaded and associated with a video.
title<br>UTF-8 stringThe title of the video.<br>Supports Emoji
transcode_setting_properties<br>stringProperties used in computing transcode settings for the video
universal_video_id<br>stringThe publishers asset management code for this video.
unpublished_content_type<br>enum {SCHEDULED, SCHEDULED_RECURRING, DRAFT, PUBLISH_PENDING, ADS_POST, INLINE_CREATED, PUBLISHED, REVIEWABLE_BRANDED_CONTENT}Type of unpublished content, such as scheduled, draft or ads_post.
upload_phase<br>enum {start, transfer, finish, cancel}Type of chunked upload request.
upload_session_id<br>numeric string or integerID of the chunked upload session.
video_file_chunk<br>stringThe video file chunk, encoded as form data. This field is required during transfer upload phase.

Return Type

Struct {

id: numeric string,

upload_session_id: numeric string,

video_id: numeric string,

start_offset: numeric string,

end_offset: numeric string,

success: bool,

skip_upload: bool,

upload_domain: string,

region_hint: string,

xpv_asset_id: numeric string,

is_xpv_single_prod: bool,

transcode_bit_rate_bps: numeric string,

transcode_dimension: numeric string,

should_expand_to_transcode_dimension: bool,

action_id: string,

gop_size_seconds: numeric string,

target_video_codec: string,

target_hdr: string,

maximum_frame_rate: numeric string,

}

Error Codes

ErrorDescription
200Permissions error
6001There was a problem uploading your video. Please try again.
368The action attempted has been deemed abusive or is otherwise disallowed
389Unable to fetch video file from URL.
100Invalid parameter
6000There was a problem uploading your video file. Please try again with another file.
190Invalid OAuth 2.0 Access Token
210User not visible
382The video file you tried to upload is too small. Please try again with a larger file.

Updating

Use the Video endpoint to update a Video.

You can't perform this operation on this endpoint.

Deleting

Use the Video endpoint to delete a Video.

You can't perform this operation on this endpoint.