Brevo Transactional Whats App API

The transactionalWhatsApp API from Brevo — 2 operation(s) for transactionalwhatsapp.

Operations 2

POST /whatsapp/sendMessage Send a WhatsApp message #
GET /whatsapp/statistics/events Get all your WhatsApp activity (unaggregated events) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/brevo-transactionalwhatsapp-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

brevo-transactionalwhatsapp-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Transactional WhatsApp Transactional Whats App API
  version: 1.0.0
servers:
- url: https://api.brevo.com/v3
  description: https://api.brevo.com/v3
tags:
- name: transactionalWhatsApp
paths:
  /whatsapp/sendMessage:
    post:
      operationId: sendWhatsappMessage
      summary: Send a WhatsApp message
      description: '<Note>You can use this API for WhatsApp only if you have setup your WhatsApp account on Brevo platform. To setup your WhatsApp account, follow the steps in the guide below.

        [Activating Whatsapp](https://developers.brevo.com/docs/whatsapp-campaigns-1) in your account</Note>

        This endpoint is used to send a WhatsApp message. <br/>(**The first message you send using the API must contain a Template ID. You must create a template on WhatsApp on the Brevo platform to fetch the Template ID.**)'
      tags:
      - transactionalWhatsApp
      parameters:
      - name: api-key
        in: header
        description: The API key should be passed in the request headers as `api-key` for authentication.
        required: true
        schema:
          type: string
      responses:
        '201':
          description: successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transactional_WhatsApp_sendWhatsappMessage_Response_201'
        '400':
          description: bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendWhatsappMessageRequestBadRequestError'
      requestBody:
        description: Values to send WhatsApp message
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Transactional_WhatsApp_sendWhatsappMessage_Request'
  /whatsapp/statistics/events:
    get:
      operationId: getWhatsappEventReport
      summary: Get all your WhatsApp activity (unaggregated events)
      description: This endpoint will show the unaggregated statistics for WhatsApp activity (30 days by default if `startDate` and `endDate` or `days` is not passed. The date range can not exceed 90 days)
      tags:
      - transactionalWhatsApp
      parameters:
      - name: limit
        in: query
        description: Number limitation for the result returned
        required: false
        schema:
          type: integer
          format: int64
          default: 2500
      - name: offset
        in: query
        description: Beginning point in the list to retrieve from
        required: false
        schema:
          type: integer
          format: int64
          default: 0
      - name: startDate
        in: query
        description: '**Mandatory if endDate is used.** Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate

          '
        required: false
        schema:
          type: string
      - name: endDate
        in: query
        description: '**Mandatory if startDate is used.** Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate

          '
        required: false
        schema:
          type: string
      - name: days
        in: query
        description: 'Number of days in the past including today (positive integer). _Not compatible with ''startDate'' and ''endDate''_

          '
        required: false
        schema:
          type: integer
          format: int64
      - name: contactNumber
        in: query
        description: Filter results for specific contact (WhatsApp Number with country code. Example, 85264318721)
        required: false
        schema:
          type: string
          format: mobile
      - name: event
        in: query
        description: Filter the report for a specific event type
        required: false
        schema:
          $ref: '#/components/schemas/WhatsappStatisticsEventsGetParametersEvent'
      - name: sort
        in: query
        description: Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed
        required: false
        schema:
          $ref: '#/components/schemas/WhatsappStatisticsEventsGetParametersSort'
          default: desc
      - name: api-key
        in: header
        description: The API key should be passed in the request headers as `api-key` for authentication.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: WhatsApp events report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transactional_WhatsApp_getWhatsappEventReport_Response_200'
        '400':
          description: bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWhatsappEventReportRequestBadRequestError'
components:
  schemas:
    WhatsappStatisticsEventsGetParametersEvent:
      type: string
      enum:
      - sent
      - delivered
      - read
      - error
      - unsubscribe
      - reply
      - soft-bounce
      title: WhatsappStatisticsEventsGetParametersEvent
    Transactional_WhatsApp_getWhatsappEventReport_Response_200:
      type: object
      properties:
        events:
          type: array
          items:
            $ref: '#/components/schemas/WhatsappStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItems'
      title: Transactional WhatsApp_getWhatsappEventReport_Response_200
    WhatsappSendMessagePostResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - invalid_parameter
      - missing_parameter
      - out_of_range
      - campaign_processing
      - campaign_sent
      - document_not_found
      - not_enough_credits
      - permission_denied
      - duplicate_parameter
      - duplicate_request
      - method_not_allowed
      - unauthorized
      - account_under_validation
      - not_acceptable
      - bad_request
      - unprocessable_entity
      - Domain does not exist
      - Contact email not found
      - Attribute not found
      - Category id not found
      - Invalid parameters passed
      - Record(s) for identifier not found
      - Returned when query params are invalid
      - Returned when invalid data posted
      - Feed not found
      - Campaign ID not found
      - api-key not found
      - DMARC policy requires domain authentication
      - DNS records not properly configured
      - Invalid OTP code provided
      - OTP code has expired
      - Domain already exists in your account
      - The sum of all IP weights must equal 100
      - Authentication failed
      - Insufficient credits
      - Request already processed
      description: Error code displayed in case of a failure
      title: WhatsappSendMessagePostResponsesContentApplicationJsonSchemaCode
    WhatsappStatisticsEventsGetResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - invalid_parameter
      - missing_parameter
      - out_of_range
      - campaign_processing
      - campaign_sent
      - document_not_found
      - not_enough_credits
      - permission_denied
      - duplicate_parameter
      - duplicate_request
      - method_not_allowed
      - unauthorized
      - account_under_validation
      - not_acceptable
      - bad_request
      - unprocessable_entity
      - Domain does not exist
      - Contact email not found
      - Attribute not found
      - Category id not found
      - Invalid parameters passed
      - Record(s) for identifier not found
      - Returned when query params are invalid
      - Returned when invalid data posted
      - Feed not found
      - Campaign ID not found
      - api-key not found
      - DMARC policy requires domain authentication
      - DNS records not properly configured
      - Invalid OTP code provided
      - OTP code has expired
      - Domain already exists in your account
      - The sum of all IP weights must equal 100
      - Authentication failed
      - Insufficient credits
      - Request already processed
      description: Error code displayed in case of a failure
      title: WhatsappStatisticsEventsGetResponsesContentApplicationJsonSchemaCode
    Transactional_WhatsApp_sendWhatsappMessage_Response_201:
      type: object
      properties:
        messageId:
          type: string
          format: uuidv4
          description: messageId of sent message
      required:
      - messageId
      title: Transactional WhatsApp_sendWhatsappMessage_Response_201
    WhatsappStatisticsEventsGetParametersSort:
      type: string
      enum:
      - asc
      - desc
      default: desc
      title: WhatsappStatisticsEventsGetParametersSort
    SendWhatsappMessageRequestBadRequestError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/WhatsappSendMessagePostResponsesContentApplicationJsonSchemaCode'
          description: Error code displayed in case of a failure
        message:
          type: string
          description: Readable message associated to the failure
      required:
      - code
      - message
      title: SendWhatsappMessageRequestBadRequestError
    GetWhatsappEventReportRequestBadRequestError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/WhatsappStatisticsEventsGetResponsesContentApplicationJsonSchemaCode'
          description: Error code displayed in case of a failure
        message:
          type: string
          description: Readable message associated to the failure
      required:
      - code
      - message
      title: GetWhatsappEventReportRequestBadRequestError
    WhatsappStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItemsEvent:
      type: string
      enum:
      - sent
      - delivered
      - read
      - error
      - unsubscribe
      - reply
      - soft-bounce
      description: Event which occurred
      title: WhatsappStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItemsEvent
    WhatsappStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItems:
      type: object
      properties:
        body:
          type: string
          description: Text of the reply (will be there only in case of `reply` event with text)
        contactNumber:
          type: string
          format: mobile
          description: WhatsApp Number with country code. Example, 85264318721
        date:
          type: string
          description: UTC date-time on which the event has been generated
        event:
          $ref: '#/components/schemas/WhatsappStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItemsEvent'
          description: Event which occurred
        mediaUrl:
          type: string
          format: url
          description: Url of the media reply (will be there only in case of `reply` event with media)
        messageId:
          type: string
          description: Message ID which generated the event
        reason:
          type: string
          description: Reason for the event (will be there in case of `error` and `soft-bounce` events)
        senderNumber:
          type: string
          format: mobile
          description: WhatsApp Number with country code. Example, 85264318721
      required:
      - contactNumber
      - date
      - event
      - messageId
      - senderNumber
      title: WhatsappStatisticsEventsGetResponsesContentApplicationJsonSchemaEventsItems
    Transactional_WhatsApp_sendWhatsappMessage_Request:
      oneOf:
      - description: Reference to TransactionalWhatsAppSendWhatsappMessageRequest0
      - description: Reference to TransactionalWhatsAppSendWhatsappMessageRequest1
      title: Transactional WhatsApp_sendWhatsappMessage_Request
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: api-key
      description: The API key should be passed in the request headers as `api-key` for authentication.