instagram_content_publish via App Review. Publishing is a two-step container flow. PostWire abstracts all of it into one REST or MCP call.
Last updated June 2026 · PostWire (postwire.io)
Instagram has no casual posting API. The only sanctioned path is the Instagram Graph API, and Meta gates it heavily. Before a single photo goes out programmatically, you have to clear every one of these:
instagram_content_publish (and instagram_basic) permissions. Until your app is approved and out of Development Mode, only test users can publish.Even once approved, publishing isn't a single call. The Graph API uses a container model: first you create a media container that references your image or video URL, then you publish that container by its ID. Videos and Reels add an asynchronous processing step you have to poll before publishing. Rate limits cap you at 50 published posts per 24 hours per account.
PostWire is the social media posting API built for AI agents. Instead of standing up your own Meta app, surviving App Review, and writing the container two-step, you call one endpoint with a brand and a list of platforms. PostWire holds the approved Meta app, manages the OAuth tokens, runs the create-then-publish flow, and polls video processing for you.
| Task | Raw Instagram Graph API | PostWire |
|---|---|---|
| Meta app + App Review | You build & submit | Handled |
| OAuth / token refresh | Your code | Handled |
| Create container → publish | Two calls + polling | One call |
| Multi-platform in one call | No | Yes |
| Native MCP for AI agents | No | Yes |
To be straight with you: as of June 2026, PostWire's Instagram support is in platform review — along with TikTok, YouTube, X and LinkedIn. Live and posting today are Bluesky, Telegram, Mastodon and Discord. The point of the review process is exactly the App Review gauntlet described above; we go through it once so you never have to. The REST and MCP calls below are the final shape — write them now against the live platforms, and Instagram lights up the moment review clears, with no code change on your end.
One request posts to one or more platforms for a brand. Once Instagram is live, adding "instagram" to platforms is all it takes:
curl -X POST https://postwire.io/api/v1/post \
-H "Authorization: Bearer $POSTWIRE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"brand": "acme",
"platforms": ["instagram", "bluesky"],
"text": "Launch day. New build is live.",
"media": ["https://cdn.acme.com/launch.jpg"]
}'
No media container, no token refresh, no App Review — PostWire runs the create-then-publish flow against the Graph API for you.
PostWire ships a first-class MCP server — not docs, an actual server your agent can call. Add it to your MCP client config and the agent gets a real post tool:
{
"mcpServers": {
"postwire": {
"url": "https://postwire.io/mcp",
"headers": { "Authorization": "Bearer $POSTWIRE_API_KEY" }
}
}
}
Then the agent simply calls the tool:
postwire.post({
"brand": "acme",
"platforms": ["instagram", "discord"],
"text": "Ship log: v2.1 is out.",
"media": ["https://cdn.acme.com/ship.jpg"]
})
PostWire charges per brand, not per locked-down enterprise seat. The Agency tier alone undercuts the competition by a wide margin.
| Plan | Price / mo | Brands |
|---|---|---|
| Free | $0 | 1 brand · 30 posts |
| Starter | $9 | Solo |
| Pro | $29 | Growing |
| Agency | $99 | 50 brands |
| Scale | $299 | High volume |
For 50 brands, PostWire's Agency plan is $99 versus roughly $779 on Ayrshare — and Ayrshare's MCP is docs-only, meaning it can't actually post. See the full PostWire vs Ayrshare breakdown.
instagram_content_publish permission. PostWire abstracts all of this behind one REST/MCP call.instagram_content_publish permission through Meta App Review. Publishing is a two-step process: create a media container, then publish it.post tool with the brand and platforms. No OAuth dance, no media-container two-step, no App Review for each agent — PostWire holds the approved Meta app and tokens.