Instagram API

Instagram posting API: feed, Reels, Stories, social media agents

Blotato's Instagram posting API publishes feed posts, carousels, Reels, and Stories with one HTTP request. No Meta app, no App Review, no container-then-publish flow.

Publishing is only the first half. The same key reads comments, answers DMs, runs reply-only DM automations, and pulls analytics.

REST
POST https://backend.blotato.com/v2/posts
Auth
blotato-api-key: YOUR_API_KEY
MCP
https://mcp.blotato.com/mcp

Updated September 2026. API access is included on every paid plan and excluded from the free trial.

What the Instagram posting API does in Blotato

POST /v2/posts with targetType instagram publishes now, or queues when you pass scheduledTime. A single image is a feed post. Two to ten media URLs make a carousel. A video defaults to a Reel, and mediaType story turns it into a Story.

Reels with the fields Instagram exposes

coverImageUrl, shareToFeed, audioName, and a trial object (graduationStrategy MANUAL or SS_PERFORMANCE) for Reels shown to non-followers first. collaborators takes up to three handles on single images and Reels, not on carousels.

First comment on publish

firstComment posts a comment of up to 2,200 characters right after the post publishes. Useful for links.

Comments and DMs from the same key

GET /comments lists comments on your posts and POST /comments replies. GET /conversations and POST /messages handle the inbox, on Instagram and Facebook only.

Reply-only DM automation

POST /dm-automations builds a keyword-triggered or comment-triggered auto-reply. Eight REST endpoints, with Meta's 7-day comment window and 24-hour DM window enforced for you.

What Instagram requires before the first call, and what comes off your list

Instagram only publishes through the API from a Business or Creator account linked to a Facebook Page. That is Meta's rule, it applies to every tool, and Blotato cannot route around it.

You skip the rest: registering a Meta app, App Review, the business verification screencast, and the create-a-container-then-publish second call. Blotato's Meta app is already reviewed, so you connect the account and post.

POST https://backend.blotato.com/v2/posts
{
  "post": {
    "accountId": "98432",
    "content": {
      "text": "Three prompts I run every Monday",
      "mediaUrls": ["https://cdn.example.com/reel.mp4"],
      "platform": "instagram"
    },
    "target": {
      "targetType": "instagram",
      "mediaType": "reel",
      "shareToFeed": true,
      "firstComment": "Full breakdown: https://example.com/monday"
    }
  }
}

Response: { "postSubmissionId": "uuid" }, a receipt. Poll GET /posts/:postSubmissionId for published or failed. Every field: help.blotato.com/api/llm. Instagram's own reference: the Instagram Platform docs.

Why Instagram builders pick Blotato over the Graph API directly

  • App Review is already done. Meta reviewed Blotato's app once. Your integration inherits that, and the App Review queue never touches your calendar.
  • Publishing is where most Instagram APIs stop. This one keeps going. Comments, the DM inbox, and reply-only automations sit behind the same key as the publish call, so an agent can post, watch the replies, and answer them without a second vendor.
  • The same request shape reaches eight more platforms. Change targetType and the target fields, and the same envelope, within each network's own limits, posts to the other eight platforms.

How to publish to Instagram through the API

  1. Connect a Business or Creator account. Sign in to Blotato and connect Instagram. The account has to be linked to a Facebook Page, which is where Meta enforces the rule.
  2. Generate an API key. From Settings, open the API tab and generate a key. That starts the paid Starter plan immediately, because the free trial does not include the API.
  3. Fetch the accountId. GET /users/me/accounts?platform=instagram returns the id you put in post.accountId.
  4. POST the post and poll. Send the request above, then poll GET /posts/:postSubmissionId. A scheduled post reports scheduled, so do not wait on published for one.

Running this from Claude instead of curl? The Instagram surface, comments and DMs included, is on the MCP server at https://mcp.blotato.com/mcp. Setup per client is on the Instagram MCP server page, and the walkthrough of posting to Instagram from Claude shows the prompt-to-post flow. A prompt like "Post this clip to Instagram as a Reel, share it to the feed, and put the link in the first comment." calls the same endpoint this page documents.

See every plan and its limits

Instagram posting limits, media rules, and what it costs

Blotato caps each Instagram account at 50 posts per 24 hours. Instagram's own documented limit is 100, so this cap is ours and it is deliberately stricter.

Instagram limitValue through Blotato
Blotato daily cap50 posts per account per 24 hours (Instagram documents 100)
Caption2,200 characters
Imagesup to 8 MB, 4:5 to 1.91:1, 320 to 1,440 pixels wide
VideoMP4 or MOV, up to 300 MB, 9:16; Reels up to 15 minutes, Stories up to 60 seconds
Carousel2 to 10 items
Off-spec videoconverted by Blotato only under 120 seconds

Meta charges nothing per call for the Graph API. What the review cycle costs in time, and what the Graph API offers that a wrapper never will, is in the Instagram API pricing breakdown.

On Instagram, this API covers publishing, scheduling, analytics, comments, direct messages and DM automation. Caps are listed at help.blotato.com/settings/social-accounts.

MCP tools that reach Instagram

The tool names an agent calls on the MCP server for this platform, verbatim from the server's tool list. The REST endpoint behind each one is in the API reference.

  • blotato_list_accounts
  • blotato_create_post
  • blotato_get_post_status
  • blotato_list_posts
  • blotato_list_schedules
  • blotato_get_schedule
  • blotato_update_schedule
  • blotato_delete_schedule
  • blotato_create_presigned_upload_url
  • blotato_list_top_posts
  • blotato_get_post_analytics
  • blotato_list_comments
  • blotato_get_comment
  • blotato_post_comment
  • blotato_list_conversations
  • blotato_get_conversation
  • blotato_list_messages
  • blotato_get_message
  • blotato_send_message
  • blotato_create_automation
  • blotato_list_automations
  • blotato_update_automation
  • blotato_update_automation_trigger
  • blotato_delete_automation
  • blotato_list_automation_runs
  • blotato_list_automation_logs
  • blotato_get_automation_analytics
FAQ

Instagram posting API FAQs

01 Can I post to Instagram with an API without going through Meta App Review?
Yes. Blotato's Meta app has already passed App Review, so you connect an Instagram Business or Creator account through a normal login and publish with POST /v2/posts. The Business or Creator account linked to a Facebook Page is still required, because that rule is Meta's, not ours.
02 Does Blotato's Instagram API publish Stories and Reels?
Yes. A video publishes as a Reel by default. Set target.mediaType to story for a Story, which takes one image or one video. Reels accept coverImageUrl, shareToFeed, audioName, collaborators, and a trial object.
03 Can my agent reply to Instagram comments and DMs through the same API?
Yes. GET and POST /comments cover comments on your published posts, GET /conversations and POST /messages cover DMs, and POST /dm-automations sets up reply-only auto-replies. These surfaces cover Instagram and Facebook only, not the other seven platforms.
04 How many Instagram posts a day does the API allow?
50 per Instagram account per 24 hours. That is a Blotato cap, stricter than the 100 Instagram documents, and it exists because accounts that publish at platform maximum through automation get flagged.

Same key, eight more platforms

Instagram is one targetType on the same endpoint. The social media API page has the comparison table of every platform's required fields and caps.