Skip to content
SocialsForAI
Menu

Instagram posting API

Posting to Instagram by API means passing Meta's review first.

Instagram publishing isn't live on our API yet. This is a guide to Meta's own Content Publishing API: what it needs, what it accepts, and its limits.

The short answer · Updated Nov 1, 2026

Instagram's Content Publishing API lets an app publish images, carousels of up to 20 items, reels and stories to Instagram professional accounts (business or creator). Publishing takes two calls: create a media container from a public URL, then publish it. Serving accounts your app doesn't own or manage needs Advanced Access, which requires Meta App Review and Business Verification.

Instagram: coming soon. Needs Meta app review. Everything else on this page describes the API as it works today.

Instagram API media requirements
MediaFormatSize and lengthShape
Feed imageJPEG onlyUp to 8 MBAspect ratio 4:5 to 1.91:1; width 320 to 1440 px
ReelMOV or MP4, H.264 or HEVC, AAC audio3 seconds to 15 minutes; up to 300 MBUp to 1920 px wide; 9:16 recommended; 23 to 60 fps
Story videoSame as reels3 to 60 seconds; up to 100 MB9:16 recommended
Story imageJPEGUp to 8 MB9:16 recommended
CarouselImages, videos or a mixUp to 20 itemsCropped to the first item's ratio, default 1:1
CaptionText2,200 characters, 30 hashtags, 20 @ tagsNot supported on carousel items

From Meta's IG User Media reference and content publishing guide, read 2026-11-01.

Does SocialsForAI support Instagram yet?

No. Instagram publishing isn't available on our API yet: it needs Meta's App Review for the publishing permissions, and our app doesn't have that approval. We'll mark it live only after a real post goes through end to end, and it will appear in GET /v1/platforms when it does.

What works today: X, Bluesky, LinkedIn, Mastodon and Telegram are live. If you need Instagram now, the official API below is the route. Our social media API page covers what one call does on the networks that are ready.

What do you need to publish to Instagram by API?

Meta's content publishing guide requires an Instagram professional account, which Meta describes as a business or creator account. Personal accounts aren't covered by the publishing API. Beyond the account, you need a Meta app, a login flow and the publishing permission for that login type.

  • Instagram Login (graph.instagram.com): works without a linked Facebook Page. Permissions instagram_business_basic and instagram_business_content_publish.
  • Facebook Login (graph.facebook.com): the professional account must be linked to a Facebook Page the user can administer. Permissions instagram_basic, instagram_content_publish and pages_read_engagement.
  • Advanced Access: needed to serve accounts you don't own or manage. It requires Meta App Review and Business Verification; Standard Access only covers people with a role on your app.
  • Public media hosting: Meta fetches the file from your URL, which must be publicly reachable at the moment of the request.
  • Page Publishing Authorization: if the linked Page requires it, the account can't be published to until it's completed.

How does Instagram's two-step publishing flow work?

First POST /<IG_ID>/media with an image_url (or video_url and a media_type such as REELS or STORIES) and a caption. Meta returns a container id. Then POST /<IG_ID>/media_publish with creation_id set to that id, and Meta returns the published media id.

Videos process asynchronously. Check GET /<CONTAINER_ID>?fields=status_code until it reads FINISHED; Meta suggests polling once a minute for no more than 5 minutes. Other values are IN_PROGRESS, ERROR, PUBLISHED and EXPIRED, which means the container wasn't published within 24 hours.

Carousels add a step: create a container per item with is_carousel_item=true, then a CAROUSEL container listing up to 20 child ids, then publish that.

bash
# 1. Create a container (Instagram Login host shown)
curl -X POST "https://graph.instagram.com/<API_VERSION>/<IG_ID>/media" \
  -H "Authorization: Bearer $IG_USER_TOKEN" \
  -d "image_url=https://cdn.example.com/launch.jpg" \
  -d "caption=We shipped webhooks."
# → { "id": "<IG_CONTAINER_ID>" }

# 2. Publish it
curl -X POST "https://graph.instagram.com/<API_VERSION>/<IG_ID>/media_publish" \
  -H "Authorization: Bearer $IG_USER_TOKEN" \
  -d "creation_id=<IG_CONTAINER_ID>"
# → { "id": "<IG_MEDIA_ID>" }

How many posts can you publish per day with the Instagram API?

Meta's rate limit section says 100 API-published posts per account within a 24-hour moving period, with a carousel counting as one post. The same guide's carousel section says 50, so plan for the lower number until your own limit check says otherwise.

Check the live number with GET /<IG_ID>/content_publishing_limit before a batch. The limit is enforced on the media_publish call, so that is where an over-limit error appears.

What can't the Instagram API publish?

Meta's guide lists the gaps. The ones that surprise people:

  • Image formats other than JPEG. PNG and WebP must be converted first.
  • Shopping tags and filters.
  • Link, poll and location stickers on stories.
  • Alt text on reels and stories; alt_text (up to 1,000 characters) works on image posts only.
  • Captions, locations or tags on individual carousel items; they go on the carousel container.
  • Personal accounts. The account has to be converted to business or creator.

How long do Instagram API tokens last?

Authorization codes and short-lived access tokens are valid for one hour. Exchange the short-lived token for a long-lived one, which is valid for 60 days and can be refreshed before it expires, per Meta's platform overview.

Build the refresh into a scheduled job. A token that lapses means the account owner has to log in again, which is the same failure mode as LinkedIn's 60-day tokens described on our LinkedIn API page.

What will Instagram look like on SocialsForAI?

When Instagram goes live, accounts will connect through the same connect link and post through the same POST /v1/posts as X, Bluesky, LinkedIn, Mastodon and Telegram. Our API already takes media as public URLs, which is what Meta's container flow expects.

Two honest limits: video isn't supported on any network in our API yet, and every Instagram container needs an image or video URL, so text-only crossposts won't apply there. Until it's live, the TikTok API guide covers the other video-first network on our list, and pricing shows how accounts are billed.

Questions

What developers ask

Can I post to a personal Instagram account by API?

No. Meta's content publishing guide requires an Instagram professional account, which Meta describes as representing a business or creator. The publishing permissions, instagram_business_content_publish or instagram_content_publish, act on that professional account through Instagram Login or Facebook Login. Personal accounts aren't covered.

Is the Instagram API free?

Meta's content publishing docs list no per-call price. The costs are access and limits: Advanced Access to publish for accounts you don't manage requires Meta App Review and Business Verification, and each account can publish a limited number of API posts per 24 hours.

Do I need a Facebook Page to use the Instagram API?

Not with Instagram Login, which serves professional accounts without a linked Facebook Page through graph.instagram.com. Facebook Login does need the account linked to a Facebook Page that the user can administer, and uses graph.facebook.com with Page tokens. Pick the login type before you build.

How many posts per day can the Instagram API publish?

Meta's rate limit section says 100 API-published posts per account in a 24-hour moving period, counting a carousel as one. Another section of the same guide says 50. Check the account's current usage with the content_publishing_limit endpoint before publishing a batch.

Why does the Instagram API need a public image URL?

The publishing flow doesn't take a file upload for images. You pass image_url, and Meta fetches the file from it, so it must be publicly reachable at that moment. Only JPEG is supported for images. Videos can also use resumable uploads with Facebook Login for Business.

When will Instagram work on your API?

After our app has Meta's App Review approval, which it doesn't have yet. This page will show the change, Instagram will appear in the platforms endpoint, and we only mark Instagram live once a real post goes through end to end. Connected accounts will then use the same connect link and posts endpoint.

Get an API key and send your first post in five minutes.