App Logo
instagram.com

Create Instagram post

Automatically create Instagram post on instagram.com. Publish an Instagram feed post, a single image or a carousel of up to 10, from an attached file, image URLs, or inline base64 bytes. Drives the web composer (New post, crop, edit, caption, Share) and returns code, pk, url and the caption Instagram recorded. dry_run stops just before Share. Supersedes create_post_from_file.

Input

caption optional

Post caption; empty for none. Max 2200 chars.

Default: ""
dry_run optional

When true, the whole composer flow runs — the image is attached, cropped, the edit step passed and the caption typed — and then the run stops on the step before Share. Nothing is published, and code/url come back null with dry_run true. Use it to verify an image and caption are accepted without spending a real, irreversible public post.

image_url optional

Direct URL of a single image to post (jpeg/png/gif/webp). Fetched by the browser itself, so it works on devices with no outbound network of their own. No size ceiling and no device requirement. Equivalent to passing a 1-item image_urls.

attachment optional

A single image to post, bound through the platform's own file channel and handed straight to the composer's file input. Carries the bytes outside the argument payload, so unlike image_base64 it is not capped near 72KB, and it works on every device. One image only — for a carousel use image_urls or images_base64.

image_urls optional

1-10 direct image URLs, in order. A single URL publishes a normal post; 2 or more publish a carousel. Each is fetched by the browser itself, so this works on devices with no outbound network of their own. No size ceiling and no device requirement — the general answer, and the only practical route for a carousel of real photos.

image_base64 optional

A single image's bytes as base64 (a bare payload or a full data: URL), decoded in-page. Capped at ~96KB of base64, i.e. about a 72KB file. Prefer the `attachment` file input, which has no such cap. Line-wrapped output, base64url and missing padding are all accepted. Equivalent to a 1-item images_base64.

images_base64 optional

1-10 images as base64 (bare payloads or full data: URLs), in order, decoded in-page. Capped across all images combined at ~96KB of base64 total. Real photos will not fit for more than one — use image_urls for a real carousel. Takes precedence over image_urls.

Output

url required

Permalink of the new post. Null on a dry run, where nothing was published.

code required

Shortcode of the new post. Null on a dry run, where nothing was published.

caption_applied required

True when a caption was requested and Instagram recorded it; false when one was requested but the published post carries none. Always true when no caption was requested. Always false on a dry run, where Instagram recorded nothing.

pk optional

Media pk. Null on a dry run.

caption optional

The caption Instagram actually recorded on the published post (read back from configure/configure_sidecar), NOT an echo of the input. Empty when none was requested, none landed, or the run was a dry run.

dry_run optional

True when this run stopped before Share and published nothing. The image was still attached and the caption still typed — only the final publish was skipped.

image_bytes optional

Total size in bytes of the image(s) injected into the composer. null when attached via a *_path field, where the browser opens the file(s) itself and the bytes never cross the driver boundary.

carousel_count optional

carousel_media_count as Instagram reported it on configure_sidecar. null for a single-image post, and null on a dry run.

FAQ

Publish an Instagram feed post, a single image or a carousel of up to 10, from an attached file, image URLs, or inline base64 bytes. Drives the web composer (New post, crop, edit, caption, Share) and returns code, pk, url and the caption Instagram recorded. dry_run stops just before Share. Supersedes create_post_from_file.
Ask an AI agent connected to Reduck to run reduck/instagram.com/create_post, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/instagram.com/create_post
You do not need one. "Create Instagram post" drives the real instagram.com pages in a browser, so it works whether or not instagram.com offers an API for this.
Optional: caption, dry_run, image_url, attachment, image_urls, image_base64, images_base64.
It returns pk, url, code, caption, dry_run, image_bytes, carousel_count, caption_applied.
Yes. It acts as you on instagram.com: on your own Chrome it reuses your session, and on a Reduck-hosted browser it loads the instagram.com cookies saved by the Reduck extension.
It makes changes on instagram.com, like sending, posting, booking or buying something.
Ask an AI agent connected to Reduck to run reduck/instagram.com/create_post, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/instagram.com/create_post
It is part of Reduck's official curated catalogue.

Start building not clicking