Documentation
Sign inGet started

bird email send

Usage

Exemple de code
bird email send [flags]

Description

Send an email message
Sending is outbound and irreversible. It reports "accepted", not "delivered". Read the message back with "bird email get" to confirm delivery. Send inline content with --subject and --html/--text, or a stored template with --template.
Build the request from flags, a JSON EmailMessageSendRequest 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.

Examples

Exemple de code
# print the body shape (no credentials needed)
bird email send --example

# the body it prints:
Exemple de code
{
  "category": "transactional",
  "cc": ["manager@acme.com"],
  "from": {
    "email": "noreply@acme.com",
    "name": "Acme Support"
  },
  "headers": {
    "X-Campaign": "spring-2026"
  },
  "html": "<h1>Hi there 👋</h1>",
  "metadata": {
    "user_id": "usr_12345"
  },
  "reply_to": ["support@acme.com"],
  "subject": "Welcome aboard",
  "tags": [
    {
      "name": "category",
      "value": "welcome"
    }
  ],
  "text": "Hi there",
  "to": [
    {
      "email": "delivered@messagebird.dev",
      "name": "Jane Doe"
    }
  ],
  "track_clicks": false
}
Exemple de code
# send a stored template with variable values
bird email send --from hello@bird.com --to alice@bird.com --template welcome-email --parameters '{"first_name":"Alice"}'

# send a stored template in a specific language
bird email send --from hello@bird.com --to alice@bird.com --template welcome-email --language pt-BR

# preview the resolved request without sending
bird email send --body-file body.json --dry-run

Options

Recipients

NameDescription
--fromSender address. Has to be on a domain this workspace has verified
--to <v1,v2,…>Recipient address; repeatable. Accepts bare addresses or RFC 5322 "Name <addr>" form
--cc <v1,v2,…>CC address; repeatable. Accepts bare addresses or RFC 5322 "Name <addr>" form
--bcc <v1,v2,…>BCC address; repeatable. Accepts bare addresses or RFC 5322 "Name <addr>" form
--reply-to <v1,v2,…>Reply-To address; repeatable. Accepts bare addresses or RFC 5322 "Name <addr>" form

Content

NameDescription
--subjectSubject line
--htmlHTML body
--html-fileRead the HTML body from a file
--textPlain-text body
--text-fileRead the plain-text body from a file
--attach <v1,v2,…>Attach a file by path; repeatable

Template

NameDescription
--templateSend by a stored template: its id (emt_…) or slug (mutually exclusive with --subject/--html/--text)
--languageWhich of the template's languages to send, as a BCP-47 tag such as en or pt-BR. Template sends only. Leave it out for the template's default, unless the template requires every send to name one. If the template does not have the language you ask for, its on_missing_language decides whether a close match is sent or the send is refused
--parametersValues for the template's variables, as a JSON object keyed by variable name. Applied to the stored template on a template send, or to the inline subject and body otherwise

Labels & metadata

NameDescription
--header <key=value>Custom header as Key=Value; repeatable
--tag <key=value>Tag as name=value; repeatable
--metadataArbitrary JSON metadata object

Delivery

NameDescription
--categoryWhat kind of email this is, marketing or transactional, which decides how suppressions apply. Defaults to the template's category on a --template send, otherwise marketing
--ip-pool-idIP pool id (ipp_…) to send from
--track-opensTrack opens (default true)
--track-clicksTrack link clicks (default true)
--scheduled-atSend at a future time (RFC 3339, for example 2026-07-10T09:00:00Z). Between 30 seconds and 30 days ahead

Request

NameDescription
--body-fileRead the JSON request body from this file; "-" reads stdin
--examplePrint a complete example request body, then exit
--dry-runPrint the resolved request without sending it, then exit
--idempotency-keyDeduplication key; a retry with the same key won't act twice

Options

NameDescription
--response-schemaPrint the fields this command returns, then exit
NameDescription
bird email cancelCancel a scheduled message
bird email contentGet stored message content
bird email getGet a message
bird email listList messages
bird email recipientsList recipients of a message
bird email send-batchSend a batch of email messages in one call