Instagram errors
Instagram posting errors: what each code means and what to do
An Instagram post through Status 200 Uploads can be refused by us before anything is sent, by Instagram while it takes the file, or by Instagram after it accepted the post. Our refusals carry a fixed code, such as RECONNECT_REQUIRED or media_wrong_for_post_type, with a sentence saying what to do. Instagram's own refusals carry Meta's code and subcode (in error.details, or in History when Instagram refuses later), such as 9 and 2207042 for the publishing limit. This page lists both, 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. Switch on the exact code: Instagram's sign-in codes are written in capitals (RECONNECT_REQUIRED, NO_TOKEN), where Facebook and LinkedIn answer reconnect_required in lower case.
Instagram publishes in two steps. It first takes the file into a container, then publishes the container. Our answer comes after the first step: it says processing and gives the container_id, and the post finishes after the answer. History shows how it ended, and GET /api/v2/posts/{id} reads it back.
When Instagram refuses the first step, the failed post is written into History along with the answer, so you can read the reason later. A post we refuse before calling Instagram, such as a picture sent as a Reel, leaves no failed post behind: nothing reached Instagram, and it does not use a post of your plan.
A post that Instagram accepted and then failed keeps Instagram's container id, so History does not offer Retry on it: a retry would send the same post again. Fix what the reason says and publish it as a new post.
The connection to your Instagram account
When the Instagram sign-in we hold has expired, we renew it as the post goes out. When that is not possible, the answer comes from the Instagram step, so the post shows in History as failed.
| HTTP | Code | What it means | What to do | Send it again? | Where it shows |
|---|---|---|---|---|---|
| 401 | RECONNECT_REQUIRED | Instagram ended the sign-in we hold for this profile, and it cannot be renewed. | Connect Instagram again under Connections, then publish the post again. | never No. The same request cannot work: change it first. | API answer, History, AI app |
| 401 | NO_TOKEN | This profile's Instagram connection has no sign-in stored. | Connect Instagram under Connections. | never No. The same request cannot work: change it first. | API answer, History, AI app |
| 401 | TOKEN_REFRESH_FAILED | Renewing the Instagram sign-in failed just now, without Instagram saying it was ended. | Publish it again a little later. If it fails again, connect Instagram again under Connections. | wait_and_resend Yes: the same request after a wait (Retry-After, when the answer gives one). | API answer, History |
The post type and its files
Instagram makes a Reel only from a video, and a carousel only from 2 to 10 files. We check this before anything is sent, because Instagram answers a file that does not fit with a sentence about the file's format, which hides the real cause.
| HTTP | Code | What it means | What to do | Send it again? | Where it shows |
|---|---|---|---|---|---|
| 400 | media_wrong_for_post_type | The files do not fit the post type: a picture sent as a Reel, one file or more than 10 files as a carousel, or several files on a Reel or a feed image. Nothing was sent. | Send a video for a Reel and 2 to 10 files for a carousel, or choose the post type that fits the files. | never No. The same request cannot work: change it first. | API answer, AI app |
| 413 | MEDIA_TOO_LARGE | The file is larger than Instagram takes through us. Nothing reached Instagram. | Use a smaller file: Reels up to 300 MB, photos up to 8 MB. | never No. The same request cannot work: change it first. | API answer, History, AI app |
| 400 | bad_request | A Reel's cover (post.instagram.coverUrl) or a media address is not an http:// or https:// address. error.field names it, and no post is recorded. | Send a full address that starts with https://, or leave the cover out. | never No. The same request cannot work: change it first. | API answer |
| 400 | media_not_available | A scheduled post's file, or a Reel's cover, 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 |
Sending the post to Instagram
After the checks, the post goes to Instagram. A post it accepted finishes after our answer; this one comes back when the first step did not give us a container.
| HTTP | Code | What it means | What to do | Send it again? | Where it shows |
|---|---|---|---|---|---|
| 400 | no_container | Instagram answered the first step without a container id, so the post never started. The failed post is in History. | Check the file against Instagram's own errors below, then publish it again. | never No. The same request cannot work: change it first. | API answer, History |
Codes any post can get
Not special to Instagram: 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 |
Instagram's own errors
When Instagram refuses the file as we create the post, the answer is HTTP 400 with error.code CONTAINER_ERROR (CAROUSEL_ERROR or CAROUSEL_CHILD_ERROR for a carousel; none of the three is listed in the API reference yet), Instagram's message in error.message, and Meta's code and subcode in error.details. When Instagram refuses the post later, while it processes or publishes it, History shows Instagram's message; for a refused publish it adds code= and subcode=. The codes below are Meta's, written as code/subcode; what they mean comes from Meta's Instagram error reference, read on .
9/2207042As the post is published- The account reached the number of posts apps may publish for it in a moving 24-hour period. Meta's pages give 100 in one place and 50 in others, and count a carousel as one post. [I6, I1, I4]
- Wait for older posts to leave the 24-hour window, then publish again. Sending it again at once will not help.
9007/2207027As the post is published- The media is not ready for publishing yet. [I6, I1]
- Wait and publish again. Meta suggests checking a container once a minute for up to 5 minutes.
9004/2207052As Instagram fetches the file- Instagram could not fetch the file from its address. [I6]
- Use an address that is public and answers with the file itself, or upload the file to your media library and post it by its mediaID.
-2/2207003As Instagram fetches the file- Downloading the file took Instagram too long. [I6]
- Publish it again. A smaller file is fetched faster.
36000/2207004As Instagram checks the file- The image is larger than Instagram takes: over 8 MiB. [I6]
- Save the image smaller and publish it again.
36001/2207005As Instagram checks the file- Instagram does not take the image's format. Meta's publishing guide names JPEG as the image format. [I6, I1]
- Save the image as a JPEG and publish it again.
36003/2207009As Instagram checks the file- The image's aspect ratio is outside what Instagram takes, from 4:5 (portrait) to 1.91:1 (landscape). [I6, I1]
- Crop the image into that range and publish it again.
36004/2207010As Instagram checks the post- The caption is too long: Instagram takes up to 2,200 characters, 30 hashtags and 20 @ tags. [I6, I2]
- Shorten the caption, or remove hashtags or tags, and publish it again.
352/2207026As Instagram checks the file- Instagram does not take the video's format. [I6]
- Export the video as MP4 or MOV and publish it again.
25/2207050Any step- Meta says the Instagram account is restricted. [I6]
- Sign in to the Instagram app and complete what it asks. Until then, sending again will not help.
4/2207051Any step- Instagram restricted the activity, with Meta's words "We restrict certain activity to protect our community". [I6]
- Wait before posting again, and check the account in the Instagram app.
190Any step- The access token expired or is no longer valid. Instagram follows the Graph API's rules for sign-in errors. [F12]
- Connect Instagram again under Connections, then publish the post again.
Instagram error questions
Instagram ended the sign-in we hold for that profile, and it could not be renewed, so we can no longer post for it. Connect Instagram again under Connections, then publish the post again. The failed post stays in History with the reason.
Instagram publishes in two steps, and our answer comes after the first one: Instagram has the file, and the post finishes after the answer. It is not a failure. History shows how it ended, and GET /api/v2/posts/{id} reads it back.
A Reel is made from a video, and the post had a picture. We refuse it before anything reaches Instagram, so it leaves no failed post and does not use a post of your plan. Attach the video you meant, or choose Feed Image or Carousel for pictures.
Ask the profile's posting options: GET /api/v2/accounts/{profile_id}/options reports Instagram's rolling publishing limit as posts_used, posts_allowed, posts_left and window_hours. A null there means Instagram did not report it, not a zero.
When Instagram already took the post (it has a container id) and then failed it, a retry would send exactly the same post again, so History does not offer one. Fix what the reason says and publish it again as a new post.
It is Meta's publishing limit: the account reached the number of posts apps may publish for it in a moving 24-hour period. Meta's pages give 100 in one place and 50 in others, and a carousel counts as one post. Wait for the window to move on before you publish again.
Meta says the media could not be fetched from the address it was given. Use an address that is public and answers with the file itself, or upload the file to your media library and post it by its mediaID.
More on Instagram
Instagram's pages this rests on
Sources read on 15 October 2026.
- I1Instagram Platform: Content Publishing (no date shown)
- I2IG User Media reference (no date shown)
- I4IG User Content Publishing Limit (no date shown)
- I6Instagram Platform: Error Codes (no date shown)
- F12Graph API: Handling Errors (no date shown)
Start posting to Instagram
Instagram is on every plan, Free included. This page was checked on 26 October 2026.