Instagram API proxy: what it is, what it handles, and how to post through one

An Instagram API proxy is a hosted API that sits between your code and Meta's Instagram Graph API: it owns the approved Meta app, keeps and renews the account tokens, converts media to what Instagram accepts and runs Meta's container-then-publish flow, so your side is one HTTPS request. PostWire is one: POST /api/post with platforms: ["instagram"], a photo_url or video_url and the caption, and the proxy does the rest, on the free plan (1 business, 10 posts a month, 2 networks per post, no card). It is not a network proxy for scraping Instagram or for automating likes and follows: it publishes to an Instagram professional (Business or Creator) account you connect, through Meta's official API, and nothing else.

Posting to Instagram directly means a Meta developer app, App Review for the publishing permission, long-lived tokens to renew, JPEG-only images, a two-step publish and a rate limit to watch. A proxy takes those on once, for every account you connect. Here is what that means in practice, and the request it leaves you with.

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

Post to Instagram through the proxy, step by step

Five minutes, no Meta developer account. The example is cURL; the same JSON works from any language, n8n, Make or an AI agent.

  1. Create a free PostWire account

    Open the dashboard and sign in with your email: a 6-digit code, no password, no card. The free plan is 1 business, 10 posts a month, 2 networks per post, no card, with the REST API and the MCP server in it.

  2. Connect the Instagram account

    Accounts → Connect on Instagram. Choose Log in with Instagram (works with any Business or Creator account, no Facebook Page) or Through a Facebook Page you manage. The account must be a professional one (Business or Creator): Meta's API does not publish to personal accounts. PostWire stores the long-lived token Meta returns and renews it; you never handle a token yourself.

  3. Copy your API key

    Under API & MCP press Create key. The key is shown once; it is sent as Authorization: Bearer. The free plan allows 60 requests a minute and 2 publishes at once.

  4. Send one request

    A photo with a caption. Any public https link to a JPEG, PNG, WebP or AVIF works: PostWire converts what Instagram will not take to JPEG before Meta fetches it.

    curl -X POST https://postwire.io/api/post \
      -H "Authorization: Bearer $POSTWIRE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "platforms": ["instagram"],
        "photo_url": "https://cdn.example.com/launch.png",
        "text": "New colour, same price. Link in bio. #launch"
      }'
  5. A Reel, a Story or a carousel

    Send video_url instead of photo_url and Instagram gets a Reel (MP4 or MOV, H.264 video and AAC audio, 3 to 90 seconds, 9:16). options.instagram.post_type takes feed, reels or story, and trial_reel: true publishes a trial Reel (shown to non-followers first) when the account can use them. photo_urls with 2 to 10 links makes a carousel. The network options page lists every field.

  6. Read the result, and the status

    The response carries the Instagram media id and, once Meta has it, the public link. A video Instagram is still transcoding comes back as processing: PostWire finishes the publish on its own when Instagram is ready, and GET /api/post/status?platform=instagram&id=<id> tells you when it went out, and a webhook can tell your server the same (see the webhooks guide).

Rather let an AI agent send the request? The same proxy is an MCP server at https://postwire.io/api/mcp: post_to_social with platforms: ["instagram"] does the call above. Step by step: Instagram MCP server.

Hosted Instagram APIs, side by side

Three services that stand in front of Meta's API for you, with what each costs to start, read on its own pricing page on Oct 22, 2026.

ServiceFree to startCheapest paid planWhat it metersInstagram on the free planWrites the caption
PostWireFree plan: 1 business, 10 posts a month, 2 networks per post, no card$9/mo — 3 businesses, every network in eachA business (one brand, all its networks)YesYes — generate_posts writes the Instagram caption and each other network's post from one idea
AyrshareNo free plan; a 28-day trial on Launch$149/mo — 1 social profileA social profile (one customer with its networks)No free planNot listed on its pricing page
Upload-PostFree plan: 2 profiles, 10 uploads a month$24/mo — 5 profilesA profile (one account per platform)YesNot listed

Checked on Oct 22, 2026 (2026-10-22) 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

  • The caption is written for Instagram, and each other network gets its own post, in one request.
  • 10 posts a month free, with the API and the MCP server, no card and no time limit. Ayrshare's first plan is $149 a month; Upload-Post's free plan has 10 uploads a month.
  • Priced per business: 10 businesses on every network are $29 a month. Ayrshare Launch is $299 for 10 social profiles.
  • Images converted to JPEG for you and a video publish that finishes on PostWire's side while Instagram transcodes.
  • The same proxy for AI agents: an MCP server with OAuth sign-in or an API key, in Claude's connector directory.
Sources, all read on Oct 22, 2026:

What the Instagram API proxy handles, and what you would do yourself

Meta's rules for API publishing, read on its Content Publishing page on Oct 22, 2026, next to what PostWire does with each one.

Meta's ruleStraight on the Graph APIThrough PostWire
Publishing needs a Meta app with the publishing permission, approved in App ReviewYour own app, a privacy policy, a screencast and a review that can take weeksPostWire's app is the approved one; you authorise it once
Only professional accounts (Business or Creator) can publishSameSame: the connect screen refuses a personal account
Tokens expire; long-lived ones must be exchanged and renewedYou store them and run the exchangeStored and renewed by PostWire; a key per workspace is all you hold
"JPEG is the only image format supported"Convert before you uploadPNG, WebP and AVIF are converted to JPEG before Meta fetches them; a JPEG link passes through untouched
A media object needs a container first, then /media_publishTwo calls, and a poll on the container's status for videoOne request; the publish finishes on PostWire's side when Instagram is done transcoding
Carousels: up to 20 items on the Graph APIOne container per item, then the carousel containerphoto_urls with up to 10 images or MP4 videos
100 API-published posts per account in a 24-hour moving period (content_publishing_limit)You countPlans sit under it: 10 posts a month on Free, 20 a day; 1,000 a month on Starter, 200 a day
Caption limits: hashtags, @mentions and lengthMeta refuses the postA caption Instagram refused as too long is retried at 20 hashtags, 20 @mentions and 2,000 characters, cut at a sentence

Sources: Meta's Content Publishing documentation and PostWire's Instagram publisher (src/platforms/meta.js), both read Oct 22, 2026.

What Instagram accepts through the proxy

  • Images: JPEG up to 8 MB. Send a PNG, WebP or AVIF and PostWire converts it to JPEG first.
  • Video (Reels): MP4 or MOV, H.264 video, AAC audio, 3 to 90 seconds, 9:16. Up to 100 MB on the free plan and 1 GB on paid plans through PostWire's upload links.
  • Stories: a photo or a video with options.instagram.post_type: "story".
  • Carousels: 2 to 10 items, images and videos mixed, with photo_urls; one caption for the whole carousel.
  • Text alone: no. Instagram needs an image or a video on every post; a text-only request to Instagram is refused before it reaches Meta.

The step most proxies leave to you: the caption

Ayrshare and Upload-Post publish the caption you send. PostWire's POST /api/generate (or the generate_posts MCP tool) turns one idea into a caption written for Instagram — hook first, hashtags at the end — and, in the same request, a TikTok hook, a YouTube title and tags and a LinkedIn post; the next call publishes them. With Instagram alone it is still one request: send text and the proxy posts it as is.

What an Instagram API proxy is not

  • Not an IP or residential proxy. Nothing here hides your traffic or automates a browser: PostWire talks to Meta's official Graph API with the permissions Meta approved.
  • Not a scraper or a growth bot. It does not read feeds, follow, like or comment, and it does not read or send DMs.
  • Not for personal accounts: Meta's API publishes only to professional accounts. Switching an account to Creator takes a minute in Instagram's settings.
  • Threads is not live on PostWire yet; Instagram, Facebook Pages, TikTok, YouTube, LinkedIn, Bluesky, Mastodon, Telegram, Discord and X (paid plans) are.

Questions people ask

What is an Instagram API proxy?

A hosted API that sits between your code and Meta's Instagram Graph API. It owns the Meta app that Meta approved for publishing, stores and renews each account's tokens, converts images to the JPEG Instagram requires, runs Meta's container-then-publish flow and watches the rate limit, so your side is one HTTPS request with the media link and the caption. It is not a network proxy for scraping or automation bots.

Do I need a Meta developer app or App Review to post through PostWire?

No. You authorise PostWire's approved Meta app once for the Instagram professional account you want to post to, and PostWire holds the token. Building it yourself means your own Meta app, the publishing permission approved in App Review, and token renewal.

Does the proxy work with a personal Instagram account?

A Business or Creator account, yes: personal accounts cannot post via the API. A Facebook Page, no: PostWire connects with Log in with Instagram, which needs no Page, or through a Facebook Page you manage.

What media can I post through the Instagram API proxy?

A JPEG, PNG, WebP or AVIF image (converted to JPEG when needed; up to 8 MB as JPEG), a Reel (MP4 or MOV, H.264 and AAC, 3 to 90 seconds, 9:16), a Story (photo or video) and a carousel of 2 to 10 items. Instagram does not take text-only posts.

How many posts a day can I publish to Instagram through the API?

Meta limits an Instagram account to 100 API-published posts in a 24-hour moving period (its Content Publishing page, Oct 22, 2026). PostWire's plans sit under that: the free plan is 10 posts a month, Starter 1,000 a month with 200 a day, Pro 10,000 a month.

Is an Instagram API proxy free?

PostWire's free plan includes Instagram, the REST API and the MCP server: 1 business, 10 posts a month, 2 networks per post, no card and no time limit. Upload-Post has a free plan with 2 profiles and 10 uploads a month; Ayrshare has no free plan and starts at $149 a month (both read Oct 22, 2026).

Can an AI agent use the proxy?

Yes. The same service is an MCP server at https://postwire.io/api/mcp with OAuth sign-in or an API key: post_to_social with platforms ["instagram"] publishes the post, schedule_post queues it, and get_post_status reads the result. It is listed in Claude's connector directory.