---
title: "Send to multiple numbers"
method: POST
path: "/send_msg/multi/"
tags: ["Messages"]
---

# Send to multiple numbers

`POST /send_msg/multi/`

## Request

- Base URL: `https://wbiztool.com/api/v1`
- URL: `https://wbiztool.com/api/v1/send_msg/multi/`
- Auth: none required

Queue the same message to several phone numbers and group names given as one comma-separated `phone` string; one `msg_id` per recipient. The whole batch must fit in the number's daily fair-use room (and the free plan's messages) or nothing is created. Most errors come back with HTTP 200 and `status: 0`; a missing or non-numeric `whatsapp_client`, a non-string `phone` or a non-numeric `msg_type` returns an empty object `{}`. Images and files by URL only; `group_name` and `expire_after_seconds` are ignored. The JSON body is served with `Content-Type: text/html`; parse it as JSON whatever the header says.

## Request body

- SendMultiMessageRequest: Your API credentials, sent in the request body (JSON or form fields) of every request that uses them. Both come from Settings → API keys in the dashboard. The API key decides which workspace the request acts on.
  - `client_id` integer, required: Your API Client ID from Settings → API keys.
  - `api_key` string, required: One of your API keys from the same page. Keep it secret.
  - `whatsapp_client` integer, required: ID of the WhatsApp number (or Telegram account) to send from, shown as "ID …" on the number's card on WhatsApp numbers in the dashboard.
  - `phone` string, required: Phone numbers and group names in one comma-separated string, e.g. `9876543210,9812345670,Sales Team Mumbai`. Not a JSON array. Text with letters is treated as a group name; numbers that are too short/long are skipped.
  - `country_code` union: Added in front of each phone number unless it already starts with it or is written with `+`/`00`.
    - string
    - integer
  - `msg_type` 0 | 1 | 2: `0` text (default), `1` image, `2` file or document.
  - `msg` string: Message text; required when `msg_type` is 0. For images and files it is the caption and can be empty. WhatsApp formatting works (`*bold*`, `_italic_`, `~strikethrough~`). `message` is accepted as an alias.
  - `img_url` string, uri: Public `http`/`https` URL of the image. Required when `msg_type` is 1 (and no file is uploaded).
  - `file_url` string, uri: Public `http`/`https` URL the file can be downloaded from directly. Required when `msg_type` is 2 (and no file is uploaded).
  - `file_name` string: File name the recipient sees, such as `invoice-4821.pdf`. Sent in lower case, characters such as `& : ? * $ ;` become `_`, cut to 150 characters. With `msg_type` 2, `.pdf` is added when the extension is missing or not supported.
  - `webhook` string, uri: Public URL that receives a form-encoded `POST` (`msg_id`, `status`) when the message is sent, fails, is cancelled or expires. See the `messageStatus` webhook.

## Response `200`

Messages queued (`status: 1`), or the request failed (`status: 0`, or `{}`). Failure messages: `Auth Error`, `Msg cant be null`, `Image Url Can't be null`, `File Url Can't be null`, `Not enough credits: … messages requested, … credits remaining`, `Daily limit reached: …` (with `code: daily_limit_reached`), `Invalid whatsapp client`, `No valid contacts found`, `Demo Account can not access apis`, `Invalid JSON format: …`.

- union
  - MultiMessageCreated
    - `status` 1, required
    - `message` string, required
    - `msg_ids` integer[], required
    - `messages` object[], required
      - `msg_id` integer
      - `contact` string: Number with country code applied, or the group name.
      - `is_group` boolean
  - DailyLimitError: The sending number reached its fair-use limit of 1,000 messages in 24 hours. The refused message still has a `msg_id` and shows as failed.
    - `status` 0, required
    - `message` string, required
    - `code` 'daily_limit_reached', required
    - `msg_id` integer
  - ApiError: A failed request. `status` is `0` and `message` says why. (`Account Disabled` has no `status` field.)
    - `status` 0
    - `message` string, required
  - object: Empty object: failed.

## Other responses

- `400`: Invalid API key.
- `403`: `client_id` is not a whole number.

---

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