WhatsApp Business Platform & API

# WhatsApp API. Turn messages into momentum.

Send eligible templates, receive supported replies and follow delivery from your application. Connect each conversation to the team and business system that can complete the customer’s request.

[Start now](/dashboard/signup?returnTo=%2Fdashboard%2Fw%2Fwhatsapp%2Fonboarding)

[Talk to sales](/demo?product=whatsapp)

BIRD / WHATSAPP

Illustrative experience

01 Invite a response

02 Make a choice

03 Bring in your team

Replay ↺

Resume

Pause

Today

Hands at work in a pottery studio

A little room for creativity.

Hi Alex, join us for a studio visit this Friday. Make a little time for something you love.

View visit times

Friday at 14:00. Can I bring a friend?

Mia: The booking system confirmed two spaces. See you Friday!

Mia: I’ll check two spaces with the studio. Your visit is still a request.

Studio visit.pdf

1 page · Illustrative confirmation

Bird / Conversations

STUDIO WORKSPACE

CUSTOMER JOURNEY

### An invitation that belongs.

### A reply with possibilities.

### Same thread. A real answer.

Booking confirmed in this illustration

Approved invitation

Reply received

Awaiting the booking system

AL

Alex Lee

Customer · Studio member

WhatsApp

Audience

Studio members

Template

studio_invitation · Approved

Preference

WhatsApp updates · Opted in

Visit requested

Friday · 14:00 · Two people

Next step

Studio recorded FN–1042

Check two studio spaces

Permission and an approved template start the invitation. The customer’s reply opens the service window. Mia checks availability with the studio before confirming a visit.

Illustrate the studio’s confirmation

Customer context attached · FN–1042

Example content and data. No message or booking is created. Replay clears this illustration; pause and reduced motion preserve its selected state.

The invitation, customer reply and studio check are separate steps. Explore setup, pricing and guides below without JavaScript.

Companies that trust Bird across their communications.

- [Airwallex](/customers/airwallex)
- Uber
- [Zillow](/customers/zillow)
- [Glovo](/customers/glovo)
- PayPal
- Adobe

4× — Faster partner onboarding with WhatsApp

Initial test in some countries with Bird Flow Builder, reported by Glovo.

[Read Glovo’s story](/customers/glovo)

Glovo

A connection worth building on.

CUSTOMER EXPERIENCE

## Onboarding, inside the conversation.

Glovo’s team used WhatsApp and Flow Builder to guide partners through onboarding. The story explains how the team tested the approach before expanding the rollout to more countries.

[Read Glovo’s story ↗](/customers/glovo)

The story does not name the test dates, countries or measurement method; this is not a WhatsApp-only or universal result.

Building your first integration?

[Explore the request and delivery lifecycle →](#sending-lifecycle)

[Choose a business messaging workflow →](/whatsapp)

WHATSAPP / TRY IT YOURSELF

## From a campaign to a real conversation.

Explore a template invitation, a customer reply, and a handoff. See how the service window and your business workflow fit together.

Interactive examples require JavaScript. Product details, setup choices, and guides remain available below.

FIELDNOTES / WHATSAPP

Bird-managed authentication example · bird_otp · One-way

Workspace-authored invitation · studio_invitation · Two-way branded sender

More than 24 hours ago

Today

Your verification code is 123456.

Hi Alex. There’s a little room for creativity this Friday. Would you like to visit the studio?

Friday 14:00

Ask the team

The studio confirmed your visit. Your booking reference is FN–1042.

That time has just filled up. We can check another time with you.

Mia: I have your request here. Let’s check the studio together.

Explore a conversation path

Conversation path

Approved outbound invitation

Customer-initiated service

Expired service window

Sending number

Connected branded two-way number

Bird-managed one-way template number

Template eligibility

Approved category and language; recipient eligible

Language approval pending

Recipient permission missing

Follow this path ↗

Start again

CONVERSATION / CONTEXT

### An invitation, with permission.

Before the invitation

Connected sender, consent, category, language and approved template.

After the customer replies

A 24-hour customer-service window; supported button/list choices are requests.

At the useful next step

Your booking system confirms availability; Bird message state is separate.

Choose a path. No message or booking is created.

This path is not eligible. A Bird-managed number supports one-way templates; two-way service needs a connected branded number. An outbound template must be approved for its category, language and recipient.

Illustrative 202 Accepted: Bird has accepted the template request. Delivery remains unknown. FN–1042 has no booking.

A delivery event was observed in this illustration. Wait for the customer to reply before offering service choices. Delivery and read signals do not confirm a booking.

The customer has replied and opened the 24-hour service window. A supported button returns a stable choice to your application.

The selected time is a request. Correlate the customer and inbound message with FN–1042, then check the studio’s current availability.

Illustrative booking system result: FN–1042 is confirmed for the selected time. The business result is separate from the WhatsApp message state.

That time is no longer available. No booking was made. Offer a current alternative or bring in the team.

The booking service has not returned a result. Keep FN–1042 pending and reconcile this request before retrying; do not tell the customer it is confirmed.

The service window expired before the reply. Preserve the request, check an eligible approved template, and wait for a new customer reply before continuing service messages.

Mia has the conversation and FN–1042 context. Automated confirmation is paused; the team checks the request with the studio.

Observe a delivery event

Illustrate the customer’s reply

This one-way sender cannot receive the reply. Connect a branded number for this conversation.

Booking system: confirm

Try an unavailable time

Try a missing booking result

Let the service window expire

Request Friday 16:00 instead

Reconcile original request: no booking found

Review the approved-template fallback

Hand over to Mia

### Inspect the supported message and business boundaries

The template request uses to and template.slug with its approved language and components. Supply your connected from number for a workspace-authored template. A Bird-managed bird_ template chooses its own sender, so omit from. Use the actual approved values from your account.

The supported reply-button payload returns interactive_reply.button.slug. Correlate that stable choice with the customer and original request before asking the booking service to act.

Flows and native checkout need separately verified integration scope. This example uses supported choices and performs no payment, booking or live send.

An unavailable time keeps the booking unchanged. A missing result remains pending until the original request is reconciled. An expired window requires an eligible template and a new reply.

[Inspect the current send and status contract ↗](/docs/guides/whatsapp/sending-whatsapp)

[Read the supported button payload ↗](/docs/guides/whatsapp/message-types/interactive/reply-buttons)

Interactive illustration · Fictional customer and results · No messages are sent

WHAT IT MEANS FOR YOUR CUSTOMER

## A campaign starts it. A conversation carries it forward.

Reach people in a place they already use. Help them choose, answer their questions, and bring your team in when the conversation needs a person.

The weekend collection

Explore what’s new

01 / For marketing

### Give the invitation somewhere to go.

Pair a relevant template with a clear response, so interest can become a useful conversation.

Order FN–1042

I’d like to change my delivery.

02 / For service

### Pick up with the details in view.

Let the customer explain what they need once. Carry the request into the team workflow that can resolve it.

Studio appointment

Friday · 14:00

03 / For your business

### Connect the answer to the action.

Bring structured choices into your application, then confirm the booking or order in the system that owns it.

FIND YOUR WAY IN

## One channel. Different teams. A shared customer.

Reach your audience

### Start with an invitation.

Prepare permission, a business identity, and an approved template. Build the campaign around the response you want to make possible.

[Prepare a template ↗](/docs/knowledge-base/whatsapp/template-guidelines)

Help a customer

### Continue the conversation.

Design the service workflow, customer-service window, and human handoff together. Keep the request and the answer in context.

[Plan the team workflow ↗](#customer-outcome)

### The details behind your setup

#### For marketing

Begin with permission and an approved template. Category, destination, and the service window affect the price.

#### For service

A customer reply opens a 24-hour service window. Keep conversation context when a human needs to help.

#### For developers

Connect your business identity and number, receive events, and let your application own booking and order confirmation.

### Explore the supported product paths

[Campaigns with an approved template ↗](/products/whatsapp/marketing)

[Two-way service conversations ↗](/products/whatsapp/two-way)

[The WhatsApp API ↗](/whatsapp-api#sending-lifecycle)

[Branded and Bird-managed numbers ↗](/products/whatsapp/numbers)

[Build a WhatsApp Flow ↗](/products/whatsapp/flows)

[Commerce and hosted checkout ↗](/products/whatsapp/commerce)

[Calling eligibility and supported routing ↗](/products/whatsapp/calling)

[Opt-in group conversations ↗](/products/whatsapp/groups)

[AI with authorized actions and human help ↗](/products/whatsapp/ai-agents)

[Delivery, replies and business outcomes ↗](/products/whatsapp/analytics)

[Click-to-WhatsApp attribution ↗](/products/whatsapp/click-to-whatsapp)

[Compare providers for your workload ↗](/products/whatsapp/compare)

Confirm the channel, account and integration requirements for the experience you want to launch.

READY WHEN YOU ARE

## Your number. Your first conversation.

[Start now](/dashboard/signup?returnTo=%2Fdashboard%2Fw%2Fwhatsapp%2Fonboarding)

[Talk to sales](/demo?product=whatsapp)

01

[Connect your business ↗ Prepare the business identity and number for your channel.](/docs/knowledge-base/whatsapp/business-verification)

02

[Prepare the message ↗ Choose the template and category that fit the customer moment.](/docs/knowledge-base/whatsapp/template-guidelines)

03

[Send your first message ↗ Follow the integration guide and receive the response.](/docs/guides/whatsapp/sending-whatsapp)

BUILD WITH WHATSAPP

## Build the conversation. Connect the outcome.

This authentication-template example sends a code supplied by your application. Use the approved template and parameters for your recipient; keep credentials server-side. Acceptance is followed by asynchronous delivery events.

[Open the implementation guide →](/docs/guides/whatsapp/sending-whatsapp)

Preview an eligible approved template with the CLI before sending. CLI and MCP can send the message and inspect its events; check inbound events for the recipient’s reply.

[Preview the message ↗](/docs/cli/reference/whatsapp-preview)

[CLI send reference ↗](/docs/cli/reference/whatsapp-send)

[Connect an MCP client ↗](/ai/mcp-client)

For code generation, expiry and checking, use Bird Verify.

[Explore verification](/verification-api)

**Node.js**: `npm install @messagebird/sdk`

```typescript
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);
```

Examples: [TypeScript](/id-id/whatsapp-api.ts.md) · [Python](/id-id/whatsapp-api.py.md) · [Go](/id-id/whatsapp-api.go.md) · [PHP](/id-id/whatsapp-api.php.md) · [CLI](/id-id/whatsapp-api.cli.md) · [cURL](/id-id/whatsapp-api.curl.md)

## Set up with your agent

[Read the agent setup guide](/docs/ai/set-up-your-agent)

Copy this prompt into your coding agent:

```text
Bird connects customer communications, data and automation. Help me build with Bird using my coding agent.
1. Read https://bird.com/docs/ai/set-up-your-agent.md and follow its setup workflow for this client. Use an existing connected Bird MCP server or signed-in CLI when available.
2. Read the product guide for the task I want to complete and inspect my existing integration. Identify the workspace, available operations and required setup.
3. Help me complete a first example for the product and destination I choose. Follow the operation through to its actual result, explain any uncertainty, and help me choose the next step.

First task: Inspect the documented WhatsApp send operation, connected sender and approved template. Prepare a message to a test recipient I control, and ask before sending it. Distinguish acceptance, delivery and the customer outcome.

Use this Bird page as the starting context: https://bird.com/whatsapp-api
Read its Markdown alternative and linked guides. Keep the first example relevant to this page and the customer outcome I choose. Preserve the supplied campaign context when following Bird signup or sales links.
```

A WORKED WHATSAPP DECISION

## Build the request. Keep the identity.

Choose a permitted template or service message, inspect acceptance and later observations, and reconcile an unknown response with the same logical-send key.

The request worksheet previews one supported text or template content arm with fictional sender/recipient resources. Use the SDK and HTTP examples below to build your integration.

Known open service window or exact approved template entry and eligible recipient are required. Empty content, blocked eligibility or unknown evidence prevents illustrative acceptance. Inputs are locked once an illustrative logical send begins.

Observe durable 202 acceptance or a lost acceptance response. Preserve the same request intent and Idempotency-Key; replay returns the original fictional message identity instead of a duplicate send. Start a fresh local example only through the explicit reset.

Observe sent, delivered or failed, and a separate read event. A service window can expire between admission and dispatch, so 202 is not proof of final dispatch permission. The case remains unresolved until its owning system confirms an action. No network send or retry occurs.

[Read the maintained guide](/docs/guides/whatsapp/sending-whatsapp)

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.

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.

## 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.

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 response Example 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.

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.

THE COMPLETE BIRD PLATFORM

## A conversation with a bigger picture.

Email can start the relationship. WhatsApp can answer the question. Voice can resolve the difficult moment. Build the experience across Bird as your business grows.

Can we move booking FN–1042 to Friday afternoon?

I’ll check with the studio. Your booking details are here.

### 01 WhatsApp

Alex chooses a studio visit and asks a question.

ILLUSTRATIVE CALL · FN–1042

AL

Alex Lee

Studio visits · Connected to Mia

### [02 Voice ↗](/voice)

A complex request can move to a person, with the context your app provides. Arrange the appropriate voice path; WhatsApp Business Calling cannot bridge to PSTN.

BOOKING FN–1042

Your studio visit.

A sunlit studio courtyard

Illustrative confirmed booking · Friday, 14:00

### [03 Email ↗](/email-api)

Your booking system confirms FN–1042 and sends the details.

BUILD YOUR BIRD SETUP

### A useful next connection.

[Apple Messages · Another familiar place ↗](/apple-messages-for-business)

[Voice · When a call helps ↗](/voice)

[Verify · Verify a customer ↗](/verification-api)

[Email marketing · Build the campaign around them ↗](/email-marketing)

Let a WhatsApp conversation become an email confirmation and a timely SMS reminder. Your application carries the booking and permissions across channels.

[Plan your complete Bird setup ↗](/demo?product=whatsapp)

LEARN / BUILD / OPERATE

## Go further with WhatsApp.

[FIELD GUIDE Build a WhatsApp customer-service workflow. Connect a booking request to a confirmed result, useful human handoff and recovery when context is missing. Read the service guide →](/guides/build-a-whatsapp-customer-service-workflow)

[01 Send a WhatsApp message Templates, messages, and the first useful interaction. ↗](/docs/guides/whatsapp/sending-whatsapp)

[02 Understand the service window When free-form service replies are available. ↗](/docs/knowledge-base/whatsapp/customer-service-window)

[03 Prepare your templates Prepare the content and category for review. ↗](/docs/knowledge-base/whatsapp/template-guidelines)

[04 Business verification Identity and onboarding requirements. ↗](/docs/knowledge-base/whatsapp/business-verification)

[05 WhatsApp resources Find the next setup, implementation or diagnosis task. ↗](/whatsapp/resources)

[06 Launch readiness Check the sender, permission and a controlled first exchange. ↗](/products/whatsapp/getting-started)

[07 Template builder Review category and per-language approval. ↗](/products/whatsapp/templates)

[08 Conversation handoff field guide Carry the customer request into a team workflow. ↗](#customer-outcome)

WHATSAPP / PRICING

## A conversation mix. A plan that fits.

Plan around destinations, message categories, and the service window. Our sales team can scope the full campaign and support workflow with you.

[Start now](/dashboard/signup?returnTo=%2Fdashboard%2Fw%2Fwhatsapp%2Fonboarding)

[Talk to sales](/demo?product=whatsapp)

[See WhatsApp rates ↗](/products/whatsapp/pricing)

YOUR WHATSAPP SETUP

Markets + messages

The rate depends on where and how you message.

Categories

Review the applicable template category and destination.

Service window

Use the current rate card for the customer-service window.

The whole journey

Include the Email and SMS around your conversations.

## WhatsApp, answered.

### Can I send any message at any time?

WhatsApp has consent, template, and customer-service-window requirements. Plan your message category and template approvals before a campaign.

### Does a Flow complete a booking?

A Flow can collect information through a separately verified integration. The current direct send API supports button and list choices; your booking system still checks availability and confirms the reservation.

### What changes after the customer replies?

A customer reply opens the customer-service window for service messages. Outside that window, use the appropriate approved template and consult the current category and destination rates.

### How do I get started or speak to sales?

Follow the setup path and speak to our team about your use case, migration and supported account scope.

YOUR NEXT CONNECTION

## Give every conversation somewhere to go.

[Start now](/dashboard/signup?returnTo=%2Fdashboard%2Fw%2Fwhatsapp%2Fonboarding)

[Talk to sales](/demo?product=whatsapp)

[Explore the whole Bird platform ↗](/products)



## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [Send WhatsApp with Next.js](/docs/get-started/quickstarts/typescript/next-js/whatsapp) (docs)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
