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:
| Limit | Value | Notes |
|---|---|---|
| Post Description | 63,206 characters | Maximum length enforced on text content and post descriptions. |
| Post Title | 255 characters | Maximum length for post titles (when provided separately). |
| Image File Size | 4 MB | Maximum file size per image. |
| Video File Size | 1 GB | Maximum 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 Items | Unlimited per API | Facebook’s native limit applies (typically 10 photos/videos per album). |
| Text-Only Posts | Supported | Posts with no media are allowed. |
| Link Attachments | Supported | The 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
| Parameter | Type | Required | Description |
|---|---|---|---|
async | string | No | Default "true". If "false", the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected Facebook Page. |
description | string | Yes | The text content of the post. |
link | string | No | A URL to attach to the post. |
schedule_date | string | No | ISO 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_aigcis 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
| Parameter | Type | Required | Description |
|---|---|---|---|
async | string | No | Default "true". If "false", the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected Facebook Page. |
photo | File | Yes | The image file to upload. |
description | string | No | The caption for the photo. |
title | string | No | Alternative to description for the caption. |
schedule_date | string | No | ISO 8601 date string to schedule the post. Must be in the future and within 6 months. |
is_aigc | boolean | string | No | Self-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:
REELSpublishes a real Reel through Facebook’s Reels API. Requires 9:16, 1080x1920, 3-90 seconds. Supportsis_aigc.VIDEOpublishes a standard video post with no ratio or duration constraint. Facebook exposes no AI self-disclosure parameter on this endpoint, sois_aigcis ignored.
Watch the default: if you omit
media_type, a video is published asVIDEO, not as a Reel — sois_aigcis silently ignored. Sendmedia_type=REELSexplicitly to publish a Reel and have the AI disclosure applied. (The web app always sendsREELS, which is why the toggle works there without any extra step.)
Endpoint
POST /upload
Content-Type
multipart/form-data
Parameters
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
async | string | No | Default "true". If "false", the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected Facebook Page. |
video | File | Yes | The video file to upload. |
description | string | No | The description/title for the video. |
title | string | No | Alternative to description. |
media_type | string | No | REELS or VIDEO. Defaults to VIDEO when omitted. See above. |
schedule_date | string | No | ISO 8601 date string to schedule the post. Must be in the future and within 6 months. |
is_aigc | boolean | string | No | Self-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 Gallery (Album)
Upload multiple photos in a single post.
Endpoint
POST /upload
Content-Type
multipart/form-data
Parameters
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
async | string | No | Default "true". If "false", the API waits for upload completion. |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the connected Facebook Page. |
photo | File[] | Yes | Multiple image files. |
description | string | No | The caption for the album. |
title | string | No | Alternative to description for the caption. |
schedule_date | string | No | ISO 8601 date string to schedule the post. Must be in the future and within 6 months. |
is_aigc | boolean | string | No | Self-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"'