Connected Apps
Apps and MCP clients connected with OAuth.
| Method | Path | Summary |
|---|---|---|
GET | /v0/oauth-grants | List Connected Apps |
DELETE | /v0/oauth-grants/{grant_id} | Disconnect App |
List Connected Apps
Apps and MCP clients people in the organization connected with OAuth. Requires an organization-scoped credential with api_key_read; pod, inbox and sandbox credentials get 403.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: none beyond a valid key.
Query parameters
limitintegerpage_tokenstringascendingbooleanResponse
200 A page of grants (application/json)
countintegerRequiredlimitintegernext_page_tokenstringEach item of oauth_grants is a OAuthGrant:
grant_idstringRequiredclient_idstringRequiredclient_namestring | nullRequiredclient_uristring | nullRequiredlogo_uristring | nullRequiredregistration"dynamic" | "metadata_document"Requireduser_idstringRequireduser_emailstring | nullRequiredscopes("inboxes.read" | "inboxes.write" | "messages.read" | "messages.send" | "messages.write" | "webhooks.read" | "webhooks.write" | "domains.read" | "domains.write" | "lists.read" | "lists.write" | "metrics.read" | "pods.read" | "pods.write" | "api_keys.read" | "api_keys.write")[]RequiredresourcestringRequiredpod_idstring | nullRequiredinbox_idstring | nullRequiredcreated_atstring (date-time)Requiredlast_used_atstring (date-time) | nullRequiredexpires_atstring (date-time)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
Disconnect App
Revokes the grant: its refresh token and every access token issued from it stop working immediately (401 on /mcp and /v0). Returns the grant as it was. Requires an organization-scoped credential with api_key_delete.
Authentication: Authorization: Bearer <api key> or the dashboard mm_session cookie. Permission: none beyond a valid key.
Path parameters
grant_idstringRequiredResponse
200 The revoked grant (application/json)
grant_idstringRequiredclient_idstringRequiredclient_namestring | nullRequiredclient_uristring | nullRequiredlogo_uristring | nullRequiredregistration"dynamic" | "metadata_document"Requireduser_idstringRequireduser_emailstring | nullRequiredscopes("inboxes.read" | "inboxes.write" | "messages.read" | "messages.send" | "messages.write" | "webhooks.read" | "webhooks.write" | "domains.read" | "domains.write" | "lists.read" | "lists.write" | "metrics.read" | "pods.read" | "pods.write" | "api_keys.read" | "api_keys.write")[]RequiredresourcestringRequiredpod_idstring | nullRequiredinbox_idstring | nullRequiredcreated_atstring (date-time)Requiredlast_used_atstring (date-time) | nullRequiredexpires_atstring (date-time)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.