Post an Instagram image or carousel
instagram_post_imagePublish a single Instagram feed image or a 2–10 image carousel from HTTPS JPEG URLs. Avoid duplicate posts by resuming an unfinished container, or preview the action before applying.
Instructions
Publish a single feed image, or a 2–10 image carousel, in one call: create the container(s), wait for processing, then publish. Preview (the default) performs nothing. If processing exceeds the poll budget the result is status=in_progress with a resume_container_id — re-run with apply:true and resumeContainerId to finish (never create a new post, which would duplicate it). Image format, byte size, and dimensions are validated by Instagram on fetch, not here.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | Set true to actually perform this write. Omitted (or false) returns a non-mutating preview of exactly what would happen and calls nothing, unless IG_WRITE_MODE=apply is configured. An explicit false always forces preview. | |
| account | No | Name of the configured account profile to operate as (multi-account). Omit to use the default profile (IG_ACTIVE_PROFILE). | |
| caption | No | Caption text (≤ 2200 characters, ≤ 30 hashtags, ≤ 20 @mentions — counted as a client-side guard). Instagram renders @mentions and #hashtags. | |
| userTags | No | User tags for a single feed image (not carousels): handles with optional 0–1 x/y. | |
| imageUrls | No | Public HTTPS JPEG image URL(s) Instagram will fetch. One URL posts a single feed image; 2–10 URLs post a carousel album. Required unless resuming. Format/size/dimensions are unverifiable before Instagram fetches them. | |
| locationId | No | Instagram location Page id to tag on the post. | |
| resumeContainerId | No | Resume a container from a previous apply that returned status=in_progress: pass its resume_container_id to finish publishing instead of creating a new post (avoids a duplicate). When set, the media inputs are ignored. |