Route Mobile RCS Business Messaging API

Rich Communication Services business messaging — verified sender messaging with rich cards, carousels and suggested replies, single and bulk message submission, an RCS payment/bill-send endpoint, typing events, a file server for media upload, tester and agent management, capability checks against handsets, opt-in management and inbound callbacks. 18 documented paths and 21 operations, authenticated with a JWT obtained from the login endpoint.

OpenAPI Specification

route-mobile-rcs.yml Raw ↑
openapi: 3.0.0
info:
  version: 2.1.0
  title: Route Mobile Rich Communication Services (RCS) API Documentation
  description: |-
    Welcome to the Route Mobile developer hub. You will find comprehensive RCS API documentation to help you start working with Route Mobile as quickly as possible and support if you get stuck. Let's jump right in!

    For more information, see the [Route Mobile Open API Specifications](https://routemobile.github.io/RCS-Business-Messaging-API/RCS.html)
  contact:
    url: https://developers.routemobile.com/
    name: Route Mobile Development
    email: support@routemobile.com
  license:
    name: Proprietary
    url: https://www.routemobile.com/terms-and-conditions/
  x-logo:
    url: https://www.routemobile.com/wp-content/uploads/2021/07/RM-Logo.png
    altText: Route Mobile Logo
  x-readme:
    samples-languages:
    - curl
    - python
    - node
    - java
    - php
servers:
- url: https://apis.rmlconnect.net
security:
- jwt: []
paths:
  /auth/v1/login/:
    post:
      tags:
      - Login
      summary: Login API
      description: |-
        Login APIs provide a secure and standardized way for end users to add user authentication to their applications. Only authorized users can access sensitive resources or perform specific actions within the application after entering the user authentication details.

        **By default, the JSON Web Token (JWT) validity periods are set to one hour.**
      operationId: loginApi2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v1_login_body'
            examples:
              Example 1:
                value:
                  password: password
                  username: username
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_201_2'
              examples:
                Authentication successful:
                  value:
                    JWTAUTH: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZGVtbyIsInVzZXJuYW1lIjoiZGVtbyIsImV4cCI6MTY4Mzg4OTI0MSwiZW1haWwiOiJwcm9kdWN0LWRlc2tAcm91dGVtb2JpbGUuY29tIiwib3JpZ19pYXQiOjE2ODM4ODU2NDEsImN1c3RvbWVyX2lkIjoiOWlyNURnN2J2c0NBIn0.gu2LO-bDVPqa35v_MnyO1KKeZzhDHHWLta5Gxxxxxx
                    user_data:
                      username: demo
                      first_name: RML
                      last_name: Product
                      email: product-desk@routemobile.com
                      phone_number: '{phone}'
                      password_reset: false
                      is_active: true
                      is_staff: false
                      ip: 1stepauth
                      child_user: false
                      parent_username: ''
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: The user login status.
              examples:
                User is set inactive:
                  value:
                    status: invalid credentials or the account has been deactivated
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Rate limit exceeded message.
                  retry_after:
                    type: integer
                    description: Number of seconds to wait before retrying.
              examples:
                Rate Limit Exceeded:
                  value:
                    message: Rate limit exceeded. Please retry after the specified time.
                    retry_after: 60
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: The user login status.
              examples:
                Unhandled Exception:
                  value:
                    status: <exception>
      security: []
  /rcs/v1/message:
    post:
      tags:
      - RCS Messages API
      summary: RCS Messages API
      description: "The Rich Communication Services (RCS) Business Messaging API is a communication protocol\
        \ that allows businesses to send different types of messages beyond traditional text messages.\
        \ \n\nThe RCS Business Messaging API allows businesses to send different types of messages that\
        \ include:\n\n- **Notification API:** Standard messages that send plain text or media content.\
        \ \n- **Session API:** Standard text messages that send plain text content as part of a campaign.\
        \ \n- **India Template API:** Create interactive and visually rich content to engage customers."
      operationId: textTemplate
      requestBody:
        description: "\n \n "
        required: true
        content:
          application/json:
            schema:
              anyOf:
              - title: Notification Message APIs
                oneOf:
                - $ref: '#/components/schemas/rcs_notification_common_msg'
                - $ref: '#/components/schemas/rcs_notification_text_msg'
                - $ref: '#/components/schemas/rcs_notification_media_imagemp4_msg'
                - $ref: '#/components/schemas/rcs_notification_videothumbnailurl_msg'
                - $ref: '#/components/schemas/rcs_notification_videothumbnailid_msg'
                - $ref: '#/components/schemas/rcs_notification_richcrdstdalone_msg'
                - $ref: '#/components/schemas/rcs_notification_richcrdcarousel_msg'
                - $ref: '#/components/schemas/rcs_notification_urlsugg_msg'
                - $ref: '#/components/schemas/rcs_notification_textsugg_msg'
                - $ref: '#/components/schemas/rcs_notification_dialsugg_msg'
                - $ref: '#/components/schemas/rcs_notification_locationsugg_msg'
                - $ref: '#/components/schemas/rcs_notification_calendarsugg_msg'
                - $ref: '#/components/schemas/rcs_notification_mediaid_msg'
                - $ref: '#/components/schemas/rcs_notification_carslwithids_msg'
              - title: Session Message APIs
                oneOf:
                - $ref: '#/components/schemas/rcs_session_common_msg'
                - $ref: '#/components/schemas/rcs_session_text_msg'
                - $ref: '#/components/schemas/rcs_session_mediaimagemp4_msg'
                - $ref: '#/components/schemas/rcs_session_videothumbnailurl_msg'
                - $ref: '#/components/schemas/rcs_session_videothumbnailid_msg'
                - $ref: '#/components/schemas/rcs_session_richcrdstdalone_msg'
                - $ref: '#/components/schemas/rcs_session_richcrdcarousel_msg'
                - $ref: '#/components/schemas/rcs_session_urlsugg_msg'
                - $ref: '#/components/schemas/rcs_session_textsugg_msg'
                - $ref: '#/components/schemas/rcs_session_dialsugg_msg'
                - $ref: '#/components/schemas/rcs_session_locationsugg_msg'
                - $ref: '#/components/schemas/rcs_session_calendarsugg_msg'
                - $ref: '#/components/schemas/rcs_session_mediaid_msg'
                - $ref: '#/components/schemas/rcs_session_carslwithids_msg'
              - title: India Template Message APIs
                oneOf:
                - $ref: '#/components/schemas/rcs_template_text_msg'
                - $ref: '#/components/schemas/rcs_template_richcrdstdalone_msg'
                - $ref: '#/components/schemas/rcs_template_richcrdcarousel_msg'
                - $ref: '#/components/schemas/rcs_template_fallback_api_msg'
                - $ref: '#/components/schemas/rcs_template_whatsapp_fallback_api_msg'
                - $ref: '#/components/schemas/rcs_template_sms_fallback_api_msg'
            examples:
              Notification - Common:
                value:
                  type: text/media/card/multiple_cards
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  text: '{plain text}'
                  url: '{sample (image/pdf/video mp4) url starting with https://}'
                  extra: '{extra value}'
                  suggestions:
                  - type: '{label name}'
                    text: '{plain text}'
                    url: '{url with http://}'
                    latitude: latitude value
                    longitude: longitude value
                    call_to: '{your number}'
                    postback: '{postback text}'
                  - type: dial
                    text: '{label}'
                    postback: '{postback label}'
                  - type: calendar
                    postback: '{postback text}'
                    text: Save to calendar
                    start: '{start time}'
                    end: '{end time}'
                    title: '{title name}'
                    description: '{Description of the calendar event}'
                  card:
                    title: '{label}'
                    description: '{plain text}'
                    url: '{sample (image/pdf/video mp4) url starting with https://}'
                    suggestions:
                    - type: '{label name}'
                      text: '{plain text}'
                      latitude: latitude value
                      longitude: longitude value
                      postback: '{postback text}'
                    - type: calendar
                      postback: '{postback text}'
                      text: Save to calendar
                      start: '{start time}'
                      end: '{end time}'
                      title: '{title name}'
                      description: '{Description of the calendar event}'
                  cards:
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                      suggestions:
                      - type: message
                        text: '{text}'
                        postback: '{postback text}'
                      - type: message
                        text: '{text}'
                        postback: '{postback text}'
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                      suggestions:
                      - type: dial
                        text: '{label}'
                        call_to: '{your number}'
                        postback: '{postback label}'
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                      suggestions:
                      - type: url
                        text: '{label}'
                        url: '{url with http://}'
                        postback: '{postback label}'
              Notification - Text:
                value:
                  type: text
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  ttl: '{number of seconds for response}'
                  expire_time: '2024-03-15 13:00:00'
                  text: '{plain text}'
                  extra: '{extra value}'
                  suggestions:
                  - type: '{label name}'
                    text: '{plain text}'
                    latitude: '{latitude value}'
                    longitude: '{longitude value}'
                    postback: '{postback text}'
                  - type: calendar
                    postback: '{postback text}'
                    text: Save to calendar
                    start: '{start time}'
                    end: '{end time}'
                    title: '{title name}'
                    description: '{Description of the calendar event}'
                  fallback_text: '{value {#var#} value}'
              Notification - Media:
                value:
                  type: media
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  url: '{sample (image/pdf/video mp4) url starting with https://}'
                  thumbnail_url: '{sample (image/pdf/video mp4) url starting with https://}'
                  id: '{media id}'
                  thumbnail_id: '{media id}'
                  extra: '{extra value}'
                  suggestions:
                  - type: '{label name}'
                    text: '{plain text}'
                    latitude: '{latitude value}'
                    longitude: '{longitude value}'
                    postback: '{postback text}'
                  - type: calendar
                    postback: '{postback text}'
                    text: Save to calendar
                    start: '{start time}'
                    end: '{end time}'
                    title: '{title name}'
                    description: '{Description of the calendar event}'
                  fallback_text: '{value {#var#} value}'
              Notification - Video With Thumbnail URL:
                value:
                  type: card
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  card:
                    title: '{plain text}'
                    description: '{description for card}'
                    url: '{sample (image/video mp4) url starting with https://}'
                    thumbnail_url: '{sample (image/video mp4) thumbnail url starting with https://}'
                    suggestions:
                    - type: message
                      postback: '{postback text}'
                      text: '{plain text}'
                    - type: message
                      postback: '{postback text}'
                      text: '{plain text}'
              Notification - Video With Thumbnail ID:
                value:
                  type: card
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  card:
                    title: '{plain text}'
                    description: '{description for card}'
                    id: '{sample (image/video mp4) media id}'
                    thumbnail_id: '{sample (image/video mp4) thumbnail media id}'
                    suggestions:
                    - type: message
                      postback: '{postback text}'
                      text: '{plain text}'
                    - type: message
                      postback: '{postback text}'
                      text: '{plain text}'
              Notification - Rich Card Standalone:
                value:
                  type: card
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  url: '{sample (image/pdf/video mp4) url starting with https://}'
                  extra: '{extra value}'
                  card:
                    title: '{label}'
                    description: '{plain text}'
                    url: '{sample (image/pdf/video mp4) url starting with https://}'
                    suggestions:
                    - type: '{label name}'
                      text: '{plain text}'
                      latitude: '{latitude value}'
                      longitude: '{longitude value}'
                      postback: '{postback text}'
                    - type: calendar
                      postback: '{postback text}'
                      text: Save to calendar
                      start: '{start time}'
                      end: '{end time}'
                      title: '{title name}'
                      description: '{Description of the calendar event}'
                  fallback_text: '{value {#var#} value}'
              Notification - Rich Card Carousel:
                value:
                  type: multiple_cards
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  extra: '{extra value}'
                  cards:
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                      suggestions:
                      - type: message
                        text: '{text}'
                        postback: '{postback text}'
                      - type: message
                        text: '{text}'
                        postback: '{postback text}'
                      - type: calendar
                        postback: '{postback text}'
                        text: Save to calendar
                        start: '{start time}'
                        end: '{end time}'
                        title: '{title name}'
                        description: '{Description of the calendar event}'
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                      suggestions:
                      - type: dial
                        text: '{label}'
                        call_to: '{your number}'
                        postback: '{postback label}'
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                      suggestions:
                      - type: url
                        text: '{label}'
                        url: '{url with http://}'
                        postback: '{postback label}'
                  fallback_text: '{value {#var#} value}'
              Notification - URL Suggestion:
                value:
                  type: media
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  url: '{sample (image/pdf/video mp4) url starting with https://}'
                  suggestions:
                  - type: url
                    text: '{label}'
                    url: '{url with http://}'
                    postback: '{postback label}'
                  fallback_text: '{value {#var#} value}'
              Notification - Text Suggestion:
                value:
                  type: text
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  text: '{plain text}'
                  suggestions:
                  - type: message
                    text: '{text}'
                    postback: '{postback text}'
                  - type: message
                    text: '{text}'
                    postback: '{postback text}'
                  fallback_text: '{value {#var#} value}'
              Notification - Dial Suggestion:
                value:
                  type: media
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  url: '{sample (image/pdf/video mp4) url starting with https://}'
                  extra: '{extra value}'
                  suggestions:
                  - type: dial
                    text: '{label}'
                    call_to: '{your number}'
                    postback: '{postback label}'
                  fallback_text: '{value {#var#} value}'
              Notification - Location Suggestion:
                value:
                  type: text
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  text: '{plain text}'
                  extra: '{extra value}'
                  suggestions:
                  - type: '{label name}'
                    text: '{plain text}'
                    latitude: '{latitude value}'
                    longitude: '{longitude value}'
                    postback: '{postback text}'
                  fallback_text: '{value {#var#} value}'
              Notification - Calendar Suggestion:
                value:
                  type: text
                  bot_name: '{bot name}'
                  text: '{plain text}'
                  phone_no: '{mobile number with country code}'
                  suggestions:
                  - type: calendar
                    postback: '{postback text}'
                    text: '{plain text}'
                    start: '{start time}'
                    end: '{end time}'
                    title: '{label}'
                    description: '{Description of the calendar event}'
              Notification - Rich Card Carousel With IDS:
                value:
                  type: multiple_cards
                  country_code: '+91'
                  file_url: http://<Domain Name>/v1/download/Misc/e260e874-831c-11eb-af5c-0242ac12xxxx.txt
                  campaign_name: Testing bulk APIs
                  scheduled_time: '2021-03-13 11:30:00'
                  bot_name: '{RML agent name}'
                  cards:
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      id: '{media id}'
                      thumbnail_id: '{media id}'
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
              India Template - Text:
                value:
                  type: template
                  phone_no: '{mobile number}'
                  bot_name: '{RML agent name}'
                  ttl: '{number of seconds for response}'
                  expire_time: '2024-03-15 13:00:00'
                  extra: '{extra value}'
                  template:
                    name: '{template name}'
                    variables:
                      '{var1}': '{value}'
                      '{var2}': '{value}'
                  fallback_text: '{value {#var#} value}'
              India Template - Rich Card Standalone:
                value:
                  type: template
                  phone_no: '{mobile number}'
                  bot_name: '{RML agent name}'
                  ttl: '{number of seconds for response}'
                  expire_time: '2024-03-15 13:00:00'
                  extra: '{extra value}'
                  template:
                    name: '{template name}'
                    variables:
                      '{var1}': '{value}'
                      '{var2}': '{value}'
                  fallback_text: '{value {#var#} value}'
              India Template - Rich Card Carousel:
                value:
                  type: template
                  phone_no: '{mobile number}'
                  bot_name: '{RML agent name}'
                  ttl: '{number of seconds for response}'
                  expire_time: '2024-03-15 13:00:00'
                  extra: '{extra value}'
                  template:
                    name: '{template name}'
                    variables:
                      '{var1}': '{value}'
                      '{var2}': '{value}'
                  fallback_text: '{value {#var#} value}'
              India Template - Fallback API:
                value:
                  type: text
                  phone_no: '{mobile number with country code}'
                  bot_name: Routemobile
                  ttl: '{number of seconds for response}'
                  expire_time: '2024-03-15 13:00:00'
                  text: Hi
                  fallback_text: Your test OTP is {#var#}- 29 Three
              India Template - Whatsapp Fallback API:
                value:
                  type: template
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  ttl: '{number of seconds for response}'
                  expire_time: '2024-03-15 13:00:00'
                  extra: '{extra value}'
                  template:
                    name: '{template name}'
                  fallback_channel: whatsapp
                  whatsapp:
                    media:
                      type: '{media type/template}'
                      template_name: '{template name}'
                      lang_code: '{language code}'
              India Template - SMS Fallback API:
                value:
                  type: template
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  ttl: '{number of seconds for response}'
                  expire_time: '2024-03-15 13:00:00'
                  extra: '{extra value}'
                  template:
                    name: '{template name}'
                  fallback_channel: sms
                  sms:
                    fallback_text: '{fallback text}'
              Session - Common:
                value:
                  type: text/media/card/multiple_cards
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  text: '{plain text}'
                  url: '{sample (image/pdf/video mp4) url starting with https://}'
                  extra: '{extra value}'
                  suggestions:
                  - type: '{label name}'
                    text: '{plain text}'
                    url: '{url with http://}'
                    latitude: latitude value
                    longitude: longitude value
                    call_to: '{your number}'
                    postback: '{postback text}'
                  - type: dial
                    text: '{label}'
                    postback: '{postback label}'
                  - type: calendar
                    postback: '{postback text}'
                    text: Save to calendar
                    start: '{start time}'
                    end: '{end time}'
                    title: '{title name}'
                    description: '{Description of the calendar event}'
                  card:
                    title: '{label}'
                    description: '{plain text}'
                    url: '{sample (image/pdf/video mp4) url starting with https://}'
                    suggestions:
                    - type: '{label name}'
                      text: '{plain text}'
                      latitude: latitude value
                      longitude: longitude value
                      postback: '{postback text}'
                    - type: calendar
                      postback: '{postback text}'
                      text: Save to calendar
                      start: '{start time}'
                      end: '{end time}'
                      title: '{title name}'
                      description: '{Description of the calendar event}'
                  cards:
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                      suggestions:
                      - type: message
                        text: '{text}'
                        postback: '{postback text}'
                      - type: message
                        text: '{text}'
                        postback: '{postback text}'
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                      suggestions:
                      - type: dial
                        text: '{label}'
                        call_to: '{your number}'
                        postback: '{postback label}'
                  - card:
                      title: '{label}'
                      description: '{plain text}'
                      url: '{sample (image/pdf/video mp4) url starting with https://}'
                      suggestions:
                      - type: url
                        text: '{label}'
                        url: '{url with http://}'
                        postback: '{postback label}'
              Session - Text:
                value:
                  type: text
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  ttl: '{number of seconds for response}'
                  expire_time: '2024-03-15 13:00:00'
                  text: '{plain text}'
                  extra: '{extra value}'
                  suggestions:
                  - type: '{label name}'
                    text: '{plain text}'
                    latitude: '{latitude value}'
                    longitude: '{longitude value}'
                    postback: '{postback text}'
                  - type: calendar
                    postback: '{postback text}'
                    text: Save to calendar
                    start: '{start time}'
                    end: '{end time}'
                    title: '{title name}'
                    description: '{Description of the calendar event}'
                  fallback_text: '{value {#var#} value}'
              Session - Media:
                value:
                  type: media
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  url: '{sample (image/pdf/video mp4) url starting with https://}'
                  extra: '{extra value}'
                  thumbnail_url: '{sample (image/pdf/video mp4) url starting with https://}'
                  id: '{media id}'
                  thumbnail_id: '{media id}'
                  suggestions:
                  - type: '{label name}'
                    text: '{plain text}'
                    latitude: '{latitude value}'
                    longitude: '{longitude value}'
                    postback: '{postback text}'
                  - type: calendar
                    postback: '{postback text}'
                    text: Save to calendar
                    start: '{start time}'
                    end: '{end time}'
                    title: '{title name}'
                    description: '{Description of the calendar event}'
                  fallback_text: '{value {#var#} value}'
              Session - Video With Thumbnail URL:
                value:
                  type: card
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  card:
                    title: '{plain text}'
                    description: '{description for card}'
                    url: '{sample (image/video mp4) url starting with https://}'
                    thumbnail_url: '{sample (image/video mp4) thumbnail url starting with https://}'
                    suggestions:
                    - type: message
                      postback: '{postback text}'
                      text: '{plain text}'
                    - type: message
                      postback: '{postback text}'
                      text: '{plain text}'
              Session - Video With Thumbnail ID:
                value:
                  type: card
                  phone_no: '{mobile number with country code}'
                  bot_name: '{RML agent name}'
                  card:
                    title: '{plain text}'
                    description: '{description for card}'
                    id: '{sample (image/video mp4) media id}'
                    thumbnail_id: '{sample (image/video mp4) thumbnail media id}'
                    suggestions:
                    - type: message
                      postback: '{postback text}'
                  

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