Skip to content
Reading with an AI assistant?View as MarkdownOpen in ClaudeOpen in ChatGPT

Guides

Publish to Instagram with the API

Instagram uses the same POST /v1/posts call as every other platform. A single video with no contentType publishes as a Reel. Everything else (feed, Story, tags, collaborators) is an explicit override.

Browse docs

6 min read

What do you need before you publish?#

You need one connected account for the platform. Connect it in the SkedCast console. If a client owns the account, create a connect link with POST /v1/clients/{id}/connect-invites and send it to them. They authorize from that page without a SkedCast login.

GET /v1/accounts lists the connected accounts with their ids. Pass that id in targets.accountIds below.

How do you schedule a Instagram post with the API?#

bash
curl -X POST https://api.skedcast.com/v1/posts \
  -H "Authorization: Bearer sked_live_YOUR_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "<clientId>",
    "content": "Launch day is here 🚀",
    "mediaIds": ["<mediaAssetId>"],
    "targets": { "mode": "selection", "accountIds": ["<instagramAccountId>"] },
    "schedule": { "type": "at", "scheduledAt": "2030-01-15T15:00:00Z" }
  }'
A minimal Instagram post, scheduled for a specific time.

Which Instagram fields can you set?#

Put everything platform-specific in one variants entry with "platform": "instagram" and an overrides object. Send only instagram keys on a instagram variant. SkedCast reads the keys in the table below and ignores the rest.

FieldTypeValues / defaultNotes
contentTypeenumfeed \| reel \| storyDefaults to feed. A single video with no contentType publishes as a Reel.
firstCommentstring—Posted right after publish. Needs the account's instagram_manage_comments permission. Without it the comment is held back at publish and firstCommentIssue says so. Best-effort: a failed comment never fails the post. The outcome is reported as firstCommentIssue on GET /v1/post-targets/{id}.
commentsEnabledboolean (or "true" / "false")truefalse turns comments off as soon as the post is live (live media only, not Stories). Needs the same instagram_manage_comments permission as the first comment.
userTagsstring[] or [{ username, x?, y? }]≤20People and photo tags. A comma-separated string of @usernames also works.
collaboratorsstring[]≤3Collaborator usernames.
shareToFeedbooleanplatform defaultReels only: also show the Reel in the main feed grid.
coverUrlstring (url)—Reels only: a public URL for the Reel's cover frame. Separate from the post-level coverMediaId.
locationIdstring—Instagram location page id.
paidPartnershipbooleanfalseAdds Instagram's "Paid partnership" disclosure label.

How do you add Instagram-specific settings?#

json
{
  "clientId": "<clientId>",
  "content": "Behind the scenes 🎬",
  "mediaIds": ["<videoAssetId>"],
  "targets": { "mode": "selection", "accountIds": ["<instagramAccountId>"] },
  "variants": [
    {
      "platform": "instagram",
      "overrides": { "contentType": "reel", "shareToFeed": true, "collaborators": ["studio_handle"] }
    }
  ],
  "schedule": { "type": "at", "scheduledAt": "2030-01-15T15:00:00Z" }
}
The same POST /posts body, with a variants entry added.

How do you check that the post published?#

Publishing creates one post target per account. GET /v1/post-targets/{id} (or GET /v1/posts/{id}) reports status, plus externalId (Instagram's own post id) and permalink (its public URL) once published. To avoid polling, subscribe to the target.published and target.failed webhooks (see the webhooks guide).

instagramapipublishreels

FAQ

Will my video publish as a Reel or a feed post?
A single video with no contentType publishes as a Reel. Set contentType: "feed" to publish it as a regular video post in the grid instead.
Can I post an Instagram carousel?
Yes. Pass more than one id in the base mediaIds array (no contentType override needed) and SkedCast publishes a carousel. Set per-slide alt text with the post-level mediaAltTexts map, keyed by media asset id.

Ready to broadcast everywhere?

Sign up free — no credit card. You land on the Free plan, and you can start a one-time 7-day Studio trial from your workspace whenever you are ready. Connect your first accounts, import a batch, and watch one post fan out across every platform.