App Logo
instagram.com

Send Instagram DM

Automatically send Instagram DM on instagram.com. Send a DM to an Instagram user by their username: plain text, an image attachment, or both together. Takes the image as base64 so it runs from any client. Returns ids/timestamps for whichever parts were sent, and the recipient-side restriction banner if one is shown right after sending.

Input

username required

Instagram handle without @, e.g. f1

dry_run optional

When true, everything runs — the conversation opens, the text is typed and the attachment is staged in the composer — and then the run stops before anything is sent. Nothing is delivered: messageId and mediaMessageId come back null and dry_run is true. Use it to verify a recipient, a message and an attachment are accepted without sending a real DM.

message optional

Plain text message to send. At least one of message, attachment or fileBase64 is required.

filename optional

Filename to send the attachment as, e.g. photo.png or clip.mp4. Required when fileBase64 is set; not used by the attachment input, which is stored under its own name.

mimeType optional

MIME type of the attachment; inferred from the filename extension when omitted. Applies to fileBase64 only.

threadUrl optional

Optional. An existing conversation URL (https://www.instagram.com/direct/t/<thread_id>/, from get_inbox). Use this to reach an account whose profile shows no Message control — a non-followed account renders only a Follow button, so the profile route cannot reach it even once a conversation exists.

attachment optional

An image to attach, supplied as a file rather than base64. Preferred over fileBase64: it carries no payload size ceiling. The file is delivered to Instagram under the name 'attachment', since a file input's key is its stored filename.

fileBase64 optional

Attachment contents, base64-encoded (no data: prefix). Fallback for callers that cannot bind a file; prefer the attachment input. At least one of message, attachment or fileBase64 is required.

Output

username required
notice optional

Recipient-side restriction banner visible in the thread right after sending, else null. May lag the server push — null does not guarantee delivery, and a stale banner has been observed on a send that landed.

dry_run optional

True when this run stopped before sending anything. The text was still typed and the attachment still staged — only the submit was skipped.

message optional
filename optional
messageId optional

id of the sent text message, null if no message was sent and null on a dry run

timestampMs optional
mediaMessageId optional

id of the sent image message, null if no image was sent and null on a dry run

mediaTimestampMs optional

FAQ

Send a DM to an Instagram user by their username: plain text, an image attachment, or both together. Takes the image as base64 so it runs from any client. Returns ids/timestamps for whichever parts were sent, and the recipient-side restriction banner if one is shown right after sending.
Ask an AI agent connected to Reduck to run reduck/instagram.com/send_message, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/instagram.com/send_message
You do not need one. "Send Instagram DM" drives the real instagram.com pages in a browser, so it works whether or not instagram.com offers an API for this.
Required: username. Optional: dry_run, message, filename, mimeType, threadUrl, attachment, fileBase64.
It returns notice, dry_run, message, filename, username, messageId, timestampMs, mediaMessageId, mediaTimestampMs.
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/send_message, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/instagram.com/send_message
It is part of Reduck's official curated catalogue.

Start building not clicking