Creator OS
content schedulingdevelopersgraph apiinstagram apirate limits

Instagram Graph API Posting Limit: Why 25 a Day in 2026

The Instagram Graph API caps you at 25 posts per 24 hours per account. Here is why the limit exists, how it is counted, and how to batch without hitting errors.

Creator OS · October 27, 2026 · 7 min read

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
The loop that keeps automated Instagram publishing predictable.

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.

Get started for $0

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
Instagram 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:

  1. Draft everything into one file with the platform and the exact local time for each item.
  2. Dry run. Fix anything that fails validation before a slot is spent.
  3. Leave headroom in each day for retries and corrections.
  4. Read back what published before adding more, using creatoros posts:list --status published with 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.

Keep reading