Overview

Connect Instagram, capabilities, and known limits.

Schedule and automate Instagram posts with feed photos, carousels, Reels, and Stories, plus comment moderation and normalized analytics. Instagram Login needs no Facebook Page.

PageTopics
PostsPublish image, multi-image, Reels, Stories. Schedule, errors
EngagementList, create, delete, hide comments; private replies
InboxDirect messages: list, read, send, webhooks
AnalyticsMetrics for published media

Quick Reference

PropertyValue
Caption limit2,200 characters
Images per post1 (feed), 10 (carousel)
Videos per post1
Image formatsJPEG, PNG
Image max size8 MB
Video formatsMP4, MOV
Video max size300 MB (Reels), 100 MB (Stories)
Video max duration90 sec (Reels), 60 sec (Story)
Post typesFeed, Carousel, Reel, Story
SchedulingYes, with IANA timezone
Editing published postsNo
Inbox (Comments)Yes
Inbox (DMs)Yes
Inbox (Comment automations)No
AnalyticsYes

Before You Start

Instagram requires a Business or Creator account. Personal accounts cannot post via API, and there are no text-only posts. Every post needs at least one media URL.

Additional requirements:

  • Google Drive, Dropbox, OneDrive, and iCloud links do not work as media URLs. These services return HTML pages, not media files
  • Instagram enforces a rate limit of roughly 100 posts per 24-hour rolling window across all content types
  • The first ~125 characters of the caption are visible before the "more" fold
  • mediaKind: "video" always publishes as a Reel. Standalone feed video does not exist on this path
  • Stories get no captions, no comments, and no durable analytics

Connect

Instagram connects two ways. Pick the method when you start OAuth with the loginMethod query param; omitting it gives you Instagram Login.

Open Dashboard → Connections, pick Instagram, and choose Instagram Login or Facebook Login.
Complete the consent screen. Onepostly requests all scopes below in a single OAuth flow.
With Facebook Login, pick the linked Instagram account on the second step (or build your own with the headless flow).
Grab the account id from the connections list:
const { connections: list } = await connections.listConnections();
const ig = list.find((c) => c.platform === "instagram");
// ig.id is your accountId

If you later get a permission error on an action that should work, reconnect Instagram once.

OAuth Scopes

Instagram Login

ScopeWhat it enables
instagram_business_basicAccount identity (id, username, avatar)
instagram_business_content_publishPublish photos, carousels, Reels, and Stories
instagram_business_manage_commentsList, create, delete, and hide comments
instagram_business_manage_insightsRead media metrics
instagram_business_manage_messagesInstagram DMs in the inbox + private replies

Instagram API with Facebook Login

The user authorizes a Facebook Page with a linked Instagram professional account. Use it when the customer manages Instagram through a Page, or when you need remote media delete.

ScopeWhat it enables
instagram_basicAccount identity
instagram_content_publishPublish photos, carousels, Reels, and Stories
instagram_manage_commentsList, create, delete, and hide comments
instagram_manage_insightsRead media metrics
instagram_manage_messagesInstagram DMs in the inbox + private replies
pages_show_listList Pages to find the linked account
pages_read_engagementRead the linked Page
business_managementResolve Pages owned through a Business Manager

Token Lifetime

TokenLifetimeBehavior
Access token~60 daysRefreshed automatically by Onepostly
Refresh tokenNoNot used. The long-lived token renews itself. After expiry, revocation, or password change, reconnect the account

Capabilities

ActionSupportedNotes
Image postYesSingle image URL + optional caption
Multi-imageYes2 to 10 URLs, images and videos can be mixed
VideoYesPublishes as a Reel, also appears in feed
StoriesYesImage or video, ephemeral
Text-only postNoInstagram requires at least one media URL
ScheduleYesCancel any time before it publishes
CommentsYesList, create, delete, hide on feed, carousels, and Reels
Private reply (comment → DM)YesOne per comment, 7-day window
DMsYesList, read, send text + attachments
Paid partnership + sponsorsYesUp to 2 sponsors (username or numeric id)
Turn comments offYescommentsEnabled: false, best-effort
AnalyticsYesNormalized metrics
Thread / quoteNoNot Instagram features
Remote media deleteFacebook Login onlyReturns MEDIA_DELETE_UNSUPPORTED on Instagram Login
Like / unlikeNoNot available via the API

What You Can't Do

These features are not available through the Instagram API:

  • Text-only posts (media is required)
  • Story stickers (polls, questions, links, countdowns)
  • Going Live
  • Applying filters
  • Tagging products
  • Catalog audio on Reels
  • Remote-deleting published media on Instagram Login connections
  • Liking posts or comments

See Also