Skip to main content

Send Rich Messages via API & MCP: Images, Videos, Audio, Posts

Send image, video, audio, and media post messages to Instagram contacts programmatically via the Inrō API and MCP tools.

You can send image, video, audio, and media-post messages to your Instagram contacts through the Inrō API and MCP tools, not only plain text. That lets you run rich, automated outreach from your own systems or your AI agent, using the same message types you'd use inside Inrō scenarios and campaigns.

Before you start

You'll need a Pro or Trial account and your API token or an MCP connection. See The Inrō Private API: Getting Started for auth.

Message types

Set the message_type on your request:

  • text: Plain text (the default).

  • image: An image, by URL or file.

  • video: A video, by URL or file.

  • audio: An audio clip, by URL or file.

  • share: Share one of your Instagram media posts (a Reel or post) with the contact.

Send via the API

Use POST /api/v1/messages. Add a message_type and the matching media field alongside your recipient.

Send an image by URL:

POST /api/v1/messages{  "contact_id": 123,  "message_type": "image",  "image": "https://example.com/photo.jpg"}

Use the image, video, or audio field to match the message_type. Over the REST API you can pass either a public URL or a multipart file upload. Over MCP, pass a public URL.

Share a media post:

POST /api/v1/messages{  "contact_id": 123,  "message_type": "share",  "media_id": "your_media_id"}

For share, pass the media_id of one of your Instagram posts. You can look up media IDs with GET /api/v1/medias (see Access Your Media Posts via the Public API).

You can send to one contact or many: use contact_id / contact_username / contact_email for one, or the plural contact_ids / contact_usernames / contact_emails for a list.

Send via your AI agent (MCP)

The send_message tool takes the same parameters. Ask your agent:

  • "Send a video to contact X" and give it the video URL

  • "Share my latest Reel with contact Y" and it will find the media ID and send it

Text-only messages are unchanged: message_type defaults to text when you don't set it.

Good to know

  • Messages are sent asynchronously, and only active contacts actually receive them.

  • You can target up to 1,000 recipients in a single call.

  • For share, nothing new is stored: Inrō reuses your existing post's Instagram media directly.

  • Instagram's own limits still apply (file size, format, and DM permissions), so they govern what can actually be delivered.

🐾 Netsuke's Tips

  • Test with a single contact before sending to a list. It's the quickest way to confirm a media URL renders the way you expect.

  • Hosting your own files? See Manage Media Files via the API to upload and reuse them instead of passing a fresh URL each time.

What's next?

Did this answer your question?