---
title: "Send bulk messages"
method: POST
path: "/messages/bulk"
tags: ["SMS & WhatsApp Messaging"]
---

# Send bulk messages

`POST /messages/bulk`

## Request

- Base URL: `https://api.envoisms.ma/v1`
- URL: `https://api.envoisms.ma/v1/messages/bulk`
- Auth: HTTP bearer

Send up to 10,000 messages in one request. channel whatsapp sends free-form text from your connected WhatsApp Business number (403 WHATSAPP_NOT_CONNECTED otherwise); each recipient must have written to your number in the last 24 hours. Entries the platform refuses — outside that window (OUT_OF_24H_WINDOW), opted out, … — are listed under rejected with their error code and are never charged.

## Headers

- `Idempotency-Key` string

## Request body

- BulkSendRequest
  - `messages` object[], required
    - `to` string, required
    - `message` string, required
  - `from` string
  - `channel` 'sms' | 'whatsapp' | 'telegram' | 'voice' | 'rcs': Use sms by default. whatsapp sends free-form text from your connected WhatsApp Business number; each recipient must have written to you in the last 24 hours, and recipients outside that window are listed under rejected (OUT_OF_24H_WINDOW) and not charged. Bulk carries no templates — use campaigns for template sends.

## Response `202`

Batch queued

- object
  - `batch_id` string
  - `total` integer: Messages queued
  - `channel` string
  - `estimated_cost` object
    - `eur` number
    - `mad` number
  - `messages` object[]
    - `id` string
    - `to` string
    - `status` string
  - `rejected` object[]: Present only when some entries were refused. Nothing was charged for them.
    - `to` string
    - `code` string
    - `message` string

---

[API](https://skmtc.dev/envoisms/apis/envoisms-ma-api.md) · [All operations](https://skmtc.dev/envoisms/apis/envoisms-ma-api/llms.txt) · [OpenAPI document](https://skmtc.dev/envoisms/apis/envoisms-ma-api/revisions/662db074bd86?raw)
