---
"@context": https://schema.org
"@type": TechArticle
"@id": https://www.twilio.com/docs/bulk-messaging/getting-started#article
headline: Getting started with Twilio Bulk Messaging
description: Get started with the Twilio Bulk Messaging API. Authenticate requests, send your first SMS, MMS, RCS, or WhatsApp message, and track delivery with operations.
url: https://www.twilio.com/docs/bulk-messaging/getting-started
inLanguage: en
dateModified: 2026-08-20T18:09:16.000Z
author:
  "@type": Organization
  name: Twilio Developer Education Team
publisher:
  "@type": Organization
  name: Twilio
---

# Getting started with Twilio Bulk Messaging

## Prerequisites

Before you begin, ensure you have the following:

1. A Twilio account: [Sign up for a free account](https://www.twilio.com/try-twilio).
2. An approved and compliant phone number or sender for SMS, MMS, WhatsApp, or RCS in your target region(s).
3. Opt-out configuration according to your regional requirements. To configure advanced opt-out, see [Customizing your users' opt-in and opt-out experience with Advanced Opt-Out](/docs/messaging/tutorials/advanced-opt-out). The Bulk Messaging API does not support this functionality natively.

## Authenticate your requests

The Bulk Messaging API uses basic authentication, like other Twilio APIs. To authenticate, include a Basic Authentication header whose `username:password` pair is your API key SID and API key secret.

## Send your first message

> \[!NOTE]
>
> The base URI for this API is `https://comms.twilio.com/v1/`. The API accepts JSON requests and returns JSON responses.

To send a message, make a `POST` request to the Messages resource with `from`, `to`, and `content` parameters.

```bash
curl -X POST 'https://comms.twilio.com/v1/Messages' \
--header 'Content-Type: application/json' \
--data '{
    "from": {
        "address": "<Your Purchased Twilio Phone Number>",
        "channel": "SMS"
    },
    "to": [{
        "address": "+15558675310",
        "channel": "PHONE"
    }],
    "content": {
        "text": "What day is it?"
    }
}' \
-u $TWILIO_API_KEY:$TWILIO_API_SECRET
```

You can deliver the same message to up to 10,000 recipients in a single API request by adding more entries to the `to` array.

```bash
curl -X POST 'https://comms.twilio.com/v1/Messages' \
--header 'Content-Type: application/json' \
--data '{
    "from": {
        "address": "<Your Purchased Twilio Phone Number>",
        "channel": "SMS"
    },
    "to": [
        {
            "address": "+15558675310",
            "channel": "PHONE"
        },
        {
            "address": "+15558675311",
            "channel": "PHONE"
        }
    ],
    "content": {
        "text": "Ahoy!"
    }
}' \
-u $TWILIO_API_KEY:$TWILIO_API_SECRET
```

### Possible values for `channel`

When describing who you are sending `to`, the possible values are:

* `WHATSAPP`
* `PHONE`: The phone represents the text messaging app on a user's device. This is the same identifier for both RCS and SMS/MMS messages.

When describing what numbers and addresses you are sending `from`, we split RCS and SMS, so that it is possible to specify when you want to use RCS, text message, or both. The possible values in those scenarios are:

* `SMS`
* `RCS`
* `WHATSAPP`

See the [Messages API reference](/docs/bulk-messaging/api/message-resource) for more details.

## Check message request status with the Operation resource

After sending a message, especially to many recipients, retrieving the operation lets you monitor and manage the outcome, providing transparency and control over message delivery.

When you send a message with the Create Message endpoint, the response headers include an `operationId`. Use this value to track the delivery status of the message by sending a `GET` request to the Operations endpoint.

**Request sample**:

```bash
curl -X GET "https://comms.twilio.com/v1/Messages/Operations/comms_operation_01h9krwprkeee8fzqspvwy6nq8" \
-u $TWILIO_API_KEY:$TWILIO_API_SECRET
```

**Sample response**:

```json
  {
  "id": "comms_operation_01h2xcejqtf2nbrexx3vqjhp41",
  "status": "COMPLETED",
  "stats": {
    "total": 1,
    "recipients": 1,
    "attempts": 1,
    "unaddressable": 0,
    "queued": 0,
    "sent": 0,
    "scheduled": 0,
    "delivered": 1,
    "read": 0,
    "undelivered": 0,
    "failed": 0,
    "canceled": 0
  },
  "createdAt": "2024-04-05T06:20:00Z",
  "updatedAt": "2024-04-05T06:20:00Z"
}
```

For more details, see the [Operations API reference](/docs/bulk-messaging/api/operation-resource).

## Next steps

Now that you've sent your first message, see [Operations and message tracking](/docs/bulk-messaging/operations-and-message-tracking) to learn how to track delivery status and monitor your campaigns.
