How to automate Instagram posts (with an AI agent, step by step)
You can automate Instagram posts four ways: Instagram's own scheduler, a scheduling app, your own code on Meta's publishing API, or an AI agent that calls that API. Every route except the first needs a professional account, and Meta's guide caps API publishing at 100 posts per rolling 24 hours. Checked September 24, 2026.
What you need before you automate anything
A professional account. Meta's content publishing API only publishes to Instagram professional accounts, business or creator. Later's pricing page puts it plainly: auto publish works for Instagram business and creator accounts, and anything else gets a notification to post by hand. With Instagram Login you do not need a Facebook Page; with Facebook Login, the account must be linked to one.
Media Instagram can fetch. Meta's wording: "the media must be hosted on a publicly accessible server at the time of the attempt." A share link from Google Drive, Dropbox or WeTransfer serves a web page, not the file, and it fails at publish time, not when you schedule.
The right formats. From Meta's reference, read on September 24, 2026:
- Images: JPEG only, 8 MB max, aspect ratio between 4:5 and 1.91:1. No PNG, no MPO or JPS.
- Reels: MP4 or MOV, 3 seconds to 15 minutes, 300 MB max, 9:16 recommended.
- Carousels: up to 10 images or videos, counted as one post.
How to automate Instagram posts: the four routes
| Route | Where the schedule lives | Price, checked Sept 24, 2026 | Limit that applies | Best for |
|---|---|---|---|---|
| Instagram's own scheduler | No fee | Set by Instagram, see its help page | A few posts a week, no setup | |
| Buffer | Buffer's queue | $0 plan: 3 channels, 10 scheduled posts per channel. Essentials: $5 per channel a month, billed yearly | Meta's API quota | A few channels on a small budget |
| Later | Later's queue | Starter: $18.75 a month billed yearly, 8 profiles, 30 posts per profile | Meta's API quota | One brand, one profile per network |
| Your code on Meta's API | Your server | Meta's publishing docs list no fee; hosting and upkeep are yours | 100 posts per rolling 24 h per the guide, 50 on the reference page | One developer, one app |
| AI agent + PlugKit | PlugKit | $29 a month for 5 connected accounts, 7-day free trial | Same Meta quota, stories included | Posting as one step of a bigger job |
Prices come from buffer.com/pricing, later.com/pricing and plugkit.co. Buffer's $0 plan also includes one API key with 3,000 requests a month.
For a few posts a week, the native scheduler is enough; what it can queue, stories and music included, is in can you schedule Instagram stories, posts with music and reels. The rest of this page covers the three routes through Meta's API.
Instagram post automation through Meta's API
Meta's publishing API works in three calls. PlugKit runs them for you, and so does any scheduler that publishes automatically through the official API:
POST /<IG_ID>/mediawithimage_urlandcaption. For a reel,media_type=REELSandvideo_url. Meta answers with a container ID.GET /<container_id>?fields=status_codeuntil it readsFINISHED. The other values areIN_PROGRESS,ERROR,EXPIREDandPUBLISHED. Meta recommends checking once per minute, for no more than 5 minutes.POST /<IG_ID>/media_publishwithcreation_id. The post is live.
Three details decide whether it keeps working.
The schedule is yours to keep. The container parameters Meta documents include no publish date, and a container not published within 24 hours expires. You cannot prepare a week of containers on Monday. Something has to wake up at the right minute and run steps 1 to 3.
The quota is not the same on every page. The publishing guide says "Instagram accounts are limited to 100 API-published posts within a 24-hour moving period. Carousels count as a single post." The reference page of the content_publishing_limit endpoint still gives a quota_total of 50. Call that endpoint before a big batch and trust what it returns for your account.
Tokens expire. A long-lived token lasts 60 days and can be refreshed before it expires. A home-made scheduler that forgets the refresh stops publishing on day 61.
The full walkthrough, with a Python script, is in my Instagram API guide.
Step by step: automated Instagram posts from an AI agent
Here is the agent route with Claude Code. The agent never talks to Meta directly: it calls PlugKit's MCP tools, and PlugKit runs the container, the status check and the publish.
Step 1: connect the Instagram account. In the PlugKit dashboard, connect Instagram and log into the professional account. Publishing needs instagram_business_content_publish, one of the scopes listed in the PlugKit Instagram docs.
Step 2: add the MCP server to your agent. In Claude Code:
claude mcp add -t http plugkit https://api.plugkit.co/mcp
Then run /mcp, choose Authenticate, and approve on the PlugKit consent screen. You pick the scope: mcp:read hides every write tool, mcp:write allows publishing. I would start read-only for a few days.
Step 3: give it the media. A public JPEG URL works. Without one, list_media shows the files already in your library, and open_media_uploader puts a drop zone in the conversation when the agent has no shell.
Step 4: ask. One sentence is enough:
Schedule launch.jpg on my Instagram for Thursday 9:00 Paris time, caption "Launch day. Link in bio." Show me the post before you create it.
The agent turns that into a create_post call:
{
"profileId": "prof_…",
"accountIds": ["acc_instagram"],
"content": "Launch day. Link in bio.",
"mediaItems": [{ "type": "image", "url": "https://example.com/launch.jpg" }],
"scheduledFor": "2026-10-01T09:00:00",
"timezone": "Europe/Paris"
}
The server tells the model to show the exact content and wait for your approval before it publishes. PlugKit's own docs call that "a prompt, not a lock": the real guardrail is the scope you granted in step 2.
Step 5: let it pick the slots. get_best_times_to_post returns a weekday by hour engagement grid, built to feed scheduledFor. "Take the five photos in my library, write captions in my tone, and schedule one a day next week at my best hour" becomes five create_post calls. One post a day is far below the quota.
Step 6: check what happened. Each post returns one target per account with a status, then the platformPostUrl once live. If one target fails, the post comes back partial and publish_post retries only that target. Webhooks post.published, post.partial and post.failed notify your systems, and /mcp__plugkit__report sums it up in Claude Code.
Without an agent: the same post in one API call
If your schedule already lives in a spreadsheet or a CMS, skip the model and call the publishing endpoint directly:
curl -X POST https://api.plugkit.co/v1/posts \
-H "Authorization: Bearer sk_your_key" \
-H "Content-Type: application/json" \
-d '{
"profileId": "YOUR_PROFILE_ID",
"accountIds": ["INSTAGRAM_ACCOUNT_ID"],
"content": "Launch day. Link in bio.",
"mediaItems": [{ "type": "image", "url": "https://example.com/launch.jpg" }],
"scheduledFor": "2026-10-01T09:00:00",
"timezone": "Europe/Paris"
}'
A date without an offset is read in timezone; a date with an offset ignores it. Send a video and it becomes a reel: shareToFeed (on by default) also shows it in the feed, and trialReel shows it to non-followers only, on accounts with at least 1,000 followers. asStory: true sends it to the story instead: one JPEG up to 8 MB, or a 3 to 60 second video up to 100 MB, with no caption.
What breaks automated Instagram posts
- PNG files. Meta publishes JPEG only. Convert before you schedule.
- Share links. Drive, Dropbox and WeTransfer links fail at publish time.
- Your own code. Containers expire after 24 hours, tokens after 60 days.
- The quota. Stories count toward the same quota as feed posts.
- Deleting is not unpublishing.
delete_postcancels a schedule in PlugKit, and PlugKit's tools reference says an Instagram post cannot be unpublished once it is live. - Page Publishing Authorization. On Facebook Login setups, Meta blocks publishing to an account whose linked Page requires PPA until it is completed.
None of this is the automation that gets accounts flagged: that is bots that drive the app, follow, like or mass-DM. I wrote up the line in what Meta allows and what gets you flagged.
Which route I would pick
Three posts a week on one account: Instagram's own scheduler. A shared calendar for a few channels: Buffer or Later, compared with prices in Instagram automation tools. Posting as one step of a longer job, writing the caption, cross-posting to LinkedIn and X, answering the comments that follow: an agent.
That last case is what I built PlugKit for: $29 a month for 5 connected accounts, cancel anytime, with a 7-day free trial. More in the Instagram automation hub and the Instagram MCP server guide.
FAQ
Can you automate Instagram posts for free?
Yes, within limits. Instagram's own scheduler costs nothing, and Buffer's $0 plan connects 3 channels with 10 scheduled posts per channel. Meta's publishing docs list no fee for the API, but you host and maintain the code. PlugKit is $29 a month after a 7-day free trial.
Can I automate posts on a personal Instagram account?
Not through the API. Meta's publishing API only works with professional accounts, business or creator, and the Basic Display API that read personal accounts stopped working on December 4, 2024. Switching the account to professional in the app settings opens every route on this page.
Can ChatGPT or Claude post to Instagram automatically?
Not on their own: they need a tool connected to your account. With an MCP server such as PlugKit's added to Claude, ChatGPT, Cursor or VS Code, the assistant calls create_post with a date. PlugKit then publishes at that time, even with the chat closed.
How many Instagram posts can I automate per day?
Meta's publishing guide says 100 API-published posts per rolling 24 hours, with a carousel counting as one. The reference page of its quota endpoint still says 50, so call content_publishing_limit to see your account's number. Stories count toward the same quota.
Do automated Instagram posts get less reach?
Meta's publishing docs say nothing about API-published posts getting less reach than posts made in the app. I looked at what Instagram and TikTok actually say about ranking in do scheduled posts get less views.
One plug for every platform your agent touches
$29 a month for 5 connected accounts, cancel anytime. Every feature in every plan.
Get your API key →