Instagram does not publish a fixed number of API posts per day in the Creator OS docs, so the safe way to plan Instagram publishing is to schedule posts, validate them first and read back what actually went out. Creator OS applies each platform’s rules at post time and reports what failed instead of dropping it silently.
Plan, validate, publish, read back
calendar.json -> bulk-upload --dryRun
|
v
fix what it flags
|
v
posts:create --scheduledAt ... --timezone ...
|
v
posts:list --status published --from ... --to ...
|
v
read analytics:posts, adjust the next batch
Instagram Graph API posting limits: what you can plan for and what you cannot
Plan for spacing and validation, not for a number you memorized from a forum post.
Instagram’s own publishing rules apply when you post, and Creator OS enforces them at post time. That means a post that breaks a platform rule comes back with the reason named, in one error shape: { error: { code, message, status } }. What you will not find in our docs is a hard per-day post count, because we do not publish one. Treat any specific daily cap you read elsewhere as unverified until you confirm it against Instagram’s current documentation, then build a margin into your calendar.
- What Creator OS handles for you: Reels, feed images, carousels and Stories as distinct post types, each with its own settings. The post options docs list them.
- What you should design for: retries that could double publish, batches that all land in one hour, and agents that republish after a failure.
- What you should never assume: that more API keys, another tool or a proxy changes what Instagram allows on one account.
Why automated Instagram posting fails in bursts
A burst fails because every item competes for the same account at the same moment, and platform rules are checked per publish.
Instagram is built around individual accounts. If your workflow assumes it can push 40 things at once, you find out item by item. That is a design input, not an error to retry through: a rejected publish does not free anything early, and every retry costs time without changing the outcome. Creator OS surfaces the reason inside its standard error envelope, so you can tell a platform refusal apart from a bad media URL. If a post names platforms that are not connected, they come back in missing_platforms and the rest still go out. Request and error shapes are in the posts API reference, and the developer overview covers what the Graph API does and does not let you do.
How to count what you publish across feed posts, Reels and Stories
Count every API publish as one slot and keep your own running total, because there is no endpoint that returns a remaining count.
| What you publish via the API | Count it | Notes |
|---|---|---|
| Feed image or video | 1 slot | A carousel of several images is still one post |
| Reel | 1 slot | Trial Reels publish as a Reel |
| Story | 1 slot | Stories use contentType story |
| Comment reply, hide, like | Not a publish | Engagement calls, separate from posting |
| DM send | Not a publish | Messaging, not posting |
| Reading analytics | Not a publish | Reads only |
Two details trip people up. A post that fails validation and is then corrected counts once, on the successful publish. And a Trial Reel shared to followers later from the Instagram app is not an API publish; Instagram exposes no field telling you whether or when a Trial Reel graduated, so an agent cannot count it and should not try. The Trial Reels API walkthrough covers the field values and the follower threshold.
What a failed Instagram publish looks like in Creator OS
You get the Creator OS error envelope with a code, a message and a status, and nothing is published.
POST /v1/posts
{
"content": "New Reel is live",
"platforms": ["instagram"],
"media": ["https://cdn.example.com/reel-26.mp4"],
"post_type": "short_video"
}
HTTP error
{
"error": {
"code": "...",
"message": "...",
"status": ...
}
}
The message is the useful part. Read it, fix the cause, and reschedule into a later window rather than retrying into the same refusal. To see what was refused in the first place, run creatoros posts:list --status failed. To see what actually went out, run creatoros posts:list --status published --from <ISO> --to <ISO>.
Instagram publishing vs Threads and TikTok rules
Each network has its own publishing rules, so a workflow tuned for one does not transfer unchanged to another.
| Network | What the docs state | What to design around |
|---|---|---|
| Reels, feed images, carousels and Stories; Business or Creator account required | Per-publish rule checks; no stated daily cap in our docs | |
| Threads | 500 characters per post, 250 posts per 24 hours | A volume ceiling you can plan against |
| TikTok | Privacy, comment, duet and stitch flags required | Consent fields must be filled on every post |
The takeaway is not that one network is better. It is that the same copy sent to all three needs different handling per leg, and Instagram is the leg where spacing and validation matter most. The Threads API guide has the Threads numbers in context.
How to batch Instagram content without breaking rules
Batch into a calendar file, dry run it, then publish on a schedule instead of in one burst.
creatoros posts:bulk-upload --file calendar.json --dryRun
creatoros validate:post-length --text "Caption for Reel 26"
creatoros posts:create --text "Reel 26" \
--platforms instagram \
--media https://cdn.example.com/reel-26.mp4 \
--scheduledAt 2026-06-02T18:00:00Z --timezone America/Toronto
posts:bulk-upload --dryRun checks the file without publishing anything. Run it first, read what it flags, fix the calendar, then run it without the flag. posts:create with --scheduledAt and --timezone hands the spacing to the scheduler, so a week of posts spread across days is fine and a week at once is not.
A workable pattern for one account:
- Draft everything into one file with the platform and the exact local time for each item.
- Dry run. Fix anything that fails validation before a slot is spent.
- Leave headroom in each day for retries and corrections.
- Read back what published before adding more, using
creatoros posts:list --status publishedwith a date filter.
If you would rather an AI app drive this, the hosted MCP server exposes create_post and list_posts directly, so a Claude or ChatGPT session can stage the week and read back what published. Setup steps are in the MCP docs, and the MCP posting walkthrough shows the one-call version across Instagram and TikTok.
Does an API proxy or an extra API key raise the limit
No. A proxy, a wrapper, a different SDK or an extra API key all sit in front of the same Instagram account.
- Extra keys do nothing for volume. Creator OS API keys are pinned to one workspace and are for scoping access. A read-only key cannot write at all.
- Multiple connections do not stack. Connecting the same Instagram account twice does not give you more room.
- Separate accounts stay separate. Each Instagram account in a workspace is its own account with its own history.
- Retries do not help. A rejected publish does not free anything early. Wait, or move the post to another day.
Where the tooling does help is visibility. creatoros accounts:health and creatoros accounts:list show what is connected, and creatoros posts:list --status failed shows what was refused so you can reschedule it instead of retrying into the same wall.
FAQ
What is the Instagram Graph API posting limit per day?
Our docs do not publish a fixed per-day number, so verify any specific cap against Instagram’s current documentation before you design a calendar around it. What Creator OS does confirm is that each platform’s rules are applied per publish at post time. Build a margin into your schedule rather than filling a day to the edge.
How do I check how many Instagram posts I have left today?
There is no endpoint that returns a remaining count. Track your own publishes in a rolling window, or read back what published with creatoros posts:list --status published filtered by date. If a publish is refused, move it to a later day instead of retrying immediately.
Does the limit reset every 24 hours or at midnight?
Design as though it is rolling, not a midnight reset: assume each publish frees its room a full day later. A burst late at night then keeps that time blocked through the next evening. Spacing posts across days avoids the question entirely.
Can I post more by adding API keys or a proxy?
No. Extra keys, another tool or a proxy sit in front of the same Instagram account. If you genuinely need more publishing volume, split it across more Instagram accounts, each connected separately with its own key.
Are Reels and Stories counted separately from feed posts?
Our docs do not describe separate Reel or Story buckets, so count every API publish as one and keep your own running total. That is the safe assumption for planning. Creator OS still applies each post type’s own settings when it publishes.
Get started
Creator OS schedules Instagram, TikTok, YouTube, X, Threads, Facebook, LinkedIn, Reddit, Discord and Slack from one queue, applies each platform’s publishing rules at post time, and gives you the CLI and a hosted MCP server so an agent can stage the week and read back results. The API, MCP server and CLI are included in every plan. Creator OS plans start at $14.99/month for 11 platforms plus Skool, with the API, the MCP server and the CLI included.
Create an account at https://www.creatoros.ca/sign-up, then read the CLI docs for bulk upload and scheduling. If you would rather watch it happen first, the walkthroughs are on the KevBuildsApps YouTube channel, and the launch video shows the whole loop.
Get started for $0
Free trial for new subscribers. Cancel anytime.