API operational
All platform guides
Platform guide

Instagram

Requires an Instagram professional account (Business or Creator). Personal accounts are not supported by the publishing API.

approval required2,200 characters10 media items

Capabilities at a glance

AnalyticsSupportedCommentsSupportedMessagesSupportedRemote deletionNot availableToken refreshSupported
01

Connect Instagram

Create the hosted connection URL on your server. The customer completes OAuth or the provider-specific credential form directly on PostGate.

Connection requestPostGate API
curl -X POST https://postgate.studio/api/profiles/connect \
  -H "Authorization: Bearer $POSTGATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "platform": "instagram",
  "profile_group_id": "grp_acme123",
  "return_url": "https://app.example.com/settings/social"
}'
02

Publish to Instagram

Use the connected profile ID as the target. Provider-specific fields live under post.options.instagram so the unified envelope remains stable.

Post envelopePostGate API
{
  "post": {
    "body": "Launch day."
  },
  "profiles": [
    "pro_instagram123"
  ],
  "media": [
    "med_01JXYZ"
  ]
}
03

Media and content limits

PostGate validates the request at creation and again at delivery. Account-level provider limits can be narrower than the general contract.

Text2,200 characters
LinksAllowed
Mediaimages and video · Up to 10
Image size8 MB
Video size300 MB
Video duration3 sec–15 min
HashtagsUp to 30
MentionsUp to 20
Image width320–1440 px
04

Operational notes

These constraints affect approval, connection health, or delivery behavior for this provider.

  • Business or Creator accounts only.

  • Container publish flow; app review required.

  • Stories: set post.options.instagram.mode to 'story' to publish a single image or video as a Story. Carousels and alt text are not supported for stories, and the caption is not sent.

  • Options: alt_text / alt_texts (images, up to 1000 chars), collaborators (up to 3 usernames), user_tags ([{username, x, y}] on a single photo or video), location_id (Facebook Page ID with a location), is_ai_generated. Reels also accept cover_url, thumb_offset and audio_name. disable_comment turns comments off right after publishing (not Stories). GET /api/profiles/{id}/health reports publishing_quota for the rolling 24-hour API limit.

  • Trial reels: set post.options.instagram.trial_params.graduation_strategy to 'MANUAL' (graduate in the Instagram app) or 'SS_PERFORMANCE' (Instagram graduates it if it performs well) on a single-video Reel. It is shown to non-followers first; graduation status is not readable via the API.

Check live capability before showing the option
Call GET /api/platforms. A provider appears only when it is enabled and configured for the current workspace.
Next guideBuild the complete post envelopeCompareAll platform capabilities