Platforms
Instagram over the overads API: status, connection, limits, media rules and platformSettings keys.
Status: Live. Posts created over the API deliver to this channel today.
Live through both doors since Meta's App Review approved them on 2026-10-13. Through Facebook (Login for Business), Meta granted instagram_basic and instagram_content_publish; through Instagram Login, instagram_business_basic and instagram_business_content_publish. Delivery still reads the grant on each connection and refuses a post before its first Graph call when that connection was made without the publish permission, so an account connected before the approval may need to reconnect.
Connecting
Two ways in, both in the app. Sign in on Instagram (Meta's Instagram Login): the user logs in at instagram.com with Instagram credentials, needs a Business or Creator account, and no Facebook account, Business portfolio or Page is involved. The permissions asked for are instagram_business_basic and instagram_business_content_publish; the grant Meta returns is stored on the connection and checked at delivery. This door publishes to Instagram and nothing else. Or sign in through Facebook (Login for Business), which asks for a Business portfolio and a Page, and is the only path that also reaches Pages, ads and Page insights. GET /connections reports both as platform: "instagram" and does not say which door a connection came through.
Once connected the account appears in GET /connections with platform: "instagram". Use its id in connectionIds.
Limits
| Characters | 2,200 |
| API id | instagram |
- At least one image or video is required; a text-only post is refused with
MEDIA_REQUIRED. - Up to 10 images, or 1 video up to 1 GB and 15 minutes.
videoTypepicks Reels or Stories for a video.
Limits are checked when the post is created or edited, so an over-limit post is refused then with a sentence naming the cap, not at the scheduled minute. These refusals answer 400 with the flat body { statusCode, code, message }, not the { error } envelope: TOO_LONG, TOO_MANY_ITEMS, MEDIA_UNSUPPORTED, MEDIA_REQUIRED, MEDIA_TOO_LARGE (over the channel's video size cap), MEDIA_TOO_LONG (over its duration cap). The full list is under Channel-limit refusals.
Settings
Pass these under platformSettings.instagram. Every key is optional. An unknown key is refused with PLATFORM_SETTING_UNKNOWN and the dotted path of the key.
| Key | Value | Meaning |
|---|---|---|
videoType | REELS or STORIES | How a video is published |
shareToFeed | boolean | Also show a Reel in the feed |
coverUrl | https URL | Cover image for a Reel |
firstComment | string, up to 2,000 | Posted as the first comment right after the post |
{ "instagram": { "videoType": "REELS", "shareToFeed": true, "firstComment": "Link in bio." } }