email-mailboxes

Create a mailbox

Creates a mailbox. The address is local_part@domain. The domain defaults to inbox.ai, Bird's shared mailbox domain, where creating the mailbox claims the address for your organization. It is first come, first served, and reserved to your organization even after the mailbox is deleted. You may instead name one of your own domains. A domain enabled for receiving email delivers to the mailbox directly. A domain this workspace has verified (its status is verified) that is not set up for receiving gives the mailbox a forwarding_address to forward its mail to. If another workspace receives the domain's mail, creation fails with E17009. An omitted local part is generated. On a custom domain, addresses of deleted mailboxes are quarantined for 30 days and remain reserved for your workspace.

post/v1/email/mailboxes

Request

  • Base URL: https://us1.platform.bird.com
  • URL: https://us1.platform.bird.com/v1/email/mailboxes
  • Auth: one of:
    • HTTP bearer
    • API key in cookie bird_session

Headers

Idempotency-Keystring

Client-supplied key. On operations supporting request deduplication, a retained response is replayed for duplicate requests with the same key within the idempotency window (3 hours by default). This protection requires a workspace, organization, or staff-account scope. User-only and unscoped unauthenticated operations, streams, and operations with a separate replay contract do not use this response replay.

On a supported operation, if idempotency protection is unavailable before execution, the API returns 503 IdempotencyUnavailable (E01033) without executing this attempt. Retry with backoff using the same key and request. An operation that takes effect before its response is retained can still execute again on retry.

Two distinct 409 errors signal misuse:

  • request_in_progress (E01004): The same key is currently being processed by a concurrent request. Wait briefly and retry. The lock expires within 30 seconds.
  • idempotency_key_reuse (E01005): The same key has already completed against a different request body or method. Generate a new key.

Recommended key format is <event-type>/<entity-id> (for example welcome-user/usr_abc123).

X-Workspace-Idstring

Workspace context for the request. Required for dashboard authentication and master keys. Workspace keys and access tokens already identify their workspace; send that workspace or omit the header. A different one is rejected.

X-Organization-Idstring

Organization context for the request. Required for dashboard authentication. An API key or access token carries its own organization, so send either that organization or no header at all; a different one is rejected.

Request body

local_partstring

The local part of the mailbox address (the part before @). Letters, digits, dots, underscores, and hyphens. Stored lowercase. On the shared inbox.ai domain, separators must sit between letters or digits. Leading, trailing, and repeated separators are not allowed. Reserved names such as postmaster and abuse are unavailable. Choosing your own local part uses one of your plan's custom-handle allowance slots; generated addresses remain available. Omit this field to generate a random local part.

domainstring

The domain the address lives under. Defaults to inbox.ai, our shared mailbox domain. Creating a mailbox claims the shared address for your organization on a first-come, first-served basis. The address remains reserved to your organization after the mailbox is deleted. You can instead use one of your own domains. On a domain enabled for receiving, mail arrives directly. On a domain this workspace has verified (its status is verified) that is not set up for receiving, the mailbox gets a forwarding_address: forward mail for the address there from your current email provider, with no MX change. If another workspace receives the domain's mail, creation fails with E17009.

display_namestring

Display name used as the sender name on mail from this mailbox.

default_reply_tostring email

Default Reply-To address stamped on mail sent from this mailbox.

receive_policy'open' | 'replies_only' | 'allowlist' | 'drop'

Which inbound mail the mailbox accepts:

  • open: Accepts everything not blocked by a rule.
  • replies_only: Accepts only replies to messages this mailbox has sent. A reply must match a message the mailbox sent. Landing in an existing thread by itself does not count.
  • allowlist: Accepts only senders matching an allow rule.
  • drop: Stores nothing.
retention_tier'30d' | '90d' | '1y'

How long message metadata, extracted text, and attachments are kept. Original bodies and inbound raw MIME are limited to 30 days on every tier. Longer tiers require a plan that includes them.

metadataobject

Your own key/value data to attach to the mailbox. Up to 2 KB. Keys starting with __bird are reserved.

Example request

{
  "local_part": "concierge",
  "display_name": "Acme Concierge",
  "receive_policy": "open",
  "retention_tier": "30d"
}

Response

Mailbox created.

idstring required
addressstring email required

The mailbox's email address. Immutable once created.

forwarding_addressstring email nullable required

An address we generate on our receiving domain when the mailbox is created on a domain not set up for receiving with us. Forward mail for address here from your current email provider, and it lands in this mailbox. Replies still go out from address. Immutable. It stops receiving while the mailbox is deleted, works again with the same value after a restore, and keeps working if you later enable receiving on the domain. null on mailboxes created on the shared domain or on a domain already enabled for receiving.

display_namestring nullable required

Display name used as the sender name on mail from this mailbox. null when unset.

default_reply_tostring email nullable required

Default Reply-To address stamped on mail sent from this mailbox. null when unset.

receive_policy'open' | 'replies_only' | 'allowlist' | 'drop' required

Which inbound mail the mailbox accepts:

  • open: Accepts everything not blocked by a rule.
  • replies_only: Accepts only replies to messages this mailbox has sent. A reply must match a message the mailbox sent. Landing in an existing thread by itself does not count.
  • allowlist: Accepts only senders matching an allow rule. Replies to prior outbound mail are always admitted unless blocked.
  • drop: Stores nothing.
state'active' | 'suspended' required

Lifecycle state. active means the mailbox can send, receive, and expose conversations. suspended pauses sending, conversation reads, and events; inbound mail is retained with the blocked label until you resume it.

channel'email' required

The channel this mailbox receives on. Always email.

inbound_address_idstring required
retention_tier'30d' | '90d' | '1y' required

How long message metadata, extracted text, and attachments are kept. Original bodies and inbound raw MIME are limited to 30 days on every tier.

message_countinteger required

Number of retained messages across all threads.

thread_countinteger required

Number of retained threads.

size_bytesinteger required

Stored bytes across the mailbox's retained messages: subject, preview, extracted text, and attachment bytes. Message bodies and raw MIME expire after 30 days and do not count. Maintained with each message written or deleted, so the value is current; messages stored before the counter existed are not counted.

unread_thread_countinteger nullable

Number of threads with unread messages in this mailbox, excluding trash. null on create/update responses.

metadataobject required

Your own key/value data attached to the mailbox. Up to 2 KB. Keys starting with __bird are reserved.

local_part_generatedboolean required

Whether we generated the local part of the address. false means a custom handle was chosen at creation. On the shared inbox.ai domain a custom handle counts against your plan's custom-handle allowance.

created_atstring date-time required

When the mailbox was created.

updated_atstring date-time required

When the mailbox was last updated.

deleted_atstring date-time nullable

When the mailbox was deleted, or null if active. Deletion stops receiving; restore is available for 30 days unless permanent erasure has started.

Example response

{
  "id": "mbx_01krdgeqcxet5s7t44vh8rt9mg",
  "address": "concierge@inbox.ai",
  "forwarding_address": "k7q2mzxw4h6p5ra3@eu1.inbound.bird.com",
  "display_name": "Acme Concierge",
  "owner": {
    "id": "ws_01krdgeqcxet5s7t44vh8rt9mg"
  },
  "inbound_address_id": "ina_01krdgeqcxet5s7t44vh8rt9mg"
}

Changes

No recorded changes to this operation across all 2 revisions of this API.