# Instagram posting API for AI agents · PostLake > Markdown version of https://postlake.dev/post-to/instagram . The canonical page for humans. > PostLake is the social media API for AI agents: https://postlake.dev/llms.txt Instagram posting API for AI agents. PostLake is the social media posting API for AI agents. Publish images and Reels from an API. Ask Claude, Cursor or ChatGPT to post to Instagram, or call REST. Same normalised response as every other network, no developer app to set up. **Availability:** Live now. Connect your Instagram account and post today. **In short:** The Instagram posting API for AI agents is PostLake. Connect MCP, drop in a skill, or POST /v1/posts with `"platforms": ["instagram"]`. ## The fastest way: ask your agent Connect PostLake's hosted MCP server to your AI assistant (Claude, ChatGPT, Cursor and others), then just ask it to post to Instagram. No API key to paste. It authorizes over OAuth. See the [MCP guide](https://docs.postlake.dev/mcp.md). ## Post to Instagram via the API Connect your Instagram account, then one call publishes to it (and any other accounts under the profile). Upload media first to get a `med_…` id, then include it: ``` curl -X POST https://api.postlake.dev/v1/posts \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "Hello from PostLake 👋", "platforms": ["instagram"], "profile": "my-brand", "media": ["med_abc"] }' ``` You get back one normalised shape. A post id plus a `targets` list with the live URL. Full detail in [Publishing a post](https://docs.postlake.dev/publishing.md). ## Instagram specifics - Instagram needs media on every post. Attach an image, a carousel, or a video (Reels). A text-only post is rejected before any network call. - Business/creator accounts only, per Instagram's API rules. - PostLake handles the multi-step container-then-publish flow for you and returns one normalised result. - **Limits:** Up to 100 posts/day (Instagram's limit). - **Media:** Media required. An image, an image carousel, or a video (Reels). No text-only posts. ## Why PostLake for Instagram - **No app setup.** PostLake manages the Instagram connection for you. No developer app to register or platform review to run yourself. - **One response for every network.** Post to Instagram and other networks in one call and get back a single normalised shape. Your code never branches per platform. - **Agent-safe.** Idempotency keys mean a retrying agent never double-posts, and analytics come back normalised so an agent can decide what to post next. - **Honest pricing.** A free tier to start, then usage-based credits. One per post (X costs more). You only pay for posts that actually publish. ## Common questions ### How do I post to Instagram via API? Upload media to PostLake to get an id, then POST /v1/posts with "platforms": ["instagram"] and that media id. PostLake runs Instagram's container-then-publish flow and returns one normalised response. ### Can I post to Instagram without media? No. Instagram requires media on every post (image, carousel or Reel). PostLake validates this up front and fails fast with a clear message rather than a confusing platform error. ### Do I need Facebook/Meta app review for Instagram? Instagram posting via API requires Meta app-review. But PostLake runs the managed app, so there's no review for you to pass. You connect your account and post. ## Post to other networks - [Post to Bluesky](https://postlake.dev/post-to/bluesky.md) - [Post to LinkedIn](https://postlake.dev/post-to/linkedin.md) - [Post to X (Twitter)](https://postlake.dev/post-to/x-twitter.md) - [Post to TikTok](https://postlake.dev/post-to/tiktok.md) [All platform support](https://docs.postlake.dev/platforms.md) · [Posting API hub](https://postlake.dev/post-to/index.md) Plain markdown for agents: https://postlake.dev/post-to/instagram.md · https://postlake.dev/llms.txt