Mailboxes API
Create, list, update, and delete mailboxes.
GET /v1/mailboxes
GET/v1/mailboxes
List all mailboxes. Scoped keys only see mailboxes in their scope.
response — 200 OK
{
"mailboxes": [
{
"id": "a1b2c3d4-5678-4def-abcd-111111111111",
"address": "hello",
"fullAddress": "myagent@robotomail.co",
"displayName": "My Agent",
"dailySendCount": 5,
"dailySendLimit": 100,
"monthlySendCount": 120,
"monthlySendLimit": 5000,
"receivedThisMonth": 42,
"status": "ACTIVE",
"createdAt": "2026-03-11T00:00:00.000Z"
}
]
}receivedThisMonth is the per-mailbox inbound count for the current calendar month (UTC). The account-level monthly cap is summed across all mailboxes — see GET /v1/account for the account-wide total and limit.
POST /v1/mailboxes
POST/v1/mailboxes
Create a new mailbox. Requires full-access key.
Request body
| Name | Type | Description |
|---|---|---|
| address* | string | Local part (1-64 chars, alphanumeric/._-) |
| displayName | string | Friendly name (max 255 chars) |
| domainId | string | UUID of a verified custom domain |
Without domainId, the mailbox uses your platform email domain. Custom domains require the paid plan and a verified domain.
Errors
400— Invalid address format or domain not verified403— Plan limit exceeded (free: 3 mailboxes) or custom domain on free plan404— Domain not found
GET /v1/mailboxes/:id
GET/v1/mailboxes/:id
Get a single mailbox by ID. Returns the full mailbox object.
PATCH /v1/mailboxes/:id
PATCH/v1/mailboxes/:id
Update mailbox settings. Works with scoped keys if the mailbox is in scope.
Request body
| Name | Type | Description |
|---|---|---|
| displayName | string | Updated display name |
| status | "ACTIVE" | "PAUSED" | Pause or reactivate the mailbox |
Errors
403— Free plan: cannot reactivate custom-domain mailbox or exceed 3 active mailboxes
DELETE /v1/mailboxes/:id
DELETE/v1/mailboxes/:id
Delete a mailbox. Requires full-access key. The underlying Stalwart account is also removed.
response — 200 OK
{ "deleted": true }