Publish your own post to Instagram
publish_postPublish the user's own image(s) + caption to their connected Instagram account RIGHT NOW — story, feed post, or 2-10 image carousel. This is the free publishing surface: bring-your-own-content posts don't consume the monthly story quota (a light daily anti-abuse bound applies). On the Free plan a short '✨ pith.day' line is appended to feed/carousel captions (the response's finalCaption shows exactly what was posted; Pro removes it). Stories publish the image as-is and Instagram ignores story captions. Requires a connected account (connect_instagram). Timeouts are safe: pass a random idempotency_key on the first call, and if the call times out, call again with the same key OR the returned draft_id — nothing double-posts. Scheduling is not supported here — posts go out immediately.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Instagram handle (with or without @). Omit for your default account. | |
| slides | No | Carousel slides (2-10), each with image_url or image_base64. | |
| caption | No | The caption, verbatim (feed/carousel; stories ignore captions). | |
| context | Yes | Explain why you are calling this tool and how it fits into the business owner's goal for their Instagram presence. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include personal data, credentials, or the text of a draft. Example (20 words): "Reviewing the pending drafts before approving today's story, checking the caption matches the photo the owner expects." | |
| draft_id | No | Resume a previous publish_post call: skips uploads, never double-posts. | |
| image_url | No | Public https image URL (story/feed). Exactly one of image_url/image_base64. | |
| post_type | No | Where to publish. Default feed. | feed |
| image_base64 | No | Raw image bytes, base64-encoded, ≤8MB decoded (story/feed). | |
| idempotency_key | No | Random 8-64 char key (letters/digits/_/-). Reuse it on a timeout retry so the same post is resumed instead of re-created. Strongly recommended. |