> ## Documentation Index
> Fetch the complete documentation index at: https://help.eazybe.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send a template in bulk

> Sends one template to multiple recipients with optional per-recipient
components. The request returns a result for every recipient.


<Warning>A `200` response can include recipient failures. Always inspect `failed` and every item in `results[]`.</Warning>


## OpenAPI

````yaml /api-reference/meta/openapi.yaml post /meta/phone-numbers/{phoneNumberId}/messages/template/bulk
openapi: 3.1.0
info:
  title: Eazybe Meta API Documentation
  version: 1.0.0
  description: |
    A single authenticated Eazybe REST surface over WhatsApp Business Cloud API.
    The wrapper uses the Meta credentials captured when a WABA is connected to
    Eazybe, so callers never send Meta access tokens directly.
servers:
  - url: https://cerberus.eazybe.com/staging/api/v2
    description: Eazybe staging API v2.
security:
  - bearerAuth: []
tags:
  - name: Phone numbers
    description: Discover connected WABAs and phone-number IDs.
  - name: Messaging
    description: Send WhatsApp messages and update message state.
  - name: Templates
    description: Manage WhatsApp message templates.
  - name: Media
    description: Upload, inspect, and delete WhatsApp media.
  - name: Webhooks
    description: Manage WABA webhook subscriptions.
  - name: Analytics
    description: Read messaging, conversation, pricing, and template analytics.
  - name: Profiles and settings
    description: Manage business profiles and phone-number settings.
  - name: Automation
    description: Configure welcome messages, ice-breakers, and commands.
  - name: QR codes
    description: Manage click-to-chat QR codes.
  - name: Flows
    description: Manage the WhatsApp Flows lifecycle.
  - name: Number administration
    description: Register numbers, manage PINs, and synchronize coexistence data.
  - name: Block list
    description: List, block, and unblock WhatsApp users.
paths:
  /meta/phone-numbers/{phoneNumberId}/messages/template/bulk:
    post:
      tags:
        - Messaging
      summary: Send a template in bulk
      description: |
        Sends one template to multiple recipients with optional per-recipient
        components. The request returns a result for every recipient.
      operationId: sendBulkTemplateMessages
      parameters:
        - $ref: '#/components/parameters/PhoneNumberId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - template
                - recipients
                - concurrency
                - marketing
              properties:
                template:
                  type: object
                  required:
                    - name
                    - language
                  properties:
                    name:
                      type: string
                    language:
                      type: object
                      properties:
                        code:
                          type: string
                      required:
                        - code
                recipients:
                  type: array
                  items:
                    type: object
                    required:
                      - to
                      - components
                    properties:
                      to:
                        type: string
                      components:
                        type: array
                        items:
                          type: object
                          required:
                            - type
                            - parameters
                          properties:
                            type:
                              type: string
                            parameters:
                              type: array
                              items:
                                type: object
                                required:
                                  - type
                                  - text
                                properties:
                                  type:
                                    type: string
                                  text:
                                    type: string
                concurrency:
                  type: integer
                marketing:
                  type: boolean
              description: |-
                ```json
                {
                  "template": {
                    "name": "order_update",
                    "language": {
                      "code": "en"
                    }
                  },
                  "recipients": [
                    {
                      "to": "919900000001",
                      "components": [
                        {
                          "type": "body",
                          "parameters": [
                            {
                              "type": "text",
                              "text": "Ravi"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "to": "919900000002",
                      "components": [
                        {
                          "type": "body",
                          "parameters": [
                            {
                              "type": "text",
                              "text": "Priya"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "to": "919900000003"
                    }
                  ],
                  "concurrency": 10,
                  "marketing": false
                }
                ```
            example:
              template:
                name: order_update
                language:
                  code: en
              recipients:
                - to: '919900000001'
                  components:
                    - type: body
                      parameters:
                        - type: text
                          text: Ravi
                - to: '919900000002'
                  components:
                    - type: body
                      parameters:
                        - type: text
                          text: Priya
                - to: '919900000003'
              concurrency: 10
              marketing: false
      responses:
        '200':
          description: >-
            Batch processed (check `successful` / `failed`)


            **Failure responses**


            | **Status** | **Meaning** | **Action** |

            | --- | --- | --- |

            | `401` | Missing, invalid, or expired bearer token |
            Re-authenticate |

            | `404` | `phoneNumberId` not linked to your organization | Verify
            the id |

            | `400` | DTO validation failed — empty `recipients`, `concurrency`
            outside 1–50, non-object `template`, or an unknown property | Read
            the `message` array |

            | `500` | The whole batch failed before per-recipient handling |
            Retry the batch |
          content:
            application/json:
              schema:
                type: object
                required:
                  - total
                  - successful
                  - failed
                  - results
                properties:
                  total:
                    type: integer
                  successful:
                    type: integer
                  failed:
                    type: integer
                  results:
                    type: array
                    items:
                      type: object
                      required:
                        - to
                        - status
                        - data
                      properties:
                        to:
                          type: string
                        status:
                          type: boolean
                        data:
                          type: object
                          required:
                            - messaging_product
                            - contacts
                            - messages
                          properties:
                            messaging_product:
                              type: string
                            contacts:
                              type: array
                              items:
                                type: object
                                required:
                                  - input
                                  - wa_id
                                properties:
                                  input:
                                    type: string
                                  wa_id:
                                    type: string
                            messages:
                              type: array
                              items:
                                type: object
                                required:
                                  - id
                                  - message_status
                                properties:
                                  id:
                                    type: string
                                  message_status:
                                    type: string
              example:
                total: 3
                successful: 2
                failed: 1
                results:
                  - to: '919900000001'
                    status: true
                    data:
                      messaging_product: whatsapp
                      contacts:
                        - input: '919900000001'
                          wa_id: '919900000001'
                      messages:
                        - id: wamid.HBgMOTE5OTAwMDAwMDAx...
                          message_status: accepted
                  - to: '919900000002'
                    status: true
                    data:
                      messaging_product: whatsapp
                      contacts:
                        - input: '919900000002'
                          wa_id: '919900000002'
                      messages:
                        - id: wamid.HBgMOTE5OTAwMDAwMDAy...
                          message_status: accepted
                  - to: '919900000003'
                    status: false
                    error: Request failed with status code 400
components:
  parameters:
    PhoneNumberId:
      name: phoneNumberId
      in: path
      required: true
      description: Meta phone-number ID returned by `GET /meta/phone-numbers`.
      schema:
        type: string
      example: '5647382910'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Eazybe token
      description: |
        Eazybe bearer token. The token resolves the caller's organization and
        must be kept on the server.

````