> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.brevo.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.brevo.com/_mcp/server.

# WhatsApp messages

Send transactional WhatsApp messages such as order confirmations, status updates, and password reset links.

## Activate WhatsApp

Before using WhatsApp APIs, activate the feature in your Brevo account:

### Enable WhatsApp

Log in to your Brevo account and navigate to the top navigation bar. Click "Add more apps" to open **Apps and Integration**.

### Activate feature

Under Apps, scroll down and enable the WhatsApp feature. WhatsApp appears in your Brevo dashboard after activation.

### Set up business account

After activating WhatsApp, sign up for Facebook and WhatsApp Business accounts. See [Getting started with WhatsApp campaigns in Brevo](https://help.brevo.com/hc/en-us/articles/4417084910866-Part-1-Link-your-WhatsApp-Business-account-to-Sendinblue#Before_you_start) for setup instructions.

## Send a WhatsApp message

Send a transactional WhatsApp message using a template or plain text.

**Endpoint:** `POST /v3/whatsapp/sendMessage`

### Using a template

For the first message, use a `templateId`. Create templates in your Brevo account:

1. Go to the WhatsApp campaigns dashboard
2. Click "Create a campaign" in the top right
3. After creating the campaign, use the [template list endpoint](/reference/get-whats-app-templates) to fetch the `templateId`

```bash
curl --request POST \
  --url https://api.brevo.com/v3/whatsapp/sendMessage \
  --header 'accept: application/json' \
  --header 'api-key: YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --data '{
  "contactNumbers": [
    "4915778559164"
  ],
  "templateId": 465118589032810,
  "senderNumber": "917878172050"
}'
```

### Request parameters

**Template based message**

| Parameter        | Type             | Description                       | Required |
| :--------------- | :--------------- | :-------------------------------- | :------- |
| `templateId`     | Integer          | Template ID to use                | Yes      |
| `senderNumber`   | String           | WhatsApp number with country code | Yes      |
| `contactNumbers` | Array of strings | List of recipient phone numbers   | Yes      |

**Text based message**

| Parameter        | Type             | Description                                         | Required |
| :--------------- | :--------------- | :-------------------------------------------------- | :------- |
| `senderNumber`   | String           | WhatsApp number with country code                   | Yes      |
| `text`           | String           | Message body (used if `templateId` is not provided) | No       |
| `contactNumbers` | Array of strings | List of recipient phone numbers                     | Yes      |

Enter phone numbers without characters or spaces. Include country codes (e.g., `4915778559164`). Find your `templateId` in Campaigns > WhatsApp in your Brevo account.

### Response

| Status code | Description               |
| :---------- | :------------------------ |
| `201`       | Message sent successfully |
| `400`       | Invalid parameters        |

## Get WhatsApp activity

Retrieve unaggregated WhatsApp event data for the past 30 days (default) or a custom date range.

**Endpoint:** `GET /v3/whatsapp/statistics/events`

```bash
curl --request GET \
  --url 'https://api.brevo.com/v3/whatsapp/statistics/events?limit=50&offset=0&startDate=2024-01-01&endDate=2024-01-31' \
  --header 'accept: application/json' \
  --header 'api-key: YOUR_API_KEY'
```

### Query parameters

| Parameter       | Type   | Description                                                                                               | Required |
| :-------------- | :----- | :-------------------------------------------------------------------------------------------------------- | :------- |
| `limit`         | Int64  | Maximum number of results to return                                                                       | No       |
| `offset`        | Int64  | Starting point in the results list                                                                        | No       |
| `startDate`     | String | Start date (YYYY-MM-DD). Required if `endDate` is provided. Must be less than or equal to `endDate`.      | No       |
| `endDate`       | String | End date (YYYY-MM-DD). Required if `startDate` is provided. Must be greater than or equal to `startDate`. | No       |
| `days`          | Int64  | Number of days in the past including today. Not compatible with `startDate` and `endDate`                 | No       |
| `contactNumber` | String | Filter results for a specific contact (WhatsApp number with country code)                                 | No       |
| `event`         | String | Filter by event type                                                                                      | No       |
| `sort`          | String | Sort order: `asc` or `desc`. Default is `desc`                                                            | No       |

### Response

| Status code | Description                         |
| :---------- | :---------------------------------- |
| `200`       | Returns WhatsApp event report data  |
| `400`       | Invalid parameters or routing error |