Channels
How an agent publishes to Instagram through uplika: feed, reels and stories, what each takes, and what the API does not offer.
Quick reference
| Name | Type | Description |
|---|---|---|
characters | text | 2,200 |
images | media | up to 10 per post; more than that and the first 10 go out with a warning |
carousel | media | 2-10 items, images and video can be mixed |
video | media | 1 per post |
text alone | media | media required |
posts / 24h | limit | 100 |
deletes / 24h | limit | Instagram only on accounts connected via Facebook, with no documented daily cap |
status | state | live |
These numbers come from the same file the server validates against. Instagram never publishes text alone: every post needs at least one image or video, and only JPEG images go through, so we convert other formats before publishing and leave your original untouched.
Two ways to connect, one channel
An Instagram account can connect directly (Instagram login) or through the Facebook Page it is linked to (Facebook login). Both publish the same way. The difference shows up in what else is allowed: deleting a post through uplika works only on accounts connected via Facebook, because the direct login has no delete permission.
Feed, reel or story?
options.instagram.contentType picks it. Leave it out and a single video becomes a reel and everything else a feed post. A story takes exactly one image or video, shows no caption and takes no first comment. A carousel is two to ten items in one feed post.
How do I publish my first post?
Upload an image, then call publish with the media id. contentType is optional.
curl -X POST https://api.uplika.com/v1/posts \
-H "Authorization: Bearer $UPLIKA_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Caption under the photo",
"accountIds": ["conn_..."],
"mediaIds": ["med_..."],
"options": { "instagram": { "contentType": "feed", "firstComment": "#hashtags #here" } }
}'What options.instagram takes
| Name | Type | Description |
|---|---|---|
contentType | feed | story | reel | What kind of post. Defaults to reel for a single video and feed otherwise. Stories show no caption and take one image or video. |
shareToFeed | boolean | Reels only. false keeps the reel out of the main feed. |
coverMediaId | string | Media id of a JPEG up to 8MB to use as the reel cover. Reels only. |
thumbOffsetMs | number | Reel cover frame in milliseconds. Ignored when coverMediaId is set. |
collaborators | string[] | Up to 3 public professional accounts to invite as collaborators. They appear only after accepting. Not on stories. |
userTags | object[] | Tag accounts on the media. Photos need x and y between 0 and 1; videos take the username alone. mediaIndex picks the carousel slide. (API only; the dashboard does not draw it.) |
isAiGenerated | boolean | Set true to label the media as AI-generated on Instagram. |
firstComment | string | A comment we post right after publishing, often used for hashtags. Not on stories. If it fails the post still goes up, with a warning. |
content | string | Text for this channel only. When set it replaces the shared content for this channel, and the length and media checks use it. Leave it out to use the shared content. |
Generated from the same schema the server validates with. GET /v1/platforms returns it too.
What is not available?
Editing a published post (Instagram has no edit API), direct messages, and deleting on accounts connected with Instagram login. Insights come through get_insights for feed posts and reels; stories expire and report nothing after 24 hours.
Frequently asked
Why was my PNG converted?
Instagram accepts JPEG only. We convert other images to JPEG before publishing and keep your original file as you uploaded it.
Why does my story have no caption?
Stories show no caption at all. If you sent text it was not lost; it simply has no place on a story. Put it in a feed post instead.
Can I delete a post?
Only on accounts connected through Facebook. The Instagram login has no delete permission, so on those accounts delete it in the Instagram app.