WhatsAppApi

Add WhatsApp messaging to your app.

Send useful updates, receive customer replies and follow each message through its lifecycle. Use Bird’s published APIs and SDKs to connect WhatsApp to the applications and workflows your customers already rely on.

Set up with your agent:
Cursor
1
2
3
4
5
6
7
8
const msg = await bird.whatsapp.send({
  to: "+15551234567",
  template: {
    slug: "bird_otp",
    components: [{ type: "body", parameters: [{ type: "text", text: "123456" }] }],
  },
});
console.log(msg.id, msg.status);

Choose your SDK or use HTTP directly. These examples are generated from Bird’s published operation.

One clear request

Choose the message for the moment.

Use an approved template for an eligible business-initiated message, or a supported free-form response inside the customer-service window. Keep the sender, recipient, language and content explicit.

Use the published examples

Start from the generated SDK or HTTP example above. Follow the operation’s actual content shape and validation instead of guessing a method from a marketing illustration.

Pace the workload

Use the rate-limit response and a bounded queue. When an application fans out messages, retain a durable record of each intended recipient and request.

A lifecycle you can reason about

Follow acceptance through to the customer’s response.

An accepted API request begins processing. Meta acceptance, delivery and read updates describe later stages; they do not guarantee that a customer completed your business task.

Reconcile with message reads

Consume the relevant webhooks and retrieve message records when investigating a gap. Keep uncertain attempts distinct from confirmed failures.

Keep retry decisions precise

Use the documented request protections and error classification. Do not assume an uncertain provider attempt can be safely repeated indefinitely.

One message, from request to responseExample path
01
Accepted

Bird admits the request and returns its message identity.

02
Processed

The message moves through the sending workflow.

03
Delivered or read

Provider observations update the message record when available.

Thanks! I'll collect it tomorrow.

Handle rejection, failure and missing observations as part of the same integration.

A conversation, not just an endpoint

Carry the useful context into the reply.

Use explicit button or list reply identifiers and your application’s conversation state. A reply can quote an earlier message, but that reference is optional and may be unavailable.

Keep metadata in its place

Outgoing metadata belongs to the outgoing record. Do not assume it is copied onto the customer’s inbound message.

Connect tools with the same permissions

CLI and MCP can help developers operate the channel. They remain subject to the same workspace access, sender ownership and sending rules.

WhatsApp API questions

Does an accepted request mean the message was delivered?
No. API admission, Meta acceptance, delivery and reads are distinct observations. Confirm the relevant message state and the business outcome separately.
Can I send free-form messages at any time?
Free-form replies depend on the customer-service window and the supported content type. Outside that window, use an eligible approved template.
Is there a WhatsApp batch endpoint?
The published message API sends individual messages. Pace application fanout using the documented limits; do not assume an email broadcast endpoint also sends WhatsApp.
How do I match an interactive reply to my application?
Use explicit reply identifiers with your stored conversation or task state. A quoted-message reference can help when available, but outgoing metadata is not automatically inherited by the reply.

Make the first request part of a working integration.

Set up your workspace, use a published example and inspect the response. Connect replies and delivery events before expanding traffic.

Talk to a WhatsApp specialist

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours:

Cursor