Route Mobile Messaging API

Send template messages (marketing, utility, authentication) and session messages (text, media, interactive, payments, flows) to individual recipients.

Operations 7

GET /wba/templates View Template Message #
POST /wba/template/create Create Template #
POST /wba/v1/messages Send Template and Session Messages API #
POST /wba/templates/media-id Get Template Media ID #
POST /wba/media/v1/get-media-id Generate Media ID API #
PATCH /wba/template/update Edit Template #
DELETE /wba/template/ Delete Template #

Documentation

Specifications

Other Resources

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/route-mobile-messaging-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

route-mobile-messaging-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.8.0
  title: Route Mobile WhatsApp Business Messaging API
  description: 'The Route Mobile WhatsApp Business API enables enterprises to programmatically send and receive WhatsApp messages at scale. Use these APIs to integrate WhatsApp messaging into your applications for notifications, customer engagement, commerce, and support.


    ## Getting Started


    1. **Authenticate** — Call the [Login API](#tag/Authentication/operation/loginApi) to obtain a JWT token.

    2. **Send Messages** — Use the [Send Messages API](#tag/Messaging/operation/sendMessages) to deliver template or session messages.

    3. **Receive Callbacks** — Configure your webhook URL to receive [delivery reports and incoming messages](#tag/Webhooks).


    ## Key Concepts


    - **Template Messages** — Pre-approved message templates for outbound notifications (marketing, utility, authentication).

    - **Session Messages** — Free-form messages within a 24-hour customer service window.

    - **Bulk Campaigns** — Send messages to thousands of recipients via file upload.

    - **Catalog & Commerce** — Product catalogs, payments, and order management via WhatsApp.


    ## Authentication


    All API endpoints (except Login) require a JWT bearer token in the `Authorization` header. Tokens are valid for **one hour** by default.


    ```

    Authorization: <your-jwt-token>

    ```


    ## Rate Limits


    API rate limits are governed by your account tier. Contact your account manager for details.


    ## Support


    For API support, visit the [Route Mobile Developer Hub](https://developers.routemobile.com/) or reach out to [product-desk@routemobile.com](mailto:product-desk@routemobile.com).'
  contact:
    name: Route Mobile Developer Support
    url: https://developers.routemobile.com/
    email: product-desk@routemobile.com
  termsOfService: https://www.routemobile.com/terms-of-service/
  license:
    name: Proprietary
    url: https://www.routemobile.com/terms-of-service/
  x-logo:
    url: https://www.routemobile.com/wp-content/uploads/2023/04/route-mobile-logo.svg
    altText: Route Mobile
servers:
- url: https://apis.rmlconnect.net
security:
- BearerAuth: []
tags:
- name: Messaging
  description: Send template messages (marketing, utility, authentication) and session messages (text, media, interactive, payments, flows) to individual recipients.
paths:
  /wba/templates:
    get:
      tags:
      - Messaging
      summary: View Template Message
      description: View template messages added to the WhatsApp Business account.
      operationId: viewTemplateMessage
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                    description: The total count of items in the response.
                  data:
                    type: array
                    description: An array of objects representing the data or information.
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: The name of the item.
                        id:
                          type: string
                          description: The unique identifier associated with the item.
                        components:
                          type: array
                          description: An array of components associated with the item.
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                                description: The type of the component.
                              text:
                                type: string
                                description: The text or content of the component.
                        category:
                          type: string
                          description: The category of the item.
                        status:
                          type: string
                          description: The status of the item.
                        quality_rating:
                          type: string
                          description: The quality rating of the item.
                        rejected_reason:
                          type: string
                          description: The reason for rejection.
                        language:
                          type: string
                          description: Language code of language in which message text is written, such as "en" for English.
                        created_date:
                          type: string
                          description: The date and time when the item was created.
                        deleted_date:
                          type: string
                          description: The date and time when the item was deleted.
                        waba_id:
                          type: string
                          description: The unique identifier associated with the WhatsApp Business Account (WABA).
                        previous_category:
                          type: string
                          description: The previous category of the item.
              examples:
                Example 1:
                  value:
                    total: 1
                    data:
                    - name: welcome
                      id: 640099017215xxx
                      components:
                      - type: BODY
                        text: "Hi, Thank you for Opt-ing in to receive notifications from us on WhatsApp. \n\nWe will send you regular updates on our services and promotions. If you wish to unsubscribe, please reply with STOP. \n\nHave a good day."
                      category: MARKETING
                      status: APPROVED
                      quality_rating: UNKNOWN
                      rejected_reason: NONE
                      language: en
                      created_date: 21-Feb-2022 04:53 PM
                      deleted_date: string
                      waba_id: 629529078253xxx
                      previous_category: ALERT_UPDATE
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: The response message.
              examples:
                Template Name Exists:
                  value:
                    message: 'template with name : testing_v160405xx7 and language : [''en_US''] already exists.'
        '401':
          description: Authentication Failure
          content:
            application/json:
              schema:
                type: object
                properties:
                  response:
                    type: string
                    description: The message response.
              examples:
                Example 1:
                  value:
                    response: Unauthorized
        '404':
          description: Page Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
              examples:
                Incorrect API URL:
                  value:
                    message: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: The status for the message delivery.
                  message:
                    type: string
                    description: The message response.
                  reason:
                    type: string
                    description: The reason for not processing the request.
              examples:
                Example 1:
                  value:
                    status: failed
                    message: unable to process request
                    reason: reason
      security:
      - BearerAuth: []
  /wba/template/create:
    post:
      tags:
      - Messaging
      summary: Create Template
      description: Create a template for your message. Learn more about [different WhatsApp templates](https://routemobile.github.io/WhatsApp-Business-API/WBS.html#tag/WhatsApp-Messaging-Template-API/operation/createTemplate).
      operationId: createTemplate
      requestBody:
        description: Create a new WhatsApp message template with components (header, body, footer, buttons).
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/CreateTemplateRequest'
              - $ref: '#/components/schemas/CreateTemplateCallToAction'
              - $ref: '#/components/schemas/CreateTemplateQuickReply'
              - $ref: '#/components/schemas/CreateTemplateMedia'
              - $ref: '#/components/schemas/CreateTemplateText'
              - $ref: '#/components/schemas/CreateTemplateAuthCopyCode'
              - $ref: '#/components/schemas/CreateTemplateAuthAutofill'
              - $ref: '#/components/schemas/CreateTemplateCatalog'
              - $ref: '#/components/schemas/CreateTemplateCopyCode'
              - $ref: '#/components/schemas/CreateTemplateCarousel'
              - $ref: '#/components/schemas/CreateTemplateLimitedTimeOffer'
              - $ref: '#/components/schemas/CreateTemplateMultiProduct'
              - $ref: '#/components/schemas/CreateTemplatePaymentOrder'
              - $ref: '#/components/schemas/CreateTemplateFlow'
            examples:
              Create Template:
                value:
                  components:
                    body:
                      text: '{body text}'
                    buttons:
                      elements:
                      - contact_no: '{phone number with + and country code}'
                        label: '{phone number label}'
                      - label: '{url label}'
                        type: static/dynamic
                        website: '{url with https}'
                      type: call_to_action
                    footer:
                      text: '{footer text}'
                    header:
                      example: '{sample media url}'
                      type: image/video/document
                  language:
                  - '{lang code}'
                  template_category: ACCOUNT_UPDATE
                  template_name: '{template name}'
                  template_type: template
              Call to Action Template:
                value:
                  template_name: '{template name}'
                  language:
                  - '{lang code}'
                  template_type: template
                  template_category: '{template category}'
                  components:
                    header:
                      type: image/video/document
                      example: '{sample media url}'
                    body:
                      text: '{body text}'
                    footer:
                      text: '{footer text}'
                    buttons:
                      type: call_to_action
                      elements:
                      - label: '{phone number label}'
                        contact_no: '{phone number with + and country code}'
                      - label: '{url label}/{url label/{{1}}}'
                        type: static/dynamic
                        website: '{url with https}/{url with https/{{1}}}'
              Quick Reply Template:
                value:
                  template_name: '{template name}'
                  language:
                  - '{lang code}'
                  template_type: template
                  template_category: '{template category}'
                  components:
                    header:
                      type: image/video/document
                      example: '{sample media url}'
                    body:
                      text: '{body text}'
                    footer:
                      text: '{footer text}'
                    buttons:
                      type: quick_reply
                      elements:
                      - label: '{button 1 label}'
                      - label: '{button 2 label}'
                      - label: '{button 3 label}'
              Media Template:
                value:
                  template_name: '{template name}'
                  language:
                  - '{lang code}'
                  template_type: template
                  template_category: ACCOUNT_UPDATE
                  components:
                    header:
                      type: image/video/document
                      example: '{sample media url}'
                    body:
                      text: '{body text}'
                    footer:
                      text: '{footer text}'
              Text Template:
                value:
                  template_name: '{template name}'
                  language:
                  - '{lang code}'
                  template_type: template
                  template_category: '{template category}'
                  components:
                    body:
                      text: '{body text}'
                    footer:
                      text: '{footer text}'
              Auth CopyCode:
                value:
                  template_name: '{template name}'
                  language:
                  - '{lang code}'
                  template_type: template
                  template_category: AUTHENTICATION
                  components:
                    body:
                      add_security_recommendation: true/false
                    footer:
                      code_expiration_minutes:
                        code expiry upto 90mins: string
                    buttons:
                      type: OTP
                      otp_type: COPY_CODE
                      text: Copy Code
              Auth Autofill:
                value:
                  template_name: '{template_name}'
                  language:
                  - '{lang code}'
                  template_type: template
                  template_category: AUTHENTICATION
                  components:
                    body:
                      add_security_recommendation: true/false
                    footer:
                      code_expiration_minutes:
                        upto 90 mins possible: string
                    buttons:
                      type: OTP
                      otp_type: ONE_TAP
                      text: Copy Code
                      autofill_text: Autofill
                      package_name: '{package name of App}'
                      signature_hash: '{signature_hash of App}'
              Catalog:
                value:
                  template_name: '{template name}'
                  language:
                  - en
                  template_category: '{template category}'
                  template_type: '{template type}'
                  components:
                    body:
                      text: '{body text}'
                      example:
                      - '{example}'
                    buttons:
                      type: '{button type}'
                      elements:
                      - type: '{button elements type}'
                    footer:
                      text: Thank You
              Copy Code:
                value:
                  template_name: '{template name}'
                  language:
                  - en
                  template_category: '{template category}'
                  template_type: '{ template type }'
                  components:
                    body:
                      text: '{body text}'
                      example:
                      - '10'
                    header:
                      type: '{header type}'
                      text: '{header text}'
                    buttons:
                      type: '{button type}'
                      elements:
                      - type: '{button element type}'
                        label: '{button element label}'
                        website: '{sample url}'
                      - type: '{button element type}'
                        example: '{button text example}'
                    footer:
                      text: '{footer text}'
              Carousel:
                value:
                  template_name: '{template name}'
                  language:
                  - '{lang code}'
                  template_category: '{template category}'
                  template_type: '{template type}'
                  components:
                    body:
                      text: '{body text}'
                      example:
                      - '100'
                    cards:
                      header_type: '{ card header type}'
                      header_example: xxxxx://xxxxxxxxxxxx/200/300?xxxxxxxx
                      button_types:
                      - '{button type 1}'
                      - '{button type 2}'
                      elements:
                      - body:
                          text: '{element body text}'
                          example:
                          - '{example 1}'
                          - '{example 2}'
                        buttons:
                        - type: '{element button type}'
                          text: '{element button text}'
                        - type: '{element button type}'
                          label: '{element button label}'
                          website: xxxxx://xxxxxxx/{{1}}
                          website_example: xxxxx://xxxxxxxxxx/client
                      - body:
                          text: '{element body text}'
                          example:
                          - '{example 1}'
                          - '{example 2}'
                        buttons:
                        - type: '{element button type}'
                          text: '{element button text}'
                        - type: '{element button type}'
                          label: '{element button label}'
                          website: xxxxx://xxxxxxxx/{{1}}
                          website_example: xxxxx://xxxxxxx/student
              Limited Time Offer:
                value:
                  template_name: '{template_name}'
                  language:
                  - '{lang code}'
                  template_type: template
                  template_category: MARKETING
                  components:
                    limited_time_offer:
                      text: '{lto text}'
                      has_expiration: true
                    body:
                      text: '{body text}'
                    buttons:
                      type: '{button type}'
                      elements:
                      - type: '{button element type}'
                        example: '{button element example}'
                      - label: '{button element label}'
                        type: '{button element type}'
                        website: xxxxx://xxxxxxxx/
                        website_example: xxxxx://xxxxxxxxxx/student
              Multi Product:
                value:
                  template_name: '{template_name}'
                  language:
                  - '{lang code}'
                  template_type: '{template type}'
                  template_category: '{template category}'
                  components:
                    header:
                      type: '{header type}'
                      text: '{header text}'
                    body:
                      text: '{body text}'
                    buttons:
                      type: '{button  type}'
                      elements:
                      - text: '{button element text}'
              Payment Order Details:
                value:
                  template_name: '{template_name}'
                  language:
                  - '{lang code}'
                  template_type: '{template type}'
                  template_category: '{template category}'
                  template_sub_category: '{template sub category}'
                  components:
                    header:
                      type: '{header type}'
                      text: '{header text}'
                    body:
                      text: '{body text}'
                    footer:
                      text: '{fotter text}'
                    buttons:
                      type: '{button  type}'
                      elements:
                      - text: '{button element text}'
              Flows creation:
                value:
                  template_name: '{template_name}'
                  language:
                  - '{lang code}'
                  template_type: '{template type}'
                  template_category: '{template category}'
                  components:
                    header:
                      type: '{header type}'
                      text: '{header text}'
                    body:
                      text: '{body text}'
                    buttons:
                      type: '{button  type}'
                      elements:
                      - text: '{button element text}'
                        flow_id: '{flow id}'
                        navigation_screen: '{Flows Json screen name}'
                        flow_action: '{flow action}'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: The unique identification of a template.
                  status:
                    type: string
                    description: The status of the template.
                  category:
                    type: string
                    description: 'The template category. Must be one of: MARKETING, UTILITY, AUTHENTICATION.'
              examples:
                Approved template:
                  value:
                    id: 79804437842xxxx
                    status: APPROVED
                    category: MARKETING
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: The message response.
              examples:
                Template already exists:
                  value:
                    message: 'template with name : testdocum1 and language : [''en''] already exists.'
        '401':
          description: Authentication Failure
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: The message response.
                  reason:
                    type: string
                    description: The reason for not processing a request.
                  status:
                    type: string
                    description: The status of the template.
              examples:
                JWT token expired:
                  value:
                    message: unable to process campaign request
                    reason: jwt token expired
                    status: failure
        '404':
          description: Page Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
              examples:
                Incorrect API URL:
                  value:
                    message: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
        '422':
          description: Unprocessable Entity (WebDAV)
          content:
            application/json:
              schema:
                type: object
                properties:
                  template_category:
                    type: array
                    description: 'The template category. Must be one of: MARKETING, UTILITY, AUTHENTICATION.'
                    items:
                      type: string
              examples:
                Example 1:
                  value:
                    template_category:
                    - 'Must be one of: MARKETING, UTILITY, AUTHENTICATION.'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: The message response.
              examples:
                Server error:
                  value:
                    message: Internal Server Error
      security:
      - BearerAuth: []
  /wba/v1/messages:
    post:
      tags:
      - Messaging
      summary: Send Template and Session Messages API
      description: Send Template and Session Messages API can be used to send either template or session messages to customers. Learn more about [WhatsApp template and session message APIs](https://routemobile.github.io/WhatsApp-Business-API/WBS.html#tag/WhatsApp-Messaging-Template-API/operation/sendSessionMessageApi).
      operationId: sendSessionMessageApi
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - title: Template Message Types
                oneOf:
                - $ref: '#/components/schemas/SendTemplateText'
                - $ref: '#/components/schemas/SendTemplateTextWithHeader'
                - $ref: '#/components/schemas/SendTemplateMediaImage'
                - $ref: '#/components/schemas/SendTemplateMediaDocument'
                - $ref: '#/components/schemas/SendTemplateMediaVideo'
                - $ref: '#/components/schemas/SendTemplateAuthCopyCode'
                - $ref: '#/components/schemas/SendTemplateAuthAutofill'
                - $ref: '#/components/schemas/SendTemplateQuickReply'
                - $ref: '#/components/schemas/SendTemplateCarousel'
                - $ref: '#/components/schemas/SendTemplateCouponCode'
                - $ref: '#/components/schemas/SendTemplateCatalogThumbnail'
                - $ref: '#/components/schemas/SendTemplateMultiProduct'
                - $ref: '#/components/schemas/SendTemplateLimitedTimeOffer'
                - $ref: '#/components/schemas/SendTemplatePayment'
                - $ref: '#/components/schemas/SendTemplateFlow'
              - title: Session Message Types
                oneOf:
                - $ref: '#/components/schemas/SendSessionText'
                - $ref: '#/components/schemas/SendSessionTextReplyTo'
                - $ref: '#/components/schemas/SendSessionTextPreviewUrl'
                - $ref: '#/components/schemas/SendSessionDocument'
                - $ref: '#/components/schemas/SendSessionAudio'
                - $ref: '#/components/schemas/SendSessionImage'
                - $ref: '#/components/schemas/SendSessionVideo'
                - $ref: '#/components/schemas/SendSessionLocation'
                - $ref: '#/components/schemas/SendSessionInteractiveList'
                - $ref: '#/components/schemas/SendSessionQuickReplyMedia'
                - $ref: '#/components/schemas/SendSessionQuickReplyText'
                - $ref: '#/components/schemas/SendSessionSingleProduct'
                - $ref: '#/components/schemas/SendSessionMultiProduct'
                - $ref: '#/components/schemas/SendSessionFlow'
                - $ref: '#/components/schemas/SendSessionPaymentWithCatalog'
                - $ref: '#/components/schemas/SendSessionPaymentWithoutCatalog'
                - $ref: '#/components/schemas/SendSessionPaymentPayU'
                - $ref: '#/components/schemas/SendSessionPaymentRazorpay'
                - $ref: '#/components/schemas/SendSessionPaymentUPI'
                - $ref: '#/components/schemas/SendSessionPaymentLink'
                - $ref: '#/components/schemas/SendSessionOrderStatus'
            examples:
              Send Template Message - Text:
                value:
                  phone: '{mobile number}'
                  extra: '{your value}'
                  enable_acculync: true
                  media:
                    type: media_template
                    template_name: '{your template}'
                    lang_code: '{lang_code}'
                    body:
                    - text: '{variable}'
                    - text: '{variable}'
                    button:
                    - button_no: 0/1
                      url: '{dynamic_url variable}'
              Send Template Message - Text with Text Header:
                value:
                  phone: '{mobile number}'
                  extra: '{your value}'
                  enable_acculync: true
                  media:
                    type: media_template
                    lang_code: '{code}'
                    template_name: '{your template}'
                    header:
                    - text: '{variable}'
                    body:
                    - text: '{variable}'
                    - text: '{variable}'
                    button:
                    - button_no: 0/1
                      url: '{dynamic_url variable}'
              Send Template Message - Media Image:
                value:
                  phone: '{mobile number}'
                  extra: '{your value}'
                  enable_acculync: true
                  media:
                    type: media_template
                    lang_code: '{code}'
                    template_name: '{your template}'
                    header:
                    - image:
                        link: '{sample image url hosted publicly starting with https:// and ending with file extension}'
                        file_name: '{sample media name and ending with file extension}'
                    body:
                    - text: '{variable}'
                    - text: '{variable}'
                    button:
                    - button_no: 0/1
                      url: '{dynamic_url variable}'
              Send Template Message - Media Document:
                value:
                  phone: '{mobile number}'
                  extra: '{your value}'
                  enable_acculync: true
                  media:
                    type: media_template
                    lang_code: '{code}'
                    template_name: '{your template}'
                    header:
                    - document:
                        link: '{sample document url hosted publicly starting with https:// and ending with file extension}'
                        file_name: '{sample media name and ending with file extension}'
                    body:
                    - text: '{variable}'
                    - text: '{variable}'
                    button:
                    - button_no: 0/1
                      url: '{dynamic_url variable}'
              Send Template Message - Media Video:
                value:
                  phone: '{mobile number}'
                  extra: '{your value}'
                  enable_acculync: true
                  media:
                    type: media_template
                    lang_code: '{code}'
                    template_name: '{your template}'
                    header:
                    - video:
                        link: '{sample video url hosted publicly starting with https:// and ending with file extension}'
                        file_name: '{sample media name and ending with file extension}'
                    body:
                    - text: '{variable}'
                    - text: '{variable}'
                    button:
                    - button_no: 0/1
                      url: '{dynamic_url variable}'
       

# --- truncated at 32 KB (227 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/route-mobile/refs/heads/main/openapi/route-mobile-messaging-api-openapi.yml