Instagram posting

Post and schedule Instagram Reels, photos and carousels

Status 200 Uploads publishes Instagram Reels, single feed photos and carousels to your Business or Creator account, now or at a time you choose. Use the dashboard, the REST API or an AI app such as Claude; you sign in on Instagram itself, and posts go out through our own Meta app, so there is nothing for you to register with Meta.

  • Checked on

Instagram at a glance

What you can post
A Reel (one video), a feed post with one photo, or a carousel of 2 to 10 files.
Largest video
300 MB per file. File limits of every network
Largest image
8 MB per image.
Reel length
Up to 15 minutes, Instagram's own limit for Reels published from an app.
Caption
Up to 2,200 characters. A dry run or a scheduled post flags a longer caption (caption_over_limit) before Instagram sees it.
Account type
A Business or Creator account: Instagram does not let apps publish to a personal account.
Daily allowance
Instagram counts the posts an account publishes in a rolling window. The account's posting options show how many are used and how many are left.
Scheduling
Schedule a post up to 365 days ahead, or send it now.
Plans
Instagram is on every plan, Free included. Pricing
How it connects
You sign in on Instagram itself (OAuth), so we never see your Instagram password.
Your own Meta app
Not needed. Every post is published by our own Meta app, so you never create one or wait for Meta to review it.

Instagram settings you control

Post type · Reel cover

What you can post to Instagram

Reels

One video becomes a Reel, up to 300 MB and 15 minutes. A Reel is shared to your profile feed as well as the Reels tab, and it can have a cover image: give its web address and Instagram fetches it when the Reel goes out. A Reel must be a video; a photo sent as a Reel is refused before anything reaches Instagram.

Feed photos

A single photo in the feed, up to 8 MB. Send one image and no post type, and it goes out as a feed photo with your caption.

Carousels

2 to 10 files in one post that people swipe through. Send two or more files and Instagram gets a carousel; more than 10 are refused before anything is sent, and so is a carousel with a single file.

Instagram settings

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.

Instagram settings in the dashboard, the REST API and the AI connector
SettingDashboardREST fieldAI connector optionWhat it does
Post typePost Typeinstagram.postTypepost_typeReel, feed photo or carousel. Leave it out and we choose from the files: a carousel for two or more, a Reel for one video, otherwise a feed photo.
Reel coverCover Image URL (optional)instagram.coverUrlcover_urlThe web address (https:// or http://) of the Reel's cover image. Instagram fetches it when the Reel goes out, so it must still be there then. Reels only.

What we change for you, and tell you

When we change or flag something in an Instagram 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 Instagram 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 Instagram allows is flagged. We send it as it is; Instagram 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.

Post to Instagram your way

The same Instagram post from the dashboard, the REST API, Python, n8n or an AI app.

From the dashboard

  1. Under Connections, connect Instagram and sign in on Instagram with your Business or Creator account.
  2. In Schedule, add the video or photos and write the caption once for every network you pick.
  3. Pick Instagram, choose Reel, feed photo or carousel, add a cover address for a Reel if you want one, then post now or set a time.

Connect Instagram →

From the REST API

Publish an uploaded video as a Reel, shared to the feed (POST /api/v2/posts)
curl -X POST 'https://status200uploads.com/api/v2/posts' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer rl_your_api_key' \
  -d '{
    "post": {
      "accountId": "@myprofile",
      "platform": "instagram",
      "content": {
        "text": "Check out this reel! #trending",
        "mediaID": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
      },
      "instagram": {
        "postType": "reel",
        "shareToFeed": true
      }
    }
  }'

Full page →

From Python

A carousel with the status200uploads package (pip install status200uploads)
from status200uploads import Status200

s200 = Status200()  # reads STATUS200_API_KEY

carousel = {
    "accountId": "@yourprofile",
    "platform": "instagram",
    "content": {
        "text": "Three looks from the new collection",
        "mediaID": ["FIRST_FILE_ID", "SECOND_FILE_ID", "THIRD_FILE_ID"],
    },
    "instagram": {"postType": "carousel"},
}
result = s200.publish(carousel, wait=True)  # follows the post until Instagram has it
print(result.final.get("permalink") if result.final else result.code)

Full page →

From n8n

  1. After the node that produces your caption and file, add an HTTP Request node that sends POST https://status200uploads.com/api/v2/posts.
  2. Send your API key as Authorization Bearer rl_your_key, Content-Type application/json, and an Idempotency-Key built from the item, for example {{ $json.id }}-instagram.
  3. Paste the body below; postType reel makes the video a Reel.
The HTTP Request body for a Reel
{
  "post": {
    "accountId": "@yourprofile",
    "platform": "instagram",
    "content": {
      "text": "{{ $json.caption }}",
      "mediaID": ["{{ $json.fileId }}"]
    },
    "instagram": { "postType": "reel", "coverUrl": "{{ $json.coverUrl }}" }
  }
}

Full page →

From an AI app

Make a carousel on Instagram from the three photos I uploaded today, with the caption "Three looks from the new collection".

The app lists your media with status200_list_media and picks the three photos, sets post_type to carousel, and checks the post with status200_validate_post: a carousel needs at least two files, so the connector refuses one with a single file before anything is sent. Then it publishes with status200_publish_post and tells you what Instagram answered.

Full page →

Instagram errors you may see

The code in the answer, what it means and what to do. Each one is in the API reference.

Instagram error codes
HTTPCodeWhat it meansWhat to do
401RECONNECT_REQUIREDInstagram no longer accepts the saved sign-in.Connect Instagram again under Connections, then send the post again.
401NO_TOKENThis profile has no Instagram connection stored.Connect Instagram under Connections.
401TOKEN_REFRESH_FAILEDThe Instagram sign-in could not be renewed just now.Try again later; if it keeps failing, connect Instagram again.
400media_wrong_for_post_typeThe files do not fit the post type, for example a photo sent as a Reel. Nothing was sent.Send a video for a Reel, or choose another post type.
400no_containerInstagram did not return a container for the upload.Check the file against Instagram's limits and send it again.
400bad_requestThe Reel cover is not a web address. Nothing was recorded.Send a full address starting with https://, or leave the cover out.
400media_not_availableA scheduled post's file or cover address no longer answers.Put the file back at that address, or upload it and send its mediaID.
413MEDIA_TOO_LARGEThe file is larger than Instagram takes through us.Use a smaller file: Reels up to 300 MB, photos up to 8 MB.

Instagram questions

Start posting to Instagram

Instagram is on every plan, Free included. Everything on this page was checked on 26 October 2026.