Instagram

Posts, carousels, Reels and Stories on Instagram.

API id: instagram

Instagram has two post types. Choose one with channels[].postType. If you leave it out, you get post.

postTypeWhat it is
post (default)Stays on the profile grid: one image, a carousel of up to 10, or one video (published as a Reel).
storyOne image or one video up to 60 seconds. Disappears after 24 hours.

At a glance

PostStory
Caption2,200 charactersNone — Instagram shows no text on a Story
Files1 to 10Exactly 1
File needed?YesYes
Extra blocksUp to 2, published as comments (no files)No
Alt textYesNo
Tag peopleYes, on images (up to 20, with a position)Yes, on images and video (up to 20)
Edit after publishNoNo
Delete after publishNo — Instagram does not let apps delete postsNo
AnalyticsImpressions, likes, comments, shares, saves
CommentsRead and reply (posts only)No

Files

File types: JPEG, PNG, WebP, MP4 and MOV.

Post

  • Images: shape between 4:5 (portrait) and 1.91:1 (landscape). JPEG up to 8 MB.
  • Video: from 3 seconds to 15 minutes.

Story

  • Video: from 3 to 60 seconds.

Options

Send these in channels[].options. They work on post only.

KeyTypeWhat it does
collaboratorslistUp to 3 usernames (without @). Each one gets an invite. The post shows on their profile only after they accept.
cover_urlmediaCover image for a Reel (a post with one video). JPEG, PNG or WebP, up to 8 MB. Ignored on other posts.
location_idsearchThe place to tag the post with.

Tag people

Use mediaUserTags on the block, keyed by media id. On a post, give each person a position (x and y, from 0 to 1):

{
  "channelId": "CHANNEL_INSTAGRAM",
  "blocks": [
    {
      "content": "Team day ☀️",
      "mediaIds": ["MEDIA_ID"],
      "mediaUserTags": {
        "MEDIA_ID": [{ "username": "ada", "x": 0.25, "y": 0.75 }]
      }
    }
  ]
}

Example: a Story

{
  "channelId": "CHANNEL_INSTAGRAM",
  "postType": "story",
  "blocks": [{ "mediaIds": ["MEDIA_ID"] }]
}

Good to know

  • Instagram and Facebook are set up from the same Meta app in Platform apps.
  • The location_id search uses your Meta app's Facebook App ID and Secret, so set up Facebook in Platform apps too.
  • Because Instagram posts cannot be deleted by apps, retract will leave them in the remaining list.

Comments

You can read the comments on a published post or Reel and reply to them. See Read and reply to comments. Stories have no comments.

  • 25 comments per page, each with its replies. Use nextCursor for more.
  • Instagram only nests one level. A reply to a reply is posted under the top-level comment, like in the app.
  • Commenters show by their username. Comments have no link of their own, so url is null.
  • Your own extra blocks (the comments Bulkit posted for you) are not listed.
  • Needs instagram_business_manage_comments. Bulkit already asks for it when you connect, because extra blocks need it too.
  • Instagram may count comments and still return none. This is seen on Meta apps in Development mode; switching the app to Live in the Meta App Dashboard is the usual fix. When it happens, Bulkit returns 422 platform_refused with the number of comments Instagram reports, rather than an empty list.
  • If your app serves Instagram accounts you don't own, it needs Advanced Access to instagram_business_manage_comments (App Review and Business Verification).
  • Comments on ads are not available through the API.

Set up

To connect accounts, you first need your own app on this platform. See the Instagram app setup guide.

On this page