Publishing Reels with the Instagram API: accounts, permissions and limits
Instagram's API can publish Reels, but only to professional accounts, through a container-then-publish flow, and only to accounts you manage until Meta's App Review. A practical guide to both login paths, the specs and the daily limit.
The Reelspan teamThe people who build Reelspan
5 min read

Instagram has supported publishing Reels through its API for a while, but the documentation is spread over several pages with two login paths and two hosts, and a couple of limits that contradict each other. This guide puts the parts that matter for posting video in one place. It is based on Meta's developer documentation as published on 6 November 2026.
Who can be posted to
Only Instagram professional accounts, meaning Business or Creator accounts, can be published to through the API (overview). A personal account has to switch to professional first. Switching is free and done in the Instagram app.
And until your app passes Meta's review, only accounts of people who have a role on your Meta app can be published to. More on that below.
Two ways to log in
Meta offers two versions of the API, and they differ in more than the login screen:
| Instagram API with Instagram Login | Instagram API with Facebook Login | |
|---|---|---|
| Account needs | A professional account; no Facebook Page needed | A professional account linked to a Facebook Page |
| API host | graph.instagram.com |
graph.facebook.com |
| Publishing permissions | instagram_business_basic, instagram_business_content_publish |
instagram_basic, instagram_content_publish, pages_read_engagement |
| Missing features | Hashtag search, product tagging, partnership ads | — |
For a tool that only publishes, Instagram Login is simpler: creators sign in with their Instagram credentials, and they don't need a Facebook Page. Choose Facebook Login if you also need features only that path has, such as partnership ads.
With Instagram Login, the long-lived token lasts about 60 days. You can refresh it once it is at least 24 hours old and still valid, and each refresh gives another 60 days (Business Login for Instagram). A token you forget to refresh simply dies, so refresh on a schedule.
The publishing flow: container, then publish
Instagram doesn't take a video in a single call. You create a media container, wait for Instagram to process it, then publish it (content publishing):
- Create the container:
POST /<IG_ID>/mediawithmedia_type=REELSand either a publicvideo_urlfor Instagram to fetch, orupload_type=resumableto send the bytes yourself. Add the caption and any options here. - Upload (resumable only): send the file to
rupload.facebook.comfor that container. - Wait for processing: poll
GET /<CONTAINER_ID>?fields=status_codeuntil it saysFINISHED. Meta suggests polling about once a minute for up to five minutes. Other values areIN_PROGRESS,ERROR,EXPIREDandPUBLISHED. - Publish:
POST /<IG_ID>/media_publish?creation_id=<CONTAINER_ID>. The response is the new media's id.
A container you don't publish expires after 24 hours. The publishing docs describe no webhook for "container ready", so plan on polling.
Useful Reels options on the container, from the media reference:
share_to_feed: also show the Reel in the profile grid.cover_urlorthumb_offset: the cover image, or the frame to use as the cover, in milliseconds.collaborators: up to three accounts to invite as collaborators.is_ai_generated: Instagram's AI disclosure.trial_params: post as a trial Reel, shown to non-followers first.
Video specs for Reels
From the same media reference:
| Spec | Reels |
|---|---|
| Container | MOV or MP4, with the moov atom at the front and no edit lists |
| Video codec | H.264 or HEVC, progressive scan, closed GOP, 4:2:0 |
| Audio | AAC, up to 48 kHz, 128 kbps |
| Frame rate | 23 to 60 fps |
| Width | Up to 1920 pixels |
| Aspect ratio | 0.01:1 to 10:1, with 9:16 recommended |
| Bitrate | Up to 25 Mbps (VBR) |
| Length | 3 seconds to 15 minutes |
| File size | Up to 300 MB |
| Caption | Up to 2,200 characters, 30 hashtags and 20 @mentions |
The container rule is easy to miss: many encoders write the moov atom at the end of an MP4, which the spec above doesn't allow. Re-muxing with "faststart" (for example ffmpeg -movflags +faststart) fixes it without re-encoding. For the other networks' shapes, see our aspect ratio guide.
The daily limit: 100 or 50?
The content publishing page says an account can publish 100 posts through the API in a rolling 24 hours. Its carousel section still says 50. A carousel counts as one post either way.
Don't guess. Call GET /<IG_ID>/content_publishing_limit to read the account's current usage and quota, and build your scheduler to stop at 50 unless the endpoint says otherwise.
There is no native scheduling
The API publishes when you call media_publish. There is no "publish at" field. A scheduler has to keep the video and the caption and call the API at the chosen time. Remember that a container expires after 24 hours, so create it close to the publishing time, not when the user schedules the post.
App Review: from your accounts to everyone's
Out of the box, your app has Standard Access. It works only for accounts of people who have a role on the app, which is enough for development and for posting to your own accounts.
To publish for anyone else, you need Advanced Access for the publishing permission. According to Meta's access levels and App Review submission guide, that takes:
- Business Verification of the business that owns the app.
- App Review of each permission, with:
- at least one successful call to each permission in the last 30 days;
- a separate, specific description of how you use each permission;
- a screencast per permission, showing the login and the feature in use, with the app's interface in English where possible (or captions if it isn't);
- instructions so reviewers can test it.
- Switching the app to Live mode after approval.
Meta says decisions usually come within about a week of submission. Business Verification has no stated timeline.
Where Reelspan stands
Reelspan publishes Reels, posts and carousels through this API. As of 6 November 2026, our Meta app has not yet been through Business Verification and App Review, so Instagram, Facebook and Threads publishing currently works only for accounts with a role on our app, the same limit described above. We'll update this page when that changes. The API reference documents the Instagram options Reelspan accepts. If you are publishing the same video to several networks, our guide to posting one video to every platform covers what to change for each.
Questions people ask
Can the Instagram API post Reels to a personal account?
No. Content publishing works only for Instagram professional accounts, meaning Business or Creator accounts.
How many posts can the Instagram API publish per day?
Meta's content publishing page gives 100 API-published posts per account in a rolling 24 hours, but its carousel section still says 50. Check the live figure with the content_publishing_limit endpoint and plan for 50 to be safe.
Can I schedule Instagram Reels through the API?
Not natively. The API publishes when you call media_publish, so scheduling has to happen in your own system.
Sources
- Instagram Platform overview, Meta for Developers. Checked 6 Nov 2026.
- Content publishing, Meta for Developers. Checked 6 Nov 2026.
- IG User media reference, Meta for Developers. Checked 6 Nov 2026.
- Business Login for Instagram, Meta for Developers. Checked 6 Nov 2026.
- Access levels, Meta for Developers. Checked 6 Nov 2026.
- App Review submission guide, Meta for Developers. Checked 6 Nov 2026.


