Choose the endpoint
Use the same credential for the connection test and the workflow. A send-only key does not need a Management key to connect. Root API keys are rejected by the Mailbox connection endpoint; mailbox keys are rejected by the Management connection endpoint.
These checks do not send email, check credits or provider readiness, read mailbox storage, or require a mailbox selection. A successful connection test confirms authentication for that API. Each workflow action still enforces its permissions and service requirements.
GET /mailbox/me remains available for mailbox details and storage usage. Use
GET /mailbox/connection when testing authentication.Configure the connection test
1
Store the credential
Create a key with the permissions your workflow needs under API Keys in
the Sendmux app. Save it in your integration platform’s credential store.
2
Make an authenticated GET request
Select the endpoint above and send
Authorization: Bearer followed by the
credential. The request needs no body or query parameters.3
Read the result
Accept an HTTP
200 response with ok: true. Use data.label as the display
label, data.team.id as the stable account identifier, and
data.credential.id when you need to distinguish credentials for the same team.SENDMUX_API_KEY environment variable:
Response fields
The response uses the standard{ ok, data, meta } envelope.
The response does not expose the key creator’s profile, a credential secret, or a mailbox password. A credential identifies access to a team or mailbox; it does not necessarily identify a human user.
Handle connection failures
Do not shorten the server’s retry interval or disconnect a saved credential because of a temporary
429 or 503 response. If your workflow cannot wait that long, report the delay and retry later.
Authenticated responses include Cache-Control: no-store. Authentication is checked again on conditional requests using If-None-Match; a matching representation returns a bodyless 304. Omit this header for a connector’s initial connection test so it receives the response fields.
Automation platforms
For viaSocket, Zapier, Make, n8n, or Activepieces, configure the platform’s API-key connection test with the same GET request and response-field mapping above. This is also suitable for a custom HTTP workflow. Keep connection validation separate from sending a test email. Use credentials scoped to the actions your integration exposes. Platform-specific OAuth, trigger, and publishing requirements are separate from this API-key connection check.Manage native inboxes with an integration credential
An integration credential has access to all current and future inboxes in its Sendmux team, subject to its permissions and sending restrictions. Use a dedicated team for an integration that should own only its native inboxes. Ordinary root keys, single-mailbox keys and connected-app grants keep their existing scopes.This procedure requires an explicitly issued Mailbox Integration credential. A successful connection test does not issue one or widen an existing credential’s access.
1
Confirm the team and workspace owner
Validate the integration credential with a connection endpoint and record
data.team.id. Before creating, accessing or retiring a native inbox, confirm that the requesting workspace owns that inbox in your integration’s records. Team-wide Sendmux access does not enforce your integration’s workspace boundaries.2
Create an inbox and retain its ID
Use Integration provisioning does not return a separate mailbox credential. Use the integration credential to access the new inbox. Creating the inbox does not grant extra sender addresses beyond the applicable sending policies.
POST /mailboxes with mailbox.admin.create. Supply an email on a verified domain available to the team, and retain the returned data.mailbox.id and data.mailbox.email. Reuse the same Idempotency-Key and request body if the response is lost.3
Select the inbox on Mailbox API requests
Use Set
GET /mailboxes with mailbox.admin.read to list the team’s inboxes. Pass exactly one mailbox_id on Mailbox API operations, even when the team has only one inbox. The connection test itself needs no mailbox selection.MAILBOX_ID to the retained inbox public ID. Missing selection returns 400; an unknown, foreign or inactive inbox returns 404. Reading requires mailbox.read; saving drafts also requires mailbox.drafts.write, and sending or scheduling also requires email.send.4
Retire the owned inbox and reconcile costs
Stop new work for the inbox in your integration, then call
DELETE /mailboxes/{public_id} with mailbox.admin.delete. Confirm the response has data.deleted: true and the expected data.id. Keep the inbox ID and original team identity for cost reconciliation.If deletion returns 503, wait for the Retry-After interval before retrying the same inbox deletion. A 404 alone does not confirm deletion.A successful deletion does not make pending costs final. Read the retained cumulative cost window until its overall state is final. Keep pending readings open, and never replace a failed read with zero. Revoking the integration credential stops access to every inbox it covers; it is not a substitute for retiring one inbox.Next steps
API keys
Create and manage scoped credentials.
Postman collections
Try the connection request in the matching API collection.