Facebook errors
Facebook Page posting errors: what each code means and what to do
A Facebook Page post through Status 200 Uploads can be refused by us before anything is sent, or by Facebook itself. Our refusals carry a fixed code, such as reconnect_required or media_wrong_for_post_type, with a sentence saying what to do. Facebook's own refusals arrive with Facebook's sentence in the message. When we sent the post and Facebook's answer was lost, the answer is still_publishing, never a failure. This page lists them all, with whether sending the same request again can work.
- Checked on
How to read an error
Every refusal is JSON with error.code and error.message. A refusal Facebook made reaches you as HTTP 500 with error.code FUNCTION_ERROR (not yet listed in the API reference) and Facebook's own sentence in error.message. The one exception is a sign-in Facebook no longer accepts (Meta's code 190): that becomes 401 reconnect_required, because only you can fix it.
A Facebook post gets its row in History before it is sent, so a post that takes longer than the request still ends up in History with its outcome. A post we refuse before sending it, such as a video post with a picture attached, leaves no failed post behind.
When we sent the post and Facebook's answer never came back, the post may be live. The answer is then 202 still_publishing, and History marks the post as not confirmed while we ask Facebook whether it went out. Do not send it again in the meantime: a Page post cannot be deleted by Status 200 Uploads once it is out.
The connection to your Facebook Page
We post as the Page of the connection, with the Page's own sign-in. When Facebook stops accepting it, the post shows in History as failed with this code.
| HTTP | Code | What it means | What to do | Send it again? | Where it shows |
|---|---|---|---|---|---|
| 401 | reconnect_required | Facebook did not accept the saved sign-in: it expired, or Facebook ended the session (after a password change, for example). | Reconnect Facebook on the Connections page, then publish the post again. | never No. The same request cannot work: change it first. | API answer, History, AI app |
The post type and its file
A Facebook post through us is text, a photo, a video or a Reel (post.facebook.postType). We check the file against the type before anything is sent, because Facebook answers a file that does not fit with a sentence about its format.
| HTTP | Code | What it means | What to do | Send it again? | Where it shows |
|---|---|---|---|---|---|
| 400 | media_wrong_for_post_type | A video or Reel post has a picture attached. Facebook cannot make a video from a still image. Nothing was sent. | Attach the video you meant, or choose postType photo for a picture. | never No. The same request cannot work: change it first. | API answer, AI app |
| 400 | api_error | A photo, video or Reel post has no file at all. | Add a mediaID or a media address, or send it as a text post. | never No. The same request cannot work: change it first. | API answer |
| 400 | bad_request | A text post (postType text, or no file and no post type) has no text, or a media address is not a web address (error.field names it). | Put the words in post.content.text, or send a full address that starts with https://. | never No. The same request cannot work: change it first. | API answer |
| 400 | media_not_available | A scheduled post's file answers "not found" at its address: deleted, moved, or past the 7 days a library file is kept. | Upload the file again and schedule the post with its new mediaID. | never No. The same request cannot work: change it first. | API answer, AI app |
| 413 | MEDIA_TOO_LARGE | The video is larger than Facebook takes through us. The answer names the limit in max_video_bytes. | Send a smaller video, or check the limit on the file limits page. | never No. The same request cannot work: change it first. | API answer, History, AI app |
Accepted, not failed
Two answers are 202: the post is on its way or waiting, and sending it again could post it twice.
| HTTP | Code | What it means | What to do | Send it again? | Where it shows |
|---|---|---|---|---|---|
| 202 | still_publishing | We sent the post and Facebook's answer was lost, so it may already be on the Page. History shows it as not confirmed. | Do not send it again. Look at the Page, and let History settle: it offers Retry only once we found the post is not on the Page. | not_a_failure No: it was accepted and goes out on its own. | API answer, History |
| 202 | queued_for_next_day | Your plan's posts for the day were used, so the post was queued for the next day instead of failing. The answer gives its scheduled_post_id. | Do not send it again. Cancel it by its scheduled_post_id if you no longer want it. | not_a_failure No: it was accepted and goes out on its own. | API answer, AI app |
Codes any post can get
Not special to Facebook: the request, the plan and the file in your library. The API reference lists every code.
| HTTP | Code | What it means | What to do | Send it again? | Where it shows |
|---|---|---|---|---|---|
| 401 | unauthorized | No API key, or a key that is not active. | Send Authorization: Bearer with an active rl_ key from the API page. | never No. The same request cannot work: change it first. | API answer |
| 403 | account_not_found | The accountId is not one of your profiles. The answer lists yours. | Use a profile id or "@name" from the list. | never No. The same request cannot work: change it first. | API answer, AI app |
| 404 | media_not_found | The mediaID is not in your library: never imported, deleted, or removed after 7 days. | Import or upload the file again and use the new id. | never No. The same request cannot work: change it first. | API answer, AI app |
| 409 | media_processing | The file is still importing. | Wait the Retry-After seconds and send the same request. | wait_and_resend Yes: the same request after a wait (Retry-After, when the answer gives one). | API answer, AI app |
| 429 | rate_limited | Less than 20 seconds since your last post to the same network. | Wait the Retry-After seconds and send the same request. | wait_and_resend Yes: the same request after a wait (Retry-After, when the answer gives one). | API answer, AI app |
| 429 | daily_limit_reached | Your plan's posts for today are used up. | Post after resets_at, or move to a larger plan. | after_reset Not before the time in resets_at. | API answer, AI app |
| 429 | monthly_limit_reached | The Free plan's posts for this month are used up. | Post after resets_at, or move to a paid plan. | after_reset Not before the time in resets_at. | API answer, AI app |
| 422 | idempotency_key_reused | The Idempotency-Key was already used with another body. | Use a new key for a new post. | never No. The same request cannot work: change it first. | API answer |
| 500 | server_error | Our side failed. | Send it once more with the same Idempotency-Key; without one, check History first. | resend_once_with_key Once, with the same Idempotency-Key. | API answer, AI app |
| 502 | upstream_unavailable | The request never left. Nothing was posted. | Send the same request again after a short wait. | wait_and_resend Yes: the same request after a wait (Retry-After, when the answer gives one). | API answer |
Facebook's own errors
When Facebook refuses a post as we send it, the answer is HTTP 500 with error.code FUNCTION_ERROR (not yet listed in the API reference) and Facebook's message in error.message, and History shows the same message. A sign-in Facebook no longer accepts becomes 401 reconnect_required instead. The numbers below are Meta's error codes; what they mean comes from Meta's Graph API error handling and Reels publishing pages, read on .
190As the post is sent- The access token expired or is no longer valid. Meta's subcode says why: 460 the password changed, 463 expired, 467 invalid, 492 the person who connected no longer has a role on the Page. [F12]
- Reconnect Facebook under Connections. For 492, have a Page admin give your Facebook account its role on the Page back first.
10As the post is sent- Permission denied. Codes 200 to 299 also mean a permission is missing. [F12]
- Reconnect Facebook and allow everything the sign-in asks for, and check that your account can post on the Page.
368As the post is sent- Facebook blocked the Page from posting for a while because of a policy violation. [F12]
- Wait before posting again, and look for a notice on the Page in Facebook.
506As the post is sent- A duplicate post. Meta's words: "Duplicate posts cannot be published consecutively." [F12]
- Change the text, or post something else in between.
4As the post is sent- The app reached its request limit. Codes 17 (user), 32 (Page), 613 (custom) and 80001 (Page business use case) are request limits too. [F12, F11]
- Wait, then publish it again later. Sending again at once will not help.
1609005As the post is sent- Facebook could not post the link. [F12]
- Check the link in the post: it must be a full, working web address.
1363040As a Reel is checked- The Reel's aspect ratio is not one Facebook takes. Meta's Reels page asks for 9:16. [F7]
- Export the Reel at 9:16 and publish it again.
1363127As a Reel is checked- The Reel's resolution is too low: at least 540 × 960 pixels. [F7]
- Export the Reel at a higher resolution, such as 1080 × 1920.
1363128As a Reel is checked- The Reel's length is outside 3 to 90 seconds, the range Meta's Reels publishing page states. [F7]
- Trim the Reel into that range, or post it as a video instead.
1363129As a Reel is checked- The Reel's frame rate is outside 24 to 60 frames a second. [F7]
- Export the Reel at 30 frames a second and publish it again.
Facebook error questions
Facebook did not accept the sign-in we hold for that Page: it expired, or Facebook ended the session. Reconnect Facebook on the Connections page, then publish the post again. The failed post stays in History with the reason.
We sent the post and Facebook's answer never came back, so it may already be on the Page. It is a 202, not a failure: do not send it again. History shows it as not confirmed while we ask Facebook whether it went out.
Not while it is not confirmed: it may be live, and a retry could publish it twice. History offers Retry once we found that the post is not on the Page. Until then, look at the Page yourself.
A video or Reel post had a picture attached, and Facebook cannot make a video from a still image. We refuse it before anything reaches Facebook, so nothing is posted and no failed post is left. Attach the video, or choose postType photo for the picture.
A refusal Facebook makes as we send the post is answered as HTTP 500 with Facebook's own sentence in the message. Read it before sending the post again: a duplicate post or a policy block fails the same way a second time. A sign-in Facebook no longer accepts is answered as 401 reconnect_required instead.
Meta uses 368 when it temporarily blocks posting because of a policy violation. Wait before posting again, and look for a notice on the Page in Facebook.
It is a duplicate post. Meta says "Duplicate posts cannot be published consecutively." Change the text, or post something else in between.
More on Facebook
Facebook's pages this rests on
Sources read on 15 October 2026.
- F7Video API: Reels Publishing (no date shown)
- F11Graph API: Rate Limits (no date shown)
- F12Graph API: Handling Errors (no date shown)
Start posting to Facebook
Facebook is on every plan, Free included. This page was checked on 26 October 2026.