Skip to Content

Facebook Upload API

This section details how to upload text posts, photos, and videos to Facebook Pages using the API.

Base URL

https://api.multi-upload-tool.com/api/v1

Authentication

All requests require an API Token in the header: x-api-key: YOUR_API_TOKEN


Requirements

Facebook Reels & Video Requirements

  • File Format: MP4 (recommended)
  • Resolution & Aspect Ratio:
    • Recommended: 1080 x 1920 pixels
    • Minimum: 540 x 960 pixels
    • Aspect ratio: 9:16
  • Duration:
    • 3-90 seconds (Reels)
    • Maximum 60 seconds (Stories)
  • Video Settings:
    • Frame rate: 24-60 fps
    • Chroma subsampling: 4:2:0
    • Closed GOP (2-5 seconds)
    • Compression: H.264, H.265, VP9, AV1
    • Progressive scan
  • Audio Settings:
    • Bitrate: 128 kbps+
    • Channels: Stereo
    • Codec: AAC (low complexity)
    • Sample rate: 48 kHz

Facebook Photo Requirements

  • General Guidance: Facebook supports various image formats, including JPEG, PNG, GIF, and WebP.
  • Aspect Ratio: 1.91:1 to 4:5 recommended for Feed.

Validation & Limits

The following validation constraints are enforced by the API for Facebook uploads:

LimitValueNotes
Post Description63,206 charactersMaximum length enforced on text content and post descriptions.
Post Title255 charactersMaximum length for post titles (when provided separately).
Image File Size4 MBMaximum file size per image.
Video File Size1 GBMaximum file size per video (Graph API standard upload limit). Files over 100 MB must use presigned uploads — a single request is capped at 100 MB by our edge.
Carousel/Album ItemsUnlimited per APIFacebook’s native limit applies (typically 10 photos/videos per album).
Text-Only PostsSupportedPosts with no media are allowed.
Link AttachmentsSupportedThe link parameter allows URL previews on posts.

Notes:

  • File size limits are enforced during upload. Oversized files will be rejected with a 400 error.
  • Character limits are validated against the provided text fields (description, title, link).
  • Facebook may apply additional constraints via the Graph API (e.g., content policies, hashtag limits) that are not enforced by this API but will be reflected in error messages returned by Facebook.
  • Refer to Facebook’s Video API Guide  for recommended video specs and formatting.

Upload Text Post

Create a simple text status update on a Facebook Page.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Facebook Page.
descriptionstringYesThe text content of the post.
linkstringNoA URL to attach to the post.
schedule_datestringNoISO 8601 date string to schedule the post. Must be in the future and within 6 months.

AI disclosure: Facebook’s text-post endpoint accepts no AI self-disclosure parameter. is_aigc is available on photos, albums and Reels only.

Example Request

curl --location 'https://api.multi-upload-tool.com/api/v1/upload' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'accountId="12345"' \ --form 'description="Hello world! Check out our new website."' \ --form 'link="https://www.example.com"'

Upload Photo

Upload a single photo to the Page Feed.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Facebook Page.
photoFileYesThe image file to upload.
descriptionstringNoThe caption for the photo.
titlestringNoAlternative to description for the caption.
schedule_datestringNoISO 8601 date string to schedule the post. Must be in the future and within 6 months.
is_aigcboolean | stringNoSelf-disclose AI usage. Sent to Facebook as photo provenance metadata.

Example Request

curl --location 'https://api.multi-upload-tool.com/api/v1/upload' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'accountId="12345"' \ --form 'photo=@"/path/to/image.jpg"' \ --form 'description="Beautiful sunset!"'

Upload Video (Reels)

Upload a video to the Page. media_type decides how it is published:

  • REELS publishes a real Reel through Facebook’s Reels API. Requires 9:16, 1080x1920, 3-90 seconds. Supports is_aigc.
  • VIDEO publishes a standard video post with no ratio or duration constraint. Facebook exposes no AI self-disclosure parameter on this endpoint, so is_aigc is ignored.

Watch the default: if you omit media_type, a video is published as VIDEO, not as a Reel — so is_aigc is silently ignored. Send media_type=REELS explicitly to publish a Reel and have the AI disclosure applied. (The web app always sends REELS, which is why the toggle works there without any extra step.)

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Facebook Page.
videoFileYesThe video file to upload.
descriptionstringNoThe description/title for the video.
titlestringNoAlternative to description.
media_typestringNoREELS or VIDEO. Defaults to VIDEO when omitted. See above.
schedule_datestringNoISO 8601 date string to schedule the post. Must be in the future and within 6 months.
is_aigcboolean | stringNoSelf-disclose AI usage. REELS only — ignored when media_type is VIDEO.

Example Request

curl --location 'https://api.multi-upload-tool.com/api/v1/upload' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'accountId="12345"' \ --form 'video=@"/path/to/video.mp4"' \ --form 'description="My new video update"'

Upload multiple photos in a single post.

Endpoint

POST /upload

Content-Type

multipart/form-data

Parameters

Query Parameters

ParameterTypeRequiredDescription
asyncstringNoDefault "true". If "false", the API waits for upload completion.

Body Parameters

ParameterTypeRequiredDescription
accountIdstringYesThe ID of the connected Facebook Page.
photoFile[]YesMultiple image files.
descriptionstringNoThe caption for the album.
titlestringNoAlternative to description for the caption.
schedule_datestringNoISO 8601 date string to schedule the post. Must be in the future and within 6 months.
is_aigcboolean | stringNoSelf-disclose AI usage. Sent to Facebook as photo provenance metadata.

Example Request

curl --location 'https://api.multi-upload-tool.com/api/v1/upload' \ --header 'x-api-key: YOUR_API_KEY' \ --form 'accountId="12345"' \ --form 'photo=@"/path/to/image1.jpg"' \ --form 'photo=@"/path/to/image2.jpg"' \ --form 'description="Holiday Album"'