Inboxes
Inboxes. inbox_id is the email address.
| Method | Path | Summary |
|---|---|---|
GET | /v0/inboxes | List Inboxes |
POST | /v0/inboxes | Create Inbox |
GET | /v0/inboxes/availability | Check Inbox Availability |
GET | /v0/inboxes/search | Search Inboxes |
GET | /v0/inboxes/{inbox_id} | Get Inbox |
PATCH | /v0/inboxes/{inbox_id} | Update Inbox |
DELETE | /v0/inboxes/{inbox_id} | Delete Inbox |
GET | /v0/pods/{pod_id}/inboxes | List Inboxes in Pod |
POST | /v0/pods/{pod_id}/inboxes | Create Inbox in Pod |
GET | /v0/pods/{pod_id}/inboxes/availability | Check Inbox Availability in Pod |
GET | /v0/pods/{pod_id}/inboxes/search | Search Inboxes in Pod |
GET | /v0/pods/{pod_id}/inboxes/{inbox_id} | Get Inbox in Pod |
PATCH | /v0/pods/{pod_id}/inboxes/{inbox_id} | Update Inbox in Pod |
DELETE | /v0/pods/{pod_id}/inboxes/{inbox_id} | Delete Inbox in Pod |
List Inboxes
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_read.
Query parameters
limitintegerpage_tokenstringascendingbooleanephemeralbooleanResponse
200 A page of inboxes (application/json)
countintegerRequiredlimitintegernext_page_tokenstringEach item of inboxes is a Inbox:
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Create Inbox
ephemeral: true without ttl_seconds creates an inbox with a one hour TTL (3600 seconds).
An organization can have at most 1000 inboxes on the shared domain (deployment setting); past that the API returns 403. Inbox-scoped credentials cannot create inboxes (403).
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_create.
Request body
Content type: application/json.
usernamestringdomainstringdisplay_namestringclient_idstringstatus"active" | "paused"metadataRecord<string, string | number | boolean>pod_idstringephemeralbooleanttl_secondsinteger | nullResponse
200 An inbox with this client_id already exists; it is returned unchanged. (application/json)
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"Required201 Created (application/json)
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
409 | Conflicts with an existing resource. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Check Inbox Availability
Whether username@domain can be created by this organization now. Never a 4xx for a bad name: reason says why it is not available.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_read.
Query parameters
usernamestringdomainstringResponse
200 Availability of the address (application/json)
availablebooleanRequiredemailstringRequiredreason"invalid_username" | "domain_not_found" | "taken"messagestringErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Search Inboxes
Inboxes whose address or display name contains q (case-insensitive), newest first. Searches the newest 500 inboxes in scope; the response has truncated: true when there were more. Not ranked by relevance.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_read.
Query parameters
qstringRequiredlimitintegerpage_tokenstringResponse
200 A page of matching inboxes (application/json)
countintegerRequiredlimitintegernext_page_tokenstringtruncatedtrueEach item of inboxes is a Inbox:
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Get Inbox
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_read.
Path parameters
inbox_idstringRequiredResponse
200 The inbox (application/json)
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Update Inbox
Fields you omit are unchanged. To pause an inbox, set status to paused; set it back to active to resume.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_update.
Path parameters
inbox_idstringRequiredRequest body
Content type: application/json.
display_namestringstatus"active" | "paused"metadata(Record<string, string | number | boolean | null>) | nullttl_secondsinteger | nullephemeralbooleanResponse
200 The updated inbox (application/json)
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Delete Inbox
Deletes the inbox with its messages, attachments, threads and drafts. Inbox-scoped credentials cannot delete their own inbox (403).
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_delete.
Path parameters
inbox_idstringRequiredResponse
200 Deleted (application/json)
oktrueRequiredErrors
| Status | Meaning |
|---|---|
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
List Inboxes in Pod
Same as List Inboxes (GET /v0/inboxes), limited to the pod.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_read.
Path parameters
pod_idstringRequiredQuery parameters
limitintegerpage_tokenstringascendingbooleanephemeralbooleanResponse
200 A page of inboxes (application/json)
countintegerRequiredlimitintegernext_page_tokenstringEach item of inboxes is a Inbox:
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Create Inbox in Pod
Same as Create Inbox (POST /v0/inboxes), limited to the pod.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_create.
Path parameters
pod_idstringRequiredRequest body
Content type: application/json.
usernamestringdomainstringdisplay_namestringclient_idstringstatus"active" | "paused"metadataRecord<string, string | number | boolean>pod_idstringephemeralbooleanttl_secondsinteger | nullResponse
200 An inbox with this client_id already exists; it is returned unchanged. (application/json)
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"Required201 Created (application/json)
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
409 | Conflicts with an existing resource. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Check Inbox Availability in Pod
Same as Check Inbox Availability (GET /v0/inboxes/availability), limited to the pod.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_read.
Path parameters
pod_idstringRequiredQuery parameters
usernamestringdomainstringResponse
200 Availability of the address (application/json)
availablebooleanRequiredemailstringRequiredreason"invalid_username" | "domain_not_found" | "taken"messagestringErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Search Inboxes in Pod
Same as Search Inboxes (GET /v0/inboxes/search), limited to the pod.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_read.
Path parameters
pod_idstringRequiredQuery parameters
qstringRequiredlimitintegerpage_tokenstringResponse
200 A page of matching inboxes (application/json)
countintegerRequiredlimitintegernext_page_tokenstringtruncatedtrueEach item of inboxes is a Inbox:
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Get Inbox in Pod
Same as Get Inbox (GET /v0/inboxes/{inbox_id}), limited to the pod.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_read.
Path parameters
pod_idstringRequiredinbox_idstringRequiredResponse
200 The inbox (application/json)
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Update Inbox in Pod
Same as Update Inbox (PATCH /v0/inboxes/{inbox_id}), limited to the pod.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_update.
Path parameters
pod_idstringRequiredinbox_idstringRequiredRequest body
Content type: application/json.
display_namestringstatus"active" | "paused"metadata(Record<string, string | number | boolean | null>) | nullttl_secondsinteger | nullephemeralbooleanResponse
200 The updated inbox (application/json)
pod_idstringRequiredinbox_idstringRequiredemailstringRequireddisplay_namestringclient_idstringstatus"active" | "paused"RequiredmetadataRecord<string, string | number | boolean>updated_atstring (date-time)Requiredcreated_atstring (date-time)Requiredorganization_idstringRequiredephemeralbooleanRequiredttl_secondsintegerexpires_atstring (date-time)created_by"api" | "catch_all" | "dashboard" | "agent"RequiredErrors
| Status | Meaning |
|---|---|
400 | Invalid request: error.type is validation and error.param names the field. |
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
500 | Unexpected server error. |
Error bodies use the error envelope.
Example
Delete Inbox in Pod
Same as Delete Inbox (DELETE /v0/inboxes/{inbox_id}), limited to the pod.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: inbox_delete.
Path parameters
pod_idstringRequiredinbox_idstringRequiredResponse
200 Deleted (application/json)
oktrueRequiredErrors
| Status | Meaning |
|---|---|
401 | Missing, invalid, expired or revoked credential. |
403 | The credential lacks the permission or scope for this request (error.type forbidden), or MachineMail suspended the organization or its sending (account_suspended: error.message says what still works; do not retry or re-register). |
404 | Not found. Also returned for resources outside the credential scope. |
500 | Unexpected server error. |
Error bodies use the error envelope.