How to post to Instagram from Claude Code

To post to Instagram from Claude Code, run claude mcp add --transport http postwire https://postwire.io/api/mcp, sign in with your email, connect your Instagram Business or Creator account once, and ask "post ./launch/demo.mp4 to Instagram as a Reel with a caption from CHANGELOG.md". Claude Code writes the caption with generate_posts, shows it to you, and publishes with post_to_social or queues with schedule_post: one photo is a feed post, one video is a Reel, and 2 to 10 photos and videos are a carousel. PostWire posts through Meta's official Instagram API with its own approved app, so you need no Meta developer app. The free plan includes Instagram: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card.

The same works without the MCP server: PostWire's schedule-posts skill calls the REST API with your key. PNG screenshots and AI-generated images work as they are: PostWire converts them to the JPEG Instagram's API takes.

Updated . Written from PostWire's own code; vendor prices read on Oct 19, 2026. Live networks: TikTok, Instagram, YouTube, LinkedIn (personal profiles), Facebook Pages, Bluesky, Mastodon, Telegram, Discord, and X on paid plans.

Set it up and post, step by step

Prompt to copy once Instagram is connected: Upload ./launch/slide-1.png, slide-2.png and demo.mp4, write an Instagram caption for the v2.4 launch from CHANGELOG.md, show it to me, and schedule the carousel for Tuesday at 6pm.

  1. Add PostWire to Claude Code

    In your terminal run claude mcp add --transport http postwire https://postwire.io/api/mcp (add --scope user to have it in every project), then type /mcp in Claude Code and pick postwire to sign in. The sign-in asks for your email and a 6-digit code, which also creates a free PostWire account if you have none: no password and no card.

  2. Or install the skill instead

    npx skills add https://postwire.io --skill schedule-posts adds PostWire's scheduling skill to Claude Code (and to the other agents on the machine). It uses your key from the environment: copy it in the dashboard under API & MCP and set POSTWIRE_API_KEY. The skill is a plain file you can read first: schedule-posts/SKILL.md.

  3. Connect Instagram

    Ask "connect my Instagram". Claude Code calls create_connect_link and prints a one-hour link; open it and choose Log in with Instagram (no Facebook Page needed) or connect through a Facebook Page you manage. Instagram's API publishes only from Business or Creator accounts — switching a personal account is free, in the Instagram app's settings. PostWire never sees your password.

  4. Give the post a photo or a video

    Instagram refuses text-only posts. A file on your computer goes through an upload page: ask for one (create_upload_link), pick the file there, and Claude Code gets its link. One file can be up to 100 MB on the free plan and 1 GB on paid plans. A public https link works too, as photo_url or video_url, or a list in media for a carousel.

  5. Ask for the caption

    "Write the Instagram caption for the launch." generate_posts returns a draft and publishes nothing: the hook in the first line, a short caption, at most 5 hashtags at the end, within Instagram's 2,200 characters. Ask for the TikTok or LinkedIn version in the same sentence and each comes back written for its own network.

  6. Post now, or schedule it

    Say "post it" and Claude Code calls post_to_social. Say "schedule it for Tuesday at 6pm" and it calls schedule_post, up to 365 days ahead, or with run_at: "next_slot" for your next free posting hour. Two or more items in media make a carousel; Instagram crops every slide to the first one's shape. This is the call:

    {
      "name": "schedule_post",
      "arguments": {
        "platforms": ["instagram"],
        "per_platform": { "instagram": {
          "text": "v2.4 is here 🚀 Dark mode, 2x faster sync, 14 fixes. Swipe for the demo 👉 #buildinpublic #saas"
        } },
        "media": [
          { "url": "https://postwire.io/m/…/slide-1.png", "type": "image" },
          { "url": "https://postwire.io/m/…/slide-2.png", "type": "image" },
          { "url": "https://postwire.io/m/…/demo.mp4",    "type": "video" }
        ],
        "run_at": "2026-10-20T18:00:00-05:00"
      }
    }
  7. Check that it went out

    Instagram processes a video before it can be published. If that takes longer than the call can wait, the result says processing and PostWire publishes it on its own a few minutes later; get_post_status or list_scheduled_posts shows when it is live.

Stories and trial reels are set through the REST API today: POST /api/post with "options": {"instagram": {"post_type": "story"}} for a Story (Instagram's API takes no caption on Stories), or {"trial_reel": true} to show a Reel first to people who don't follow you. "What's scheduled on Instagram?" calls list_scheduled_posts. Prefer to set it up by hand first? Open the dashboard, connect the account under Accounts and copy your key under API & MCP.

Ways to post to Instagram from Claude Code, side by side

How each service plugs into Claude Code and reaches Instagram, and what it costs to start, read on its own Claude Code and pricing pages on Oct 19, 2026.

ServiceHow it plugs into Claude CodeWhat it posts to InstagramInstagram on the free startCheapest paid plan
PostWireclaude mcp add with https://postwire.io/api/mcp, or the schedule-posts skillPhotos, Reels, carousels of 2-10 mixed items; Stories and trial reels through RESTYes — free plan: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card$9/mo — 3 businesses, every network in each post
Postizclaude mcp add with mcp.postiz.com/mcp-oauth-dynamic, or the Postiz skillFeed posts and Stories, trial reels7-day free trial$29/mo — 5 channels
Upload-Postnpx skills add Upload-Post/upload-post-skillReels, photos, carousels of up to 10, StoriesFree plan of 10 uploads a month$24/mo — 5 profiles

Checked on Oct 19, 2026 (2026-10-19) on each vendor's own pricing or docs page, linked in the first column and below. Monthly billing in USD unless noted. "Not listed" means we could not find it on their page, not that it is missing.

Where PostWire is ahead

  • A free plan with no time limit: 10 posts a month, no card. Postiz starts with a 7-day trial.
  • The cheapest paid plan here: $9 a month for 3 businesses. Upload-Post $24, Postiz $29.
  • The caption is written for Instagram: generate_posts writes a hook-first caption with at most 5 hashtags and, from the same launch, the TikTok caption and the YouTube title in one call.
  • PNG straight from a screenshot or an image model works: PostWire converts it to the JPEG Instagram requires.
  • A slow video does not fail the post: when Instagram is still processing a Reel, PostWire publishes it on its own once it is ready.
  • A person approves what Claude Code queued: on paid plans, approval rules hold the post until you approve it from an emailed link.
Sources, all read on Oct 19, 2026:
  • Postiz — Post to Instagram from Claude Code (same commands; post_type "post" or "story", trial reels; "Every Instagram post needs an image or video"): postiz.com/claude-code/instagram
  • Postiz pricing ("Start with a 7-day free trial"; Standard $29 a month, 5 channels): postiz.com/pricing
  • Upload-Post — Claude Code + Instagram (npx skills add Upload-Post/upload-post-skill; Reels, photos, carousels of up to 10 items, Stories): www.upload-post.com/skills/claude-code/instagram/
  • Upload-Post plans (llms-full.txt: Free 10 uploads a month, "no credit card required", free-plan platforms include Instagram and Facebook; Basic $24 a month, 5 profiles): www.upload-post.com/llms-full.txt

Why post to Instagram from Claude Code

  • The files are already on your machine: the demo video your build rendered, the screenshots in ./launch, the release notes. Claude Code uploads them, writes the caption from what shipped and posts the carousel, without moving files to your phone.
  • One launch, every network: "post the demo to Instagram and TikTok" sends one request with a caption written for each. On the free plan one post reaches 2 networks; paid plans (from $9 a month) add YouTube Shorts, LinkedIn and the rest in the same request.
  • From a script: claude -p "post the newest video in ./out to Instagram as a Reel with a caption from NOTES.md" --allowedTools "mcp__postwire__*" runs it without a chat. Without Claude Code, the same post is POST /api/post with {"platforms": ["instagram"], "video_url": "…", "text": "…"} and your key.
  • A person can have the last word: on paid plans, a brand's approval rules hold what Claude Code queues until you approve it from an emailed link.

Source: PostWire's MCP server, Instagram integration and plans, read Oct 19, 2026.

Instagram's rules Claude Code works within

  • Business or Creator accounts: personal accounts cannot publish through Instagram's API.
  • Every post needs a photo or a video: one photo is a feed post, one video a Reel, 2 to 10 items (photos, videos or a mix) a carousel.
  • JPEG only, for Meta: PostWire converts PNG, WebP and other still images to JPEG when it publishes, so screenshots and AI-generated images work as they are.
  • Captions up to 2,200 characters; Stories carry no caption through the API.
  • Videos are processed first: Instagram needs a moment before a Reel can go live, and PostWire finishes the publish on its own when it is ready.

More on the API itself: Does Instagram have an API?

What it does not do

PostWire publishes, schedules and reports how your own posts did (get_post_performance ranks your Instagram posts from the likes and comments Instagram reports). It does not read or answer comments or DMs, it does not post a first comment on Instagram, and it does not tag people, products or a location. Stories and trial reels are a REST option today, not a field of the MCP tools.

Questions people ask

Can Claude Code post to Instagram?

Yes, with an MCP server or a skill. Claude Code has no Instagram access of its own; with PostWire added (claude mcp add --transport http postwire https://postwire.io/api/mcp) and your Business or Creator account connected once, it writes the caption and publishes or schedules photos, Reels and carousels when you ask.

Do I need a Facebook Page or a Meta developer app?

No developer app: you connect to PostWire's approved Meta app. No Facebook Page either if you choose Log in with Instagram; the account must be a Business or Creator account.

Can Claude Code post a Reel or a carousel?

Yes. One video is a Reel, and 2 to 10 photos and videos in media are a carousel; Instagram crops every slide to the first one's shape. Stories and trial reels are set through the REST API (options.instagram.post_type "story", or trial_reel true).

How does Claude Code get a video from my computer to Instagram?

Instagram fetches media from a link, so Claude Code asks for an upload page with create_upload_link; you pick the file there and Claude Code gets its link for the post. A file that is already online goes as its public https link.

Can I post a PNG screenshot?

Yes. Instagram's API takes JPEG only, so PostWire converts PNG, WebP and other still images to JPEG when it publishes. AI-generated images and screenshots work as they are.

Can Claude Code schedule Instagram posts?

Yes. It calls schedule_post with a time up to 365 days ahead, or "next_slot" for your next free posting hour, and PostWire publishes it at that time with Claude Code closed. The free plan keeps 3 posts waiting at once; paid plans have no such limit.

How much does it cost?

The free plan includes Instagram, the MCP server and the skill: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card. Starter is $9 a month for 3 businesses and Pro $29 for 10, with every network in each post; paid plans have a 14-day refund.