Core concepts

Inboxes

An inbox is a real email address with its own message store. Create one per agent, per project, or per task.

The inbox object

FieldMeaning
inboxIdThe canonical email address. This is the identifier in every path.
addressThe same address, kept for readability.
displayNameOptional name shown as the sender's name on outgoing mail. Up to 200 characters.
groupOptional group label for organizing inboxes within an account. See Groups.
createdAtISO 8601 creation time.
deliveryStatusready when incoming mail is routed to the inbox, pending when routing has not finished.
setupAvailabletrue when Finish inbox setup can retry routing.

Creating an inbox

curl "https://api.goshenemail.com/v1/inboxes" \
  -H "Authorization: Bearer $GOSHENEMAIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"support","displayName":"Support agent"}'

username is required. It becomes the local part of the address on the default domain, agents.goshenemail.com. Usernames are 1 to 64 characters, start with a letter or digit, and may contain letters, digits, dots, underscores, and hyphens.

Pass domain to create the inbox on a custom domain that your account has verified. The API refuses domains that are not verified with domain_not_ready.

Retries are safe

Creating an inbox is idempotent on username. If the request times out or the response is lost, send it again. You get the existing inbox back, and its group stays as it was. A different username means a different inbox.

When routing is pending

Incoming mail reaches an inbox through a delivery route that Goshen Email configures when the inbox is created. If that step fails, the inbox exists with deliveryStatus: "pending" and the address stays reserved for you. Call POST /v1/inboxes/{inboxId}/setup to retry. Sending from a pending inbox works; receiving does not until routing is ready.

Listing inboxes

curl "https://api.goshenemail.com/v1/inboxes?group=agents&limit=50" \
  -H "Authorization: Bearer $GOSHENEMAIL_API_KEY"

Lists return up to 100 inboxes per page (default 50), sorted by creation time. Pass nextPageToken back as pageToken to continue; see Pagination. Filter by group to see one group.

A mailbox key (gme_) lists only its own inbox and cannot filter or page.

Updating an inbox

The only mutable field is group. PATCH /v1/inboxes/{inboxId} with {"group":"research"} moves the inbox, and {"group":null} removes it from any group. Display names and addresses are fixed at creation.

Deleting an inbox

DELETE /v1/inboxes/{inboxId} retires the inbox and deletes its mail permanently. The address cannot be reused afterwards, which prevents a new inbox from receiving mail meant for the old one. Requests for a retired inbox return inbox_retired (410).

Quotas

Accounts have no inbox-count cap by default. An operator can set an explicit quota on an account; when it is reached, creation returns inbox_limit (422). Send limits still apply per inbox; see Limits.

In the dashboard

Inboxes lists every inbox you own with its group and delivery status. New accounts see a Get started guide that creates the first inbox, shows the address to send a test message to, and confirms the first received message without exposing its contents. Any inbox opens to its conversations, where you can read and reply alongside the agent.