Instagram Settings

API metadata for publishing images, video, reels, and carousels to Instagram via Social0.

Overview

Platform enum: instagram

Supported post types:

TypeMediaNotes
Image1+ imagesSingle or carousel
Video1 videoFeed video or Reel
CollectionMultiple assetsCarousel (2–10 items typical)

Instagram Business/Creator accounts connect in the dashboard — either direct Instagram OAuth or via a linked Facebook Page. Complete connect in the dashboard before publishing; the API cannot finish Meta OAuth in-request.

See Instagram (product).


Settings / metadata schema

Most Instagram posts need caption + media only. Optional per-account metadata:

FieldLocationRequiredTypeDescription
contentbodyYes*stringCaption (max ~2,200 chars)
platformsbodyYesUUID[]Instagram account UUID
mediabodyYes**UUID[]Image and/or video IDs
metadata.instagram.<uuid>.coverImageUrlmetadataNostringHTTPS cover frame for video/Reel
metadata.instagram.<uuid>.isTrialReelmetadataNobooleanPublish as trial reel when supported
platform_options.instagram.coverImageUrlplatform_optionsNostringCompiled into per-account metadata
platform_options.instagram.trialReelplatform_optionsNobooleanCompiled into isTrialReel

* Caption can be empty for media-only posts in some cases.
** Instagram requires at least one image or video.


Complete example

Reel with optional cover image:

curl -X POST https://api.social0.app/v1/posts/publish \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "content": "Behind the scenes — shipping API docs.",
    "platforms": ["550e8400-e29b-41d4-a716-446655440000"],
    "media": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"],
    "metadata": {
      "contentType": "video",
      "instagram": {
        "550e8400-e29b-41d4-a716-446655440000": {
          "coverImageUrl": "https://cdn.example.com/reel-cover.jpg",
          "isTrialReel": false
        }
      }
    }
  }'

Carousel (collection):

{
  "content": "Swipe for the full changelog →",
  "platforms": ["550e8400-e29b-41d4-a716-446655440000"],
  "media": [
    "media-uuid-1",
    "media-uuid-2",
    "media-uuid-3"
  ]
}

Response 202:

{
  "post_id": "uuid",
  "tracking_id": "uuid",
  "status": "queued",
  "stream_url": "/v1/jobs/{tracking_id}/stream"
}

Quirks

  • Connect prerequisite: Connect in the dashboard first — direct Instagram OAuth or via Facebook Page. The API cannot finish Meta OAuth in-request.
  • Via Facebook Page: If you used the Page-linked connect flow, the Instagram account must be linked to that Page on Meta; wrong Page or missing link causes connect or publish failures.
  • Reels: Video posts are published as Reels when the media is video; use vertical aspect ratio for best results.
  • Carousels: Pass multiple media UUIDs in order; Instagram treats multi-image posts as carousels.
  • Processing delay: Meta container processing can take 30–120 seconds after job acceptance; poll until terminal.
  • Cover image: coverImageUrl must be a valid https: URL (typically from your Social0 media CDN after upload).
  • No text-only: Instagram requires media — text-only posts will fail validation.