Documentation
Sign inGet started

bird whatsapp send

Usage

Code example
bird whatsapp send [flags]

Description

Send a WhatsApp message to one recipient
Sending is outbound and irreversible: it reports "accepted", not "delivered". Read the message back with "bird whatsapp get" to confirm delivery. Carry exactly one kind of content: a template, or free-form text, image, video, audio, sticker, document or location. Free-form content is deliverable only inside an open 24-hour customer service window. A Bird-managed template picks its own sender and omits --from; every other send, free-form content or a template your workspace authored, requires it.
Build the request from flags, a JSON WhatsAppMessageSendRequest 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

Code example
# print the body shape (no credentials needed)
bird whatsapp send --example

# the body it prints:
Code example
{
  "template": {
    "components": [
      {
        "parameters": [
          {
            "text": "1234",
            "type": "text"
          }
        ],
        "type": "body"
      },
      {
        "parameters": [
          {
            "text": "1234",
            "type": "text"
          }
        ],
        "type": "button"
      }
    ],
    "language": "en",
    "slug": "bird_otp"
  },
  "to": "+31612345678"
}
Code example
# send a template with body placeholders
bird whatsapp send --to +15551234567 --template bird_order_confirmation --language en --components '[{"type":"body","parameters":[{"type":"text","name":"ref","text":"ORD-1042"},{"type":"text","name":"amount","text":"US$ 99.99"}]}]'

# reply with free text inside an open customer service window
bird whatsapp send --to +15551234567 --from +31612340001 --text 'Your driver is 2 minutes away.'

# send a document with a caption
bird whatsapp send --to +15551234567 --from +31612340001 --document https://cdn.example.com/invoices/a1b2c3.pdf --filename invoice-a1b2c3.pdf --caption 'Your invoice'

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

Options

Routing

NameDescription
--toRecipient phone number in E.164 format (e.g. +15551234567), or their business-scoped user ID (e.g. US.13491208655302741918)
--fromSender in E.164 format. Required for free-form content and a template your workspace authored; omit it for a Bird-managed template, which picks its own sender

Template

NameDescription
--templateThe template to send, by its slug (e.g. bird_otp)
--template-idThe template to send, by its id (wat_…); alternative to --template
--languageLanguage code of the template variant to send (e.g. en or pt-BR); omit when the template has a single language
--componentsThe values that fill the template's placeholders, as a JSON array (e.g. body/header/button component objects)

Content

NameDescription
--textFree-text message body, up to 4096 characters
--preview-urlRender a link preview for the first URL in --text
--imagePublic https URL of an image to send
--videoPublic https URL of a video to send
--audioPublic https URL of an audio file to send
--stickerPublic https URL of a sticker to send
--documentPublic https URL of a document to send
--captionCaption shown with --image, --video or --document
--filenameFilename shown for --document
--voiceRender --audio as a voice note rather than an audio file
--latitudeLatitude in decimal degrees; send a location with --longitude
--longitudeLongitude in decimal degrees; send a location with --latitude
--location-namePlace name shown on the location
--location-addressStreet address shown beneath --location-name; ignored without it

Labels & metadata

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

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 whatsapp getGet a WhatsApp message
bird whatsapp listList WhatsApp messages
bird whatsapp list-eventsList events for a WhatsApp message