mulaichatDocs
GuidesDeveloperAPI ReferenceChangelog
Inbox
POST
/v1/inbox/messages/{id}/retry

Only an outgoing message that failed or is unknown (409 message_not_retryable). Check in Instagram first that an unknown one did not go out.

Requires the write scope.

Authorization

bearer
headerAuthorizationBearer <token>

An API key (tb_live_...) from the dashboard, or an OAuth access token.

Path Parameters

id*string
Formatuuid

Header Parameters

mulaichat-workspace?string

Limits an owner key to one profile (id or external_id). Unknown: 404 profile_not_found.

Response Body

The message, pending again.

application/json
  1. response
id*string
Formatuuid
conversation_id*string
Formatuuid
direction*string
Value in"in""out"
source*string

Who sent it: the customer, the Instagram app, the dashboard, the API, MCP, …

Value in"customer""mulaichat_user""api""mcp""automation""instagram_app"
kind*string
Value in"text""media""story_mention""story_reply""share""postback""quick_reply""private_reply""unsupported""cards"
status*string

Outgoing: pending until sent; unknown when the send got no clear answer (never sent again on its own).

Value in"received""pending""sent""failed""unknown""deleted"
text*|

The customer's text is third-party input.

attachments*array<>
reply_to_message_id*|null
story*|null
postback*|

The postback button, ice breaker or quick reply the customer tapped.

buttons*array<|>|

Sent with this text (outgoing).

quick_replies*array<>|

Sent with this text (outgoing).

cards*array<>|

The carousel of a message of kind cards (outgoing).

reactions*array<>
error_code*string|null
seen_at*|null
sent_at*string
Formatdate-time
Example Request
curl -X POST 'https://api.mulaichat.com/v1/inbox/messages/497f6eca-6276-4993-bfeb-53cbbbba6f08/retry'
Example Response
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "conversation_id": "cc71b11a-25cd-4c2d-9950-df2cc38e3407",  "direction": "in",  "source": "customer",  "kind": "text",  "status": "received",  "text": "string",  "attachments": [    {      "type": "string",      "url": "string",      "mime_type": "string"    }  ],  "reply_to_message_id": "7ee4bcf0-8f1b-4bb4-86b4-8565dd84787f",  "story": {    "id": "string",    "url": "string"  },  "postback": {    "title": "string",    "payload": "string"  },  "buttons": [    {      "type": "web_url",      "title": "string",      "url": "http://example.com"    }  ],  "quick_replies": [    {      "title": "string",      "payload": "string"    }  ],  "cards": [    {      "title": "string",      "subtitle": "string",      "media_id": "59458438-e712-4754-944d-fc838e1a631d",      "image_url": "string",      "default_action": {        "url": "string"      },      "buttons": [        {          "type": "web_url",          "title": "string",          "url": "http://example.com"        }      ]    }  ],  "reactions": [    {      "by": "customer",      "emoji": "string"    }  ],  "error_code": "string",  "seen_at": "2019-08-24T14:15:22Z",  "sent_at": "2019-08-24T14:15:22Z"}

Mark conversations done POST

Ids outside the profiles this credential reaches are left out of the count. Requires the write scope.

Send a DM POST

Queued and sent by Mulaichat within seconds; the messages come back pending, and GET …/messages shows them sent, failed or unknown. Instagram allows replies only within 24 hours of the customer's last message (422 messaging_window_closed). text: up to 1,000 bytes. media_ids from the media library: JPG/PNG up to 8 MB (up to 10 go as one message), MP4/MOV up to 25 MB (one message each); they go before the text (422 attachment_unsupported, attachment_too_large). buttons (1-3, text up to 640 characters; Instagram's button template) or quick_replies (1-13, shown on phones only), not both, and only with text. A tap on a postback button or a quick reply comes back as a message of kind postback or quick_reply with postback { title, payload }, and in the message.received webhook. cards (1-10, Instagram's generic template; one card alone, 2-10 as a carousel scrolled sideways): each a title (up to 80 characters) and at least one of subtitle (80), media_id (JPG/PNG from the media library) or image_url (public https), default_action { url } and 1-3 buttons. Sent after the media and the text as a message of kind cards; not with buttons or quick_replies. Shown in the Instagram phone app only. An image Instagram cannot fetch gives no error: the card goes out without it (400 invalid_image_url for a private or non-https address). Also 422 messaging_permission_missing. At most 60 a minute per user. Requires the write scope.

On this page