NetworksInstagram
Instagram APIthrough Siar.
Feed posts, carousels, reels and stories for Instagram professional accounts, connected either through a linked Facebook Page or directly with Instagram Login.
At a glance
Account needed: An Instagram professional account (business or creator), connected through Facebook Login or Instagram Login.
| Connection | OAuth 2.0 in the browser |
|---|---|
| Channel | Optional: pick a channel after connecting |
| Post types | post, reel, story |
| Text length | 2,200 characters |
| Comment length | 2,200 characters |
| Media per post | Up to 10 |
Media rules
| Kind | Formats | Max size | Duration | Other |
|---|---|---|---|---|
| Image | jpeg | 8 MB | n/a | None |
| Video | mp4, mov | 300 MB | 3 s to 15 min | None |
What Siar can do on Instagram
| Comments and replies | Yes |
|---|---|
| First comment | Yes |
| Edit a published post | No |
| Delete a published post | No |
| Edit a comment | No |
| Delete a comment | Yes |
| Import comments | Yes |
| Post analytics | Yes |
| Account analytics | Yes |
| Post history import | Yes |
| Direct messages | Yes |
Siar can create comments and replies up to 2,200 characters, and import the comments people leave on your posts.
Publish a post
Put Instagram's payload under data.INSTAGRAM and list INSTAGRAM in socialAccountTypes. Add other networks to the same request to post to all of them at once.
curl -X POST "https://api.siaran.my/api/v1/post" \
-H "x-api-key: $SIAR_API_KEY" \
-H "content-type: application/json" \
-d '{
"teamId": "TEAM_ID",
"title": "Instagram post",
"postDate": "2026-11-02T09:00:00.000Z",
"status": "SCHEDULED",
"socialAccountTypes": [
"INSTAGRAM"
],
"data": {
"INSTAGRAM": {
"type": "POST",
"text": "Hello from Siar",
"uploadIds": [
"UPLOAD_ID"
]
}
}
}' Instagram fields
-
typestring default "POST"One of:POSTREELSTORY -
textstring nullable -
uploadIdsstring[] nullable -
altTextstring nullable -
thumbnailOffsetnumber nullable default 0 -
thumbnailstring nullable -
shareToFeedboolean nullable default true -
collaboratorsstring[] nullable -
autoFitImageboolean nullable default false -
autoCropImageboolean nullable default false -
taggedobject[] nullable3 fields
-
usernamestring required -
xnumber ≥ 0≤ 1 -
ynumber ≥ 0≤ 1
-
-
carouselItemsobject[] nullable3 fields
-
uploadIdstring required -
altTextstring nullable -
taggedobject[] nullable3 fields
-
usernamestring required -
xnumber required ≥ 0≤ 1 -
ynumber required ≥ 0≤ 1
-
-
-
locationIdstring nullable -
trialParamsobject nullable1 field
-
graduationStrategystring requiredOne of:MANUALSS_PERFORMANCE
-
-
isPaidPartnershipboolean nullable default false -
brandedContentSponsorsstring[] nullable max 2 itemseach: min length 1each: max length 30 -
musicSoundInfoobject nullable3 fields
-
musicSoundIdstring required min length 1 -
musicSoundVolumeinteger nullable ≥ 0≤ 100 -
videoOriginalSoundVolumeinteger nullable ≥ 0≤ 100
-
-
isAiGeneratedboolean nullable default false
Daily caps
| Per connected account, per UTC day | Free | Pro | Business |
|---|---|---|---|
| Posts | 10 | 50 | 100 |
| Comments | 3 | 50 | 100 |
See pricing for monthly quotas. Enterprise uses the Business caps unless agreed otherwise.
Connecting an Instagram account
Siar sends the user to the network's consent page and stores the tokens it gets back, refreshing them before they expire. Use POST /social-account/connect from your own UI, or send your customer a hosted link from POST /social-account/create-portal-link; see connecting accounts.
Permissions requested
Siar requests only these scopes at connect time:
instagram_basicinstagram_content_publishinstagram_manage_commentsinstagram_manage_insightspages_show_listpages_read_engagementbusiness_managementinstagram_manage_messagespages_messaginginstagram_business_basicinstagram_business_content_publishinstagram_business_manage_commentsinstagram_business_manage_insightsinstagram_business_manage_messages
Instagram-specific operations
These exist for Instagram only and live under /misc/instagram.
| Operation | Endpoint |
|---|---|
| Search for Instagram Business/Creator user by username | GET /misc/instagram/tags |
| Search Instagram location IDs | GET /misc/instagram/locations |
| Search Instagram audio assets | GET /misc/instagram/audio |
| Delete an Instagram comment | DELETE /misc/instagram/comment |
When Instagram says no
Siar relays Instagram's error code and message verbatim on the post, next to a status you can act on. The Instagram error reference covers 10 common cases with what each one means and the fix. Open the Instagram error reference.
Instagram API questions
What can I post to Instagram through the API?
post, reel, story. Feed posts, carousels, reels and stories for Instagram professional accounts, connected either through a linked Facebook Page or directly with Instagram Login.
How many Instagram posts can I publish per day?
Per connected account and UTC day: 10 on Free, 50 on Pro, 100 on Business. The caps keep the account within what Instagram tolerates.
Can I schedule Instagram posts?
Yes. Set postDate in the future and a status of SCHEDULED. Siar publishes at that time and sends a post.published webhook when the post reaches a final state.
How do I connect a Instagram account?
An Instagram professional account (business or creator), connected through Facebook Login or Instagram Login. Siar sends the user to the network's consent page and stores the tokens it gets back, refreshing them before they expire.
What do I do when Instagram rejects a post?
The post carries Instagram's own code and message. The Instagram error reference explains 10 common rejections and how to fix them.
Your first post isone request away.
The Free plan includes 20 posts and 200 uploads a month across 3 teams. No card needed.