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.
Facebook posting
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.
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.
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.
Several photos with one caption, published together as one post on the Page instead of one post per photo.
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).
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.
Each setting by its name in the dashboard, its field in the REST API and its option in the AI connector. Every one here has been used in a real post or a dated live test.
| 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. |
When we change or flag something in a Facebook post, the answer (and History) names it with one of these codes. Your original file is never changed.
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.
The same Facebook post from the dashboard, the REST API, Python, n8n or an AI app.
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" }
}
}'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){
"post": {
"accountId": "@yourpage",
"platform": "facebook",
"content": {
"text": "{{ $json.message }}",
"mediaID": ["{{ $json.photoId }}"]
},
"facebook": { "postType": "photo" }
}
}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.
The code in the answer, what it means and what to do. Each one is in the API reference.
| HTTP | Code | What it means | What to do |
|---|---|---|---|
| 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. |
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.
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.
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.
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.
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.
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.
Facebook is on every plan, Free included. Everything on this page was checked on 26 October 2026.