bird email mailboxes compose <mailbox-id> [flags]
Send a new message from a mailbox
Sends from the mailbox's own address and starts a new conversation. Replies thread back into it automatically. To reply within an existing conversation, use bird email threads messages reply instead. An unset --reply-to, --category, --tag or --metadata falls back to the "email" defaults in the CLI config file; the sender and delivery defaults do not apply, because a compose sends as the mailbox.
Build the request from flags, a JSON EmailMailboxComposeRequest body via --body-file ("-" reads
stdin), or both — a flag overrides the matching body field. Run --example to
print a ready-to-edit body, or --dry-run to print the resolved request without
sending it.
# print the body shape (no credentials needed)
bird email mailboxes compose --example
# the body it prints:
{
"subject": "Your quote",
"text": "Hi, here is the quote you asked for.",
"to": ["delivered@messagebird.dev"]
}
# preview the resolved request without sending
bird email mailboxes compose <mailbox-id> --to alice@example.com --subject "Hi" --text "Hello" --dry-run
| Name | Description |
|---|
--to <value>… | Recipient address; repeatable. Accepts bare addresses or RFC 5322 "Name <addr>" form |
--cc <value>… | CC recipient; repeatable. Accepts bare addresses or RFC 5322 "Name <addr>" form |
--bcc <value>… | BCC recipient; repeatable. Accepts bare addresses or RFC 5322 "Name <addr>" form |
--reply-to <value>… | Reply-To address; repeatable. Defaults to the mailbox's own default-reply-to |
| Name | Description |
|---|
--subject | Subject line |
--html | HTML body |
--text | Plain-text body |
| Name | Description |
|---|
--tag <key=value> | Tag as name=value; repeatable |
--metadata | Arbitrary JSON metadata object |
| Name | Description |
|---|
--category | Suppression policy: marketing or transactional; defaults to transactional |
| Name | Description |
|---|
--body-file | Read the JSON request body from this file; "-" reads stdin |
--example | Print a complete example request body, then exit |
--dry-run | Print the resolved request without sending it, then exit |
--idempotency-key | Deduplication key; a retry with the same key won't act twice |
| Name | Description |
|---|
--response-schema | Print the fields this command returns, then exit |