# Post and schedule to your Facebook Page

Canonical: https://status200uploads.com/platforms/facebook

Checked on 26 October 2026.

Status 200 Uploads publishes text posts, photos, videos and Reels to the Facebook Page you connect, straight away or at a time you schedule. Write the post once in the dashboard, or send it from the REST API, Python, n8n or an AI app such as Claude. You sign in on Facebook itself and pick the Page; our own Meta app does the posting.

## Quick facts

- **Where posts go:** To the Facebook Page of the connection. The account's posting options name that Page.
- **What you can post:** Text on its own, one photo, several photos in one post, a video or a Reel.
- **Largest video:** 5 GB per file. [File limits of every network](https://status200uploads.com/docs/file-limits)
- **Largest image:** 10 MB per image, checked in the dashboard; through the API, Facebook itself decides.
- **Reels:** Facebook takes Reels of 3 to 90 seconds.
- **Caption:** Up to 63,206 characters. A dry run or a scheduled post flags a longer one (caption_over_limit).
- **Scheduling:** Schedule a post up to 365 days ahead, or send it now.
- **Plans:** Facebook is on every plan, Free included. [Pricing](https://status200uploads.com/pricing)
- **How it connects:** You sign in on Facebook itself (OAuth), so we never see your Facebook password.
- **Your own Meta app:** Not needed: our Meta app publishes for you, so there is no app review to go through on your side.

## What you can post

### Text posts

Words only, with no photo or video. Send a post with no media field (or postType text) and it appears on the Page as a status update.

### Photo posts

One photo with your caption. The dashboard checks that it is at most 10 MB; through the API, Facebook itself decides whether it takes the image.

### Posts with several photos

Several photos with one caption, published together as one post on the Page instead of one post per photo.

### Video posts

One video file is published as an ordinary Page video, up to 5 GB. Whether a file is a video is read from the end of its address (.mp4, .mov, .webm or .m4v).

### Reels

Set postType reel and the same video is published as a Facebook Reel instead of a Page video. Reels must be 3 to 90 seconds long, and a Reel or a video post sent with a picture is refused before Facebook is called.

## Settings

| Setting | Dashboard | REST field | AI connector option | What it does |
| --- | --- | --- | --- | --- |
| Post type | Post Type | facebook.postType | post_type | Text, photo, video or Reel. Leave it out and we choose: text when there is no media field, a video for one video file, otherwise a photo. |

## Automatic changes

- `unknown_field`: A field we do not read is not used, and the answer says so (with the field name we think you meant, when there is one). The post still goes out.
- `field_not_used`: A field we read but could not use for this post (for example another network's block, or a setting that does not apply to this kind of post) is named in the answer. The post still goes out.
- `options_outside_post`: An option sent next to "post" instead of inside it is not used, and the answer says where it belongs.
- `media_url_not_kept`: A scheduled post that names its media by web address fetches the file when it goes out, and we keep no copy: the answer reminds you the file must still be there then.
- `posts_close_together`: The answer warns when another Facebook post of the account is scheduled within 20 seconds: leave at least a minute between them.
- `caption_over_limit`: In a dry run or a scheduled post, a caption longer than Facebook allows is flagged. We send it as it is; Facebook may refuse it or cut it short.
- `moved_to_next_day`: When the daily limit of the profile is reached while a scheduled post is going out, the networks that did not fit move to the next day as a scheduled post of their own, and the post read back says so.
- `queued_for_next_day`: On a plan with a daily limit, a post over the day's limit is queued for the next day instead of failing (answer 202), and the answer gives the time.

## Your way to post

### From the dashboard

1. Under Connections, connect Facebook: sign in on Facebook and choose the Page to post to.
2. In Schedule, write the post and add a photo or a video, or leave the media out for a text post.
3. Pick Facebook, set the post type to Reel if the video should be one, and post now or schedule it.

[Connect Facebook](https://status200uploads.com/connections)

### From the REST API

Publish an uploaded video as a Facebook Reel (POST /api/v2/posts)

```bash
curl -X POST 'https://status200uploads.com/api/v2/posts' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer rl_your_api_key' \
  -d '{
    "post": {
      "accountId": "@yourpage",
      "platform": "facebook",
      "content": {
        "text": "Thirty seconds in our workshop",
        "mediaID": ["YOUR_FILE_ID"]
      },
      "facebook": { "postType": "reel" }
    }
  }'
```

[Full page](https://status200uploads.com/integrations/rest-api)

### From Python

A text post to the Page with the status200uploads package

```python
from status200uploads import Status200

s200 = Status200()  # uses STATUS200_API_KEY

update = {
    "accountId": "@yourpage",
    "platform": "facebook",
    "content": {"text": "We are closed on Monday for the holiday. See you Tuesday!"},
}
result = s200.publish(update, wait=True)  # reads the post back until Facebook has it
print(result.final.get("permalink") if result.final else result.code)
```

[Full page](https://status200uploads.com/integrations/python)

### From n8n

1. Add an HTTP Request node at the end of the workflow, method POST, address https://status200uploads.com/api/v2/posts.
2. Headers: Authorization Bearer rl_your_key, Content-Type application/json, and an Idempotency-Key such as {{ $json.id }}-facebook, so a retried execution never posts twice to the Page.
3. Body: the JSON below. Drop the mediaID line and the post becomes a text post.

The HTTP Request body for a photo post

```json
{
  "post": {
    "accountId": "@yourpage",
    "platform": "facebook",
    "content": {
      "text": "{{ $json.message }}",
      "mediaID": ["{{ $json.photoId }}"]
    },
    "facebook": { "postType": "photo" }
  }
}
```

[Full page](https://status200uploads.com/integrations/n8n)

### From an AI app

Prompt: "Post "We are closed on Monday for the holiday" to our Facebook Page now, with no picture."

The app looks up the profile with status200_list_accounts, sends a text post with post_type text through status200_validate_post and then status200_publish_post, and gives you the post's link from the answer.

[Full page](https://status200uploads.com/integrations/mcp)

## Errors

| HTTP | Code | Meaning | Fix |
| --- | --- | --- | --- |
| 401 | reconnect_required | Facebook no longer accepts the saved sign-in. | Reconnect Facebook on the Connections page and send the post again. |
| 400 | media_wrong_for_post_type | A Reel or a video post was sent with a picture. Nothing was sent to Facebook. | Send a video file, or choose postType photo. |
| 403 | forbidden | Facebook refused the post with a 403 that named no code of its own. | Read Facebook's reason in the message; if it is about the sign-in or the Page, reconnect Facebook under Connections. |
| 500 | platform_error | Facebook answered with a server error that named no code. | Send it again once, with the same Idempotency-Key. |
| 413 | MEDIA_TOO_LARGE | The file is larger than Facebook takes through us. | Use a video of at most 5 GB. |
| 404 | media_not_found | The mediaID is not one of your files, or it was removed after 7 days. | Upload the file again and use its new mediaID. |

## Questions

### Can I post to a Facebook Page through an API?

Yes. Send a POST to https://status200uploads.com/api/v2/posts with platform facebook and your API key; a post with no media field is a text post. The REST API is on every plan, Free included.

### Can I post to my personal Facebook profile?

No. Posts go to the Facebook Page of the connection, the Page you chose when you connected Facebook. To post somewhere else, connect that Page.

### What is the difference between a Facebook video and a Reel?

One video file goes out as a Page video unless you set postType reel, which publishes it as a Reel. Reels must be 3 to 90 seconds; a Page video can be as large as our file limit allows.

### Which id identifies my Facebook post?

The answer's data is Facebook's own (its id and permalink). Our id is status200.post_id: use it with GET /api/v2/posts/{id} to read the post back, and status200.status_url gives the full address.

### How large can a Facebook video be?

Up to 5 GB per file, the largest file we store; Facebook itself accepts more. Photos are checked at 10 MB in the dashboard, and through the API Facebook decides.

### Can I schedule Facebook posts?

Yes, up to 365 days ahead from the dashboard or with post.scheduledFor in the API request. Leave at least a minute between two posts to the same Page: the answer warns when two are due within 20 seconds.

## More on Facebook

- [Facebook errors](https://status200uploads.com/platforms/facebook/errors)
- [Facebook API guide](https://status200uploads.com/platforms/facebook/api-guide)

## Related

- [Instagram](https://status200uploads.com/platforms/instagram)
- [Threads](https://status200uploads.com/platforms/threads)
- [LinkedIn](https://status200uploads.com/platforms/linkedin)
- [REST API](https://status200uploads.com/integrations/rest-api)
- [Python](https://status200uploads.com/integrations/python)
- [n8n](https://status200uploads.com/integrations/n8n)
- [AI agents (MCP)](https://status200uploads.com/integrations/mcp)
- [Claude](https://status200uploads.com/integrations/claude)
- [Facebook options in the API reference](https://status200uploads.com/docs/api#post-create)
- [File limits of every network](https://status200uploads.com/docs/file-limits)
- [Pricing](https://status200uploads.com/pricing)
