Skip to content
simailDocsv0

API reference

Inboxes

List, create, get, update, delete and search inboxes. Inbox IDs are email addresses.

docs.simail.ai/api/inboxes

An inbox object:

{
"inbox_id": "shop-helper@simail.email",
"pod_id": "pod_01JZX3S5V7W9X1Y3Z5A7B9C1D4",
"display_name": "Shop Helper",
"client_id": "shop-helper",
"status": "active",
"metadata": { "team": "support" },
"created_at": "2026-10-18T16:41:07Z",
"updated_at": "2026-10-18T16:41:07Z"
}
FieldNotes
inbox_idthe email address; use it in every path
pod_idthe pod the inbox belongs to
display_namesender name; outbound mail adds ” via SiMail”
client_idyour idempotency handle, unique in the organization
statusactive or paused (paused inboxes reject new mail and cannot send)
metadatayour JSON, up to a few KB; never store secrets here

Guide: Inboxes & pods.

GET/v0/inboxes

Permission inbox_read. Paginated (limit, page_token, ascending); returns { count, limit, next_page_token?, inboxes }. An inbox-scoped key sees only its own inbox.

POST/v0/inboxes

Permission inbox_create, organization- or pod-scoped key. Supports Idempotency-Key.

Body fieldNotes
usernameoptional; 3–32 characters of a-z 0-9 . _ -. A readable random name is generated if omitted.
domainoptional; defaults to your organization’s simail mail domain
display_nameoptional
client_idoptional; the same client_id returns the existing inbox instead of creating another
pod_idoptional; defaults to the key’s pod, or the default pod
metadataoptional JSON object
curl -s https://api.simail.ai/v0/inboxes \
-H "Authorization: Bearer $SIMAIL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: create-shop-helper" \
-d '{ "username": "shop-helper", "display_name": "Shop Helper", "client_id": "shop-helper" }'

200 OK with the inbox object. Publishes inbox.created.

StatuscodeWhen
400validation_errorbad username or field
403missing_permissionno inbox_create, an inbox-scoped key, or reason: "inbox_limit" when the organization has as many inboxes as its plan allows
409address_unavailablethe address is taken, reserved, too similar to a reserved name, or retired
409idempotency_conflictthe key was used with a different body
GET/v0/inboxes/{inbox_id}

Permission inbox_read. 404 not_found if it does not exist or is outside your scope.

PATCH/v0/inboxes/{inbox_id}

Permission inbox_update. Body: display_name and/or metadata (replaces the whole object). Pausing and resuming an inbox is done by a human in the console.

DELETE/v0/inboxes/{inbox_id}

Permission inbox_delete. The inbox stops receiving at once and its content is deleted. The address is retired: your organization can restore it later, but it is never given to anyone else. Keys scoped to the inbox stop working. Publishes inbox.deleted.

GET/v0/inboxes/search?q=

Permission inbox_read. Matches address, display name and client_id. Paginated.

POST /v0/inboxes/{inbox_id}/authorize returns 501 not_implemented; use an inbox-scoped key. Inboxes in a pod are also reachable under /v0/pods/{pod_id}/inboxes.