instagram

Instagram

OmniPost publishes to Instagram using the Instagram API with Instagram Login — no connected Facebook Page is required from your end users.

Scopes OmniPost requests

ScopePurpose
instagram_business_basicRead the connected account's profile (username, ID) to display in your dashboard.
instagram_business_content_publishCreate media containers and publish them to the account's feed.

How OmniPost publishes

Instagram uses a container-then-publish model. When you call POST /v1/upload with "platforms": ["instagram"], OmniPost:

  • Creates a media container from your media URL and caption.
  • Polls the container until it reports ready (or errors).
  • Publishes the container, producing the live post.

All of this happens server-side inside the processing window of the target — you only see pendingprocessingpublished/failed.

Media constraints

TypeFormatsLimits
ImageJPEG, PNG≤8MB. Aspect ratio 0.1:1–10:1 (9:16 to 1.91:1 recommended).
Video (feed/Reels)MOV, MP4 (H.264/HEVC, AAC audio)≤1GB, 23–60fps. Reels: 3s–15min. Stories: 3s–60s.
CarouselMixed image/video childrenUp to 10 items.

Quirks to design around

  • Containers expire in 24 hours. If a container isn't published within 24h of creation (rare, but possible under sustained platform-side delay), the target fails with container_expired — OmniPost retries the container creation automatically before surfacing this.
  • Media must be URL-reachable. Instagram's container API pulls from a URL you provide (image_url/video_url) — it does not accept a raw file upload, so the media you pass to POST /v1/upload must already be hosted publicly.
  • No Facebook Page required with Instagram API with Instagram Login — a standalone Instagram professional account is sufficient.

Rate limits

Instagram enforces ~50 published posts per rolling 24-hour window per connected account, plus a cap of 400 container creations/24h. Exceeding it fails the affected target with platform_rate_limited — see Rate Limits.

App review, in brief

Publishing in live mode requires your Meta app to complete Business Verification and pass App Review for Advanced Access to both scopes above, including a screencast and written use case per permission, with the app in Live Mode. Meta also requires a Deauthorize Callback URL and a Data Deletion Callback (or Instructions) URL configured on your app, since it can share the same Meta App object as Threads.

None of this blocks development — use a sandbox key to build and test your full Instagram publishing flow before Meta approves your app.