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.
replyToMessageId. Needs message:reply.
Send safely
A network failure leaves you not knowing whether the message went out. Send anIdempotency-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
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
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
reactions. Each has an author: your accountLink, the other side’s profile, or unknown. Needs message:react.