Skip to main content

Send a message

One endpoint sends every message: POST /messages. The target says where.

Targets

contact and profile targets use the existing thread or start a new one. The response always returns the thread.
To reply to a specific message, add replyToMessageId. Needs message:reply.

Send safely

A network failure leaves you not knowing whether the message went out. Send an Idempotency-Key header, and retry with the same key: a replay returns the original result with 200 instead of sending again. Keys are scoped to your team and kept for 24 hours.

Why a send fails

List messages

Newest first. Pass order=asc for oldest first, and nextCursor as cursor for the next page. While a thread’s syncing is true, Inboxapp is still importing its history and older messages may be missing.

Who sent it

direction is inbound or outbound. For outbound messages, sentBy says who on your side:

Attachments

attachments is a list tagged by kind: image, gif, video, audio, file or card. A media attachment has a status. Its url is set only when status is ready, and it expires at expiresAt. Get a fresh one when you need it:
200 returns the attachment with a usable url. 202 means it is still pending or processing: ask again later.

Edit a message

Needs message:edit. Platforms that allow edits usually limit how long after sending: past that, the request fails with 422 mutationWindowClosed. The windows are listed in Platforms and capabilities.

Delete a message

scope is required:

Reactions

Both return the message’s reactions. Each has an author: your accountLink, the other side’s profile, or unknown. Needs message:react.

Edit history

Returns every version of the content, the original first, and the deletion if there is one.