Skip to main content
The Sendmux Mailbox API is for mailbox-scoped access. Use it when a client should act as a mailbox, or as one mailbox from a connected-app mailbox set, without managing team-wide resources.

Sync APIs

Use sync endpoints to poll for changes with state tokens returned by earlier responses, or open an event stream when a client needs live updates.

Event stream

GET /mailbox/events streams mailbox events as Server-Sent Events. Use it for agents, CLIs, MCP servers, and SDKs that need to react when inbound mail arrives. Use webhooks instead when a backend service should receive signed event POSTs without keeping a live connection open.
Each received-message event includes subject, participants, preview, attachment metadata, and a capped body snapshot. Use the message and attachment endpoints when you need full content or attachment bytes. To resume after a disconnect, pass the last SSE id as the Last-Event-ID header or the last_event_id query parameter. If the stream sends sync_required, call GET /mailbox/changes before reopening the stream. Optional query parameters:

Message query changes

GET /mailbox/messages/query-changes tracks how a filtered message list has changed since a prior query_state. Omit since_query_state to get the current query state for a filter without a change list.

Folder changes

GET /mailbox/folders/changes tracks folder object changes. Omit since_state to get the current folder state without a change list.

Folder query changes

GET /mailbox/folders/query-changes tracks folder-list ordering changes. Omit since_query_state to get the current folder query state.

Typed mailbox changes

GET /mailbox/changes keeps the legacy message-only response when types is omitted. Pass a comma-separated types list to receive a typed state map.
Supported types values are messages, folders, threads, submissions, identities, and quotas.

Next steps

Mailbox API introduction

Mailbox API errors