Tutorial · Instagram automation, DMs and comment-to-DM

How to automate Instagram posts (with an AI agent, step by step)

By Antoine Blanco··8 min read

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:

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

  1. POST /<IG_ID>/media with image_url and caption. For a reel, media_type=REELS and video_url. Meta answers with a container ID.
  2. GET /<container_id>?fields=status_code until it reads FINISHED. The other values are IN_PROGRESS, ERROR, EXPIRED and PUBLISHED. Meta recommends checking once per minute, for no more than 5 minutes.
  3. POST /<IG_ID>/media_publish with creation_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

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.

AB
Antoine BlancoFounder of PlugKit. Runs his own Instagram, YouTube and X accounts through the API and MCP server described here.

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 →
English ▾