openapi: 3.2.0 info: version: 1.5.0 title: Route Mobile Viber OpenAPI Specification Viber Business Messaging API description: Welcome to the Route Mobile developer hub. You'll find comprehensive Viber API documentation to help you start working with Route Mobile as quickly as possible, as well as support if you get stuck. Let's jump right in! contact: url: https://developers.routemobile.com/ name: Route Mobile Development email: support@routemobile.com license: name: Proprietary url: https://www.routemobile.com/terms-conditions/ x-logo: url: https://routemobile.github.io/Viber-Business-Messages-API/Logo.png backgroundColor: '#FFFFFF' altText: RouteMobile logo servers: - url: https://apis.rmlconnect.net - url: '{client callback}' security: - jwt: [] tags: - name: Viber Business Messaging API description: Send single messages to individual Viber users including text, images, videos, files, OTP verification, and interactive buttons. Also manage campaign file uploads and legacy campaign send operations. paths: /vbs/api/v2/send: post: tags: - Viber Business Messaging API summary: Viber Send Single Messages APIs description: 'Viber Business Send Messages APIs allow businesses to send a variety of message types to their users on the Viber platform. These APIs enable businesses to engage with their customers, deliver personalized content, and provide interactive experiences through Viber''s messaging platform. Here are the supported Viber Business Send Single Message types: - **Single Text:** Send a plain text message to a recipient. - **Single Text Button:** Send a text message with an action button. - **Single Text Button Image:** Send a message combining text, a button, and an image. - **Single Text Image:** Send a message combining text and an image. - **Single Image:** Send a standalone image message. - **Single File:** Send a file/document attachment. - **Single Video:** Send a video message. - **Single Video Text:** Send a video with accompanying text. - **Single Video Button Text:** Send a video with text and an action button. - **Single Video Text Action Button:** Send a video with text and a structured action button object. - **OTP / Verification Message:** Send a one-time password or verification code using a pre-approved template. - **Text Template:** Send a branded text message using an approved template ID. - **Text Message with Fallback:** Send a Viber message with an automatic fallback to WhatsApp or SMS if the recipient is unreachable on Viber.' operationId: singleVideoText x-readme: samples-languages: - curl - python - node - java - php requestBody: description: '' required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/vbs_single_textbuttonimg_msg' - $ref: '#/components/schemas/vbs_single_textbutton_msg' - $ref: '#/components/schemas/vbs_single_text_msg' - $ref: '#/components/schemas/vbs_single_textimage_msg' - $ref: '#/components/schemas/vbs_single_image_msg' - $ref: '#/components/schemas/vbs_single_file_msg' - $ref: '#/components/schemas/vbs_single_video_msg' - $ref: '#/components/schemas/vbs_single_videotext_msg' - $ref: '#/components/schemas/vbs_single_video_button_text_msg' - $ref: '#/components/schemas/vbs_single_video_text_action_button_msg' - $ref: '#/components/schemas/vbs_single_otp_msg' - $ref: '#/components/schemas/vbs_single_text_template_msg' - $ref: '#/components/schemas/vbs_single_fallback_msg' examples: Single Text Button Image: value: phone: '{mobile with country code}' text: '{text}' button_text: '{button text}' button_link: '{button link with https://}' img: '{image link with https:// with extension}' ttl: '{time in seconds}' message_type: template method: one_way/two_way Single Text Button: value: phone: '{mobile with country code}' text: '{text}' button_text: '{button text}' button_link: '{button link with https://}' message_type: media method: one_way/two_way Single Text: value: phone: '{mobile with country code}' text: '{text}' message_type: text method: one_way/two_way/session Single Image: value: phone: '{mobile with country code}' img: '{image link with https:// with extension}' ttl: '{time in seconds}' message_type: image method: two_way/session Single File: value: phone: '{mobile with country code }' message_type: file method: two_way/session ttl: '{time in seconds}' file_url: '{file link with https:// with extension}' file_name: test Single Video: value: phone: '{mobile with country code}' message_type: video method: two_way ttl: '{time in seconds}' video: '{video link with https:// with extension' thumbnail_url: '{image link with https:// with extension}' Single Video Text: value: phone: '{mobile with country code}' video: '{video link with https:// with extension}' text: '{body text}' ttl: '{time in seconds}' message_type: text_video method: two_way Single Text Image: value: phone: '{mobile with country code}' message_type: text_image method: promotion img: '{image link with https:// with extension}' text: '{body text}' tracking_data: '{tracking data}' Single Video Button Text: value: phone: '{mobile with country code}' message_type: video_action method: promotion video: '{video link with https:// with extension}' text: '{body text}' thumbnail_url: '{thumbnail image link with https:// with extension}' button_text: '{button text}' Single Video Text Action Button: value: phone: '{mobile with country code}' message_type: video_text_action_button method: promotion video: '{video link with https:// with extension}' text: '{body text}' thumbnail_url: '{thumbnail image link with https:// with extension}' button: button_url: '{button url with https://}' button_text: '{button text}' OTP Verification Message: value: phone: '{mobile with country code}' message_type: verify_otp method: verify template: template_id: '{template UUID}' template_params: pin: '{otp code}' business_platform_name: '{business name}' template_lang: en Text Template: value: phone: '{mobile with country code}' message_type: text_template method: transaction text: '{message text}' tracking_data: '{tracking data}' Text with Fallback to WhatsApp: value: phone: '{mobile with country code}' message_type: text method: transaction text: '{message text}' tracking_data: '{tracking data}' fallback_channel: whatsapp fallback_whatsapp: fallback_sender: '{sender id}' fallback_username: '{whatsapp username}' fallback_text: '{fallback message text}' template_id: '{whatsapp template id}' tm_id: '{tm id}' pe_id: '{pe id}' Text with Fallback to SMS: value: phone: '{mobile with country code}' message_type: text method: transaction text: '{message text}' tracking_data: '{tracking data}' fallback_channel: sms fallback_sms: fallback_sender: '{sender id}' fallback_username: '{sms username}' fallback_text: '{fallback message text}' template_id: '{sms template id}' tm_id: '{tm id}' pe_id: '{pe id}' application/xml: schema: type: object responses: '202': description: Accepted content: application/json: schema: type: object properties: status: type: string description: The status of the message delivery. message: type: string description: The response message. request_id: type: string description: A unique identifier for the request. examples: Successful API execution: value: status: success message: Api execution is successful request_id: 727591b0-e592-11ed-91d7-0242ac13xxxx '400': description: Bad Request content: application/json: schema: oneOf: - $ref: '#/components/schemas/vbs_400_invalid_phone_number' - $ref: '#/components/schemas/vbs_400_invalid_text_msg' - $ref: '#/components/schemas/vbs_400_invalid_button_text' - $ref: '#/components/schemas/vbs_400_invalid_button_link' - $ref: '#/components/schemas/vbs_400_invalid_image_url' - $ref: '#/components/schemas/vbs_400_invalid_time_duration' - $ref: '#/components/schemas/vbs_400_incorrect_message_type' - $ref: '#/components/schemas/vbs_400_incorrect_message_method' - $ref: '#/components/schemas/vbs_400_invalid_thumbnail_url' - $ref: '#/components/schemas/vbs_400_unsupported_file_format' - $ref: '#/components/schemas/vbs_400_unsupported_video_file' - $ref: '#/components/schemas/vbs_400_campaign_short_name' examples: Invalid phone number: value: error: - phone - Please provide valid phone no. Invalid text message: value: error: - text - Length must be between 1 and 1000. Invalid button text: value: error: - button_text - Length must be between 1 and 30. Invalid button link: value: error: - button_link - Not a valid URL. Invalid image URL: value: error: - img - Not a valid URL. Invalid time duration criteria: value: error: - ttl - Must be greater than or equal to 30 and less than or equal to 1209600. Incorrect message type: value: status: failed message: Api execution not successful details: Please provide message type Incorrect message method: value: error: - 'method - Must be one of: one_way, two_way, session.' Invalid thumbnail URL: value: error: - thumbnail_url - Not a valid URL. Unsupported file format: value: error: - file_url - File format not supported Unsupported video file format: value: error: - video - Video format not supported Campaign name is too short: value: error: - campaign_name - Shorter than minimum length 3. '401': description: Authentication Failure content: application/json: schema: type: object properties: response: type: string description: Unauthorized access. examples: 'Unauthorized ': value: response: Unauthorized '404': description: Page Not Found content: application/xml: schema: type: object properties: message: type: string description: The message response. examples: Not found: value: 404 Not Found

Not Found

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

'429': description: Too Many Requests content: application/json: schema: type: object properties: status: type: string description: The error status. 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: status: error message: Too many requests. Please retry after the indicated time. retry_after: 60 '500': description: Internal Server Error content: application/json: schema: type: object properties: status: type: string description: The status of the message. message: type: string description: The response message. examples: Server error: value: status: error message: Unknown error occured while processing request security: - jwt: [] /vbs/api/v2/manage-campaign: post: tags: - Viber Business Messaging API summary: Viber Send Campaign Messages APIs description: 'Viber Business Send Campaign Messages APIs allow businesses to send bulk campaign messages to multiple users on the Viber platform. A campaign uses a `file_code` returned from the Campaign File Upload API to address recipients. Here are the supported Viber Business Send Campaign Message types: - **Campaign Text:** Send a plain text message to multiple recipients. - **Campaign Text Button:** Send a text message with an action button to multiple recipients. - **Campaign Text Button Image:** Send a message with text, a button, and an image to multiple recipients. - **Campaign Text Image:** Send a message combining text and an image. - **Campaign Image:** Send a standalone image to multiple recipients. - **Campaign File:** Send a file/document attachment to multiple recipients. - **Campaign Video:** Send a video message to multiple recipients. - **Campaign Video Text:** Send a video with accompanying text to multiple recipients. - **Campaign Video Text Action Button:** Send a video with text and a structured action button to multiple recipients. - **Campaign Text Template:** Send a branded text message using an approved template to multiple recipients. - **Campaign with Fallback:** Send a Viber campaign with an automatic fallback to WhatsApp or SMS if recipients are unreachable on Viber. Optionally include `schedule_datetime` and `timezone` to schedule the campaign for a future send time. ' operationId: campaignVideoText x-readme: samples-languages: - curl - python - node - java - php requestBody: description: '' required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/vbs_campaign_text_button_image' - $ref: '#/components/schemas/vbs_campaign_text_button' - $ref: '#/components/schemas/vbs_campaign_text_msg' - $ref: '#/components/schemas/vbs_campaign_textimage_msg' - $ref: '#/components/schemas/vbs_campaign_image_msg' - $ref: '#/components/schemas/vbs_campaign_file_msg' - $ref: '#/components/schemas/vbs_campaign_video_msg' - $ref: '#/components/schemas/vbs_campaign_video_text_msg' - $ref: '#/components/schemas/vbs_campaign_video_text_action_button_msg' - $ref: '#/components/schemas/vbs_campaign_text_template_msg' - $ref: '#/components/schemas/vbs_campaign_fallback_msg' examples: Campaign Text Button Image: value: campaign_id: '{campaign id generated post file upload}' campaign_action: start campaign_name: '{campaign name}' ttl: '{time in seconds}' file_mimetype: text/plain filename: '{filename with extension}' payload: text: '{Message}' button_text: '{button name}' button_link: '{button url with https://}' img: '{Public URL starting with http:// and ending with file extension}' message_type: template method: one_way/two_way Campaign Text Button: value: campaign_id: '{campaign id generated post file upload}' campaign_action: start campaign_name: '{campaign name}' ttl: '{time in seconds}' file_mimetype: text/plain filename: '{filename with extension}' payload: text: '{message}' button_text: '{button name}}' button_link: '{button url starting https://}' message_type: media method: one_way/two_way Campaign Text: value: campaign_id: '{campaign id generated post file upload}' campaign_action: start campaign_name: '{campaign name}' ttl: '{time in seconds}' file_mimetype: text/plain filename: '{filename with extension}' payload: text: '{message}' button_text: '{button name}}' button_link: '{button url starting https://}' message_type: media method: one_way/two_way Campaign Image: value: campaign_id: '{campaign id generated post file upload}' campaign_action: start campaign_name: '{campaign name}' ttl: '{time in seconds}' file_mimetype: text/plain filename: '{filename with extension}' payload: img: '{Public URL starting with http:// and ending with file extension}' message_type: image method: two_way/session Campaign File: value: campaign_id: '{campaign id generated post file upload}' campaign_action: start campaign_name: '{campaign name}' ttl: '{time in seconds}' file_mimetype: text/plain filename: '{filename with extension}' payload: file: '{Public URL starting with http:// and ending with file extension}' message_type: file method: two_way/session Campaign Video: value: campaign_id: '{campaign id generated post file upload}' campaign_action: start campaign_name: '{campaign name}' ttl: '{time in seconds}' file_mimetype: text/plain filename: '{filename with extension}' payload: video: '{Public URL starting with http:// and ending with file extension}' message_type: video thumbnail_url: '{image link with https:// with extension}' method: two_way Campaign Video Text: value: file_code: '{file code from upload}' campaign_name: '{campaign name}' personalised: false payload: message_type: text_video method: promotion video: '{video link with https:// with extension}' text: '{body text}' thumbnail_url: '{thumbnail image link with https:// with extension}' Campaign Text Image: value: file_code: '{file code from upload}' campaign_name: '{campaign name}' personalised: false payload: message_type: text_image method: promotion img: '{image link with https:// with extension}' text: '{body text}' Campaign Video Text Action Button: value: file_code: '{file code from upload}' campaign_name: '{campaign name}' personalised: false payload: message_type: video_text_action_button method: promotion video: '{video link with https:// with extension}' text: '{body text}' thumbnail_url: '{thumbnail image link with https:// with extension}' button: button_url: '{button url with https://}' button_text: '{button text}' Campaign Text Template: value: file_code: '{file code from upload}' campaign_name: '{campaign name}' personalised: false payload: message_type: text_template method: promotion text: '{message text}' tracking_data: '{tracking data}' Campaign with Fallback to SMS: value: file_code: '{file code from upload}' campaign_name: '{campaign name}' personalised: false payload: message_type: image method: promotion img: '{image link with https:// with extension}' fallback_channel: sms fallback_sms: fallback_sender: '{sender id}' fallback_username: '{sms username}' fallback_text: '{fallback message text}' template_id: '{sms template id}' tm_id: '{tm id}' pe_id: '{pe id}' Campaign with Fallback to WhatsApp: value: file_code: '{file code from upload}' campaign_name: '{campaign name}' personalised: false payload: message_type: image method: promotion img: '{image link with https:// with extension}' fallback_channel: whatsapp fallback_whatsapp: fallback_sender: '{sender id}' fallback_username: '{whatsapp username}' fallback_text: '{fallback message text}' template_id: '{whatsapp template id}' tm_id: '{tm id}' pe_id: '{pe id}' responses: '202': description: Accepted content: application/json: schema: type: object properties: status: type: string description: The status of the campaign message delivery. message: type: string description: The response message. examples: Campaign is in process: value: status: success message: campaign with id ce078410-e593-11ed-9242-0242ac11xxxx is now processing '400': description: Bad Request content: application/json: schema: oneOf: - $ref: '#/components/schemas/vbs_400_campaign_short_name' - $ref: '#/components/schemas/vbs_400_invalid_text_msg' - $ref: '#/components/schemas/vbs_400_invalid_button_text' - $ref: '#/components/schemas/vbs_400_invalid_time_duration' - $ref: '#/components/schemas/vbs_400_incorrect_message_type' - $ref: '#/components/schemas/vbs_400_incorrect_message_method' - $ref: '#/components/schemas/vbs_400_invalid_thumbnail_url' examples: Campaign name is too short: value: error: - campaign_name - Shorter than minimum length 3. Invalid text message: value: error: - text - Length must be between 1 and 1000. Invalid button text: value: error: - button_text - Length must be between 1 and 30. Invalid time duration criteria: value: error: - ttl - Must be greater than or equal to 30 and less than or equal to 1209600. Incorrect message type: value: status: failed message: Api execution not successful details: Please provide message type Incorrect message method: value: error: - 'method - Must be one of: one_way, two_way, session.' 'Invalid thumbnail URL ': value: error: - thumbnail_url - Not a valid URL. '401': description: Authentication Failure content: application/json: schema: type: object properties: response: type: string description: The response message. examples: Unauthorized: value: response: Unauthorized '404': description: Page Not Found content: application/xml: schema: type: object properties: message: type: string description: The message response. examples: Not found: value: 404 Not Found

Not Found

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

'429': description: Too Many Requests content: application/json: schema: type: object properties: status: type: string description: The error status. 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: status: error message: Too many requests. Please retry after the indicated time. retry_after: 60 '500': description: Internal Server Error content: application/json: schema: type: object properties: status: type: string description: The status of the send campaign message. message: type: string description: The response message. examples: Server error: value: status: error message: Unknown error occured while processing request security: - jwt: [] /vbs/api/v2/upload: post: tags: - Viber Business Messaging API summary: Campaign File Upload description: 'The Campaign File Upload API allows businesses to securely upload their contact list or campaign content files to Viber''s platform for use in bulk campaigns. Files must be uploaded as binary data using `multipart/form-data`. The following file formats are supported: - **CSV** (`.csv`) — Comma-separated contact list - **Excel** (`.xlsx`, `.xls`) — Spreadsheet contact list - **Plain Text** (`.txt`) — Tab or newline-delimited contact list - **ZIP** (`.zip`) — Archive containing a single CSV file Once uploaded, the API returns a `campaign_id` which is required when sending campaign messages via the Send Campaign Messages API.' operationId: campaignFileUpload x-readme: samples-languages: - curl - python - node - java - php requestBody: required: true description: 'Upload a campaign contact list or content file as a binary multipart/form-data request. Supported formats: CSV, XLSX, XLS, TXT, and ZIP (containing CSV). For sample file formats, see: - [Bulk Upload File](https://github.com/routemobile/Viber-Business-Messages-API/blob/master/Sample%20Bulk%20Upload%20File.txt) - [Bulk Upload Campaign File](https://github.com/routemobile/Viber-Business-Messages-API/blob/master/Sample%20Bulk%20Campaign%20File.csv) ' content: multipart/form-data: schema: type: object required: - File - File_mimetype properties: File: type: string format: binary description: 'The binary file to upload. Supported formats: CSV (.csv), Excel (.xlsx, .xls), plain text (.txt), or a ZIP archive (.zip) containing a CSV file.' File_mimetype: type: string description: The MIME type of the uploaded file. Must match the actual file format being sent. enum: - text/csv - text/plain - application/vnd.ms-excel - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - application/zip - application/x-zip-compressed example: text/csv encoding: File: contentType: text/csv, text/plain, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/zip, application/x-zip-compressed examples: CSV Upload: value: File: File_mimetype: text/csv Excel Upload: value: File: File_mimetype: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ZIP Upload: value: File: File_mimetype: application/zip responses: '200': description: Success content: application/json: schema: type: object properties: message: type: string description: The response message. campaign_id: type: string description: The ID of the campaign. file_type: type: string description: The file type. file_size: type: string description: 'The size of the file. ' total_records: type: integer description: Total records in the file. duplicate_records: type: integer description: Duplicate records in the file. valid_records: type: integer description: Valid records in the file. examples: Example 1: value: message: File uploaded successfully campaign_id: f8bc9ddc-f3e7-11ed-9242-0242acxxxxxx file_type: application/vnd.ms-excel file_size: 5.5KB total_records: 2 duplicate_records: 0 valid_records: 2 '401': description: Authentication Failure content: application/json: schema: type: object properties: message: type: string description: The response message. reason: type: string description: The reason for not processing the upload request. status: type: string description: The status of the file upload. examples: JWT Token Expired: value: message: unable to process campaign request reason: jwt token expired status: failure '404': description: Page Not Found content: application/xml: schema: type: object properties: message: type: string description: 'The message response. ' examples: Not Found: value: 404 Not Found

Not Found

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

'429': description: Too Many Requests content: application/json: schema: type: object properties: status: type: string description: The error status. 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: status: error message: Too many requests. Please retry after the indicated time. retry_after: 60 '500': description: Internal Server Error content: application/json: schema: type: object properties: status: type: string description: The status of the file upload. message: type: string description: The response message. examples: Server Error: value: status: error message: Unknown error occured while processing request security: - jwt: [] components: schemas: vbs_campaign_textimage_msg: type: object title: Campaign Text Image description: Send a campaign message combining text and an image to multiple recipients. properties: file_code: type: string description: The file code returned from the Campaign File Upload API. campaign_name: type: string description: The name of the campaign. personalised: type: boolean description: Whether the message uses personalised fields from the contact file. payload: type: object description: The message payload. properties: message_type: type: string description: Must be set to "text_image". method: type: string description: The send method (e.g. "promotion"). img: type: string description: The URL of the image. text: type: string description: The body text to display alongside the image. vbs_single_video_button_text_msg: type: object title: Single Video Button Text description: Send a single video message with accompanying text and an action button to a recipient. properties: phone: type: string description: The recipient's phone number in international format, including the country code. message_type: type: string description: The type of the message. Must be set to "video_action". method: type: string description: The method of sending the message (e.g. "promotion"). video: type: string description: The URL of the video file, hosted publicly and starting with "https://" and ending with the file extension such as ".mp4". text: type: string description: The body text to display with the video. thumbnail_url: type: string description: The thumbnail image URL for the video preview. button_text: type: string description: The text label for the action button. vbs_campaign_image_msg: type: object title: Campaign Image properties: campaign_id: type: string description: 'The ID of the campaign that was generated after uploading the contact list and campaign content files. ' campaign_action: type: string description: 'The action to perform on the campaign. In this case, it is "start" to initiate the campaign. ' campaign_name: type: string description: 'The name of the campaign. ' ttl: type: string description: 'The time-to-live (TTL) value in seconds for the campaign message. ' file_mimetype: type: string description: 'The MIME type of the content file. For example, text/plain, text/csv. ' filename: type: string description: 'The name of the content file with its extension. ' payload: type: object description: The payload of the message. properties: img: type: string description: The URL of the image to be displayed in the message. message_type: type: string description: The type of the message. method: type: string description: The method of sending the campaign message. It can be set to either "two_way" or "session". If set to "two_way", the recipient will be able to reply to the message. If set to "session", the recipient will be able to respond to multiple interactions in the session chat bot. vbs_single_videotext_msg: type: object title: Single Video Text description: Send a single message with text and a video to a recipient. You can specify the text and the URL of the video to be displayed in the message. properties: phone: type: string description: 'The recipient''s phone number in international format, including the country code. ' video: type: string description: 'The URL of the video file, hosted publicly and starting with "https://" and ending with the file extension, such as ".mp4". ' text: type: string description: 'The text in the message. ' ttl: type: string description: 'The time-to-live (TTL) of the message in seconds. ' message_type: type: string description: 'The type of the message. In this case, it should be set to "video". ' method: type: string description: 'The method of sending the message. If set to "two_way", the recipient will be able to reply to the message. ' vbs_single_file_msg: type: object title: Single File description: Send a single file message to a recipient. You can upload a file and specify its URL to be sent as a message attachment. properties: phone: type: string description: The recipient's phone number in international format, including the country code. message_type: type: string description: The type of the message. In this case, it should be set to "file". method: type: string description: 'The method of sending the message. It can be set to either "two_way" or "session". If set to "two_way", the recipient will be able to reply to the message. If set to "session", the recipient will be able to respond to multiple interactions in the session chat bot. ' ttl: type: string description: 'The time-to-live (TTL) of the message in seconds. ' file_url: type: string description: The URL of the document file, hosted publicly and starting with "https://" and ending with the file extension. file_name: type: string description: 'The name of the file. ' vbs_campaign_video_text_msg: type: object title: Campaign Video Text properties: campaign_id: type: string description: 'The ID of the campaign that was generated after uploading the contact list and campaign content files. ' campaign_action: type: string description: "The action to perform on the campaign. \n" campaign_name: type: string description: 'The name of the campaign. ' ttl: type: string description: 'The time-to-live (TTL) value in seconds for the campaign message. ' file_mimetype: type: string description: 'The MIME type of the content file. For example, text/plain, text/csv. ' filename: type: string description: 'The name of the content file with its extension. ' payload: type: object description: The payload of the message. properties: video: type: string description: The URL of the video file, hosted publicly and starting with "https://" and ending with the file extension, such as ".mp4". message_type: type: string description: The type of the message, which is "file or video". thumbnail_url: type: string description: The thumbnail image URL of the video file, hosted publicly and starting with "https://" and ending with the file extension. text: type: string description: The text in the message. method: type: string description: The method of sending the campaign message. It can be set to either "one_way" or "two_way". If set to "one_way", the recipient will not be able to reply to the message. If set to "two_way", the recipient will be able to reply to the message. If set to "session", the recipient will be able to respond to multiple interactions in the session chat bot. vbs_400_unsupported_file_format: type: object title: Unsupported file format properties: error: type: array description: Unsupported file format. items: type: string vbs_single_otp_msg: type: object title: OTP Verification Message description: Send a one-time password or verification code to a recipient using a pre-approved Viber OTP template. Template parameters are passed as key-value pairs inside `template_params`. properties: phone: type: string description: The recipient's phone number in international format, including the country code. message_type: type: string description: The type of the message. Must be set to "verify_otp". method: type: string description: The method of sending. Must be set to "verify". template: type: object description: The OTP template configuration. properties: template_id: type: string description: The UUID of the approved OTP template. template_params: type: object description: Key-value pairs of template parameter substitutions. additionalProperties: type: string template_lang: type: string description: The language code for the template (e.g. "en"). vbs_campaign_video_text_action_button_msg: type: object title: Campaign Video Text Action Button description: Send a campaign video message with text and a structured action button to multiple recipients. properties: file_code: type: string description: The file code returned from the Campaign File Upload API. campaign_name: type: string description: The name of the campaign. personalised: type: boolean description: Whether the message uses personalised fields from the contact file. schedule_datetime: type: string description: Optional scheduled send time in the format "YYYY-MM-DD HH:MM:SS". timezone: type: string description: Timezone for the scheduled send (e.g. "Asia/Kolkata"). payload: type: object description: The message payload. properties: message_type: type: string description: Must be set to "video_text_action_button". method: type: string description: The send method (e.g. "promotion"). video: type: string description: The URL of the video file. text: type: string description: The body text to display with the video. thumbnail_url: type: string description: The thumbnail image URL for the video preview. button: type: object description: The structured action button object. properties: button_url: type: string description: The URL the button should open. button_text: type: string description: The text label displayed on the button. vbs_400_invalid_button_text: type: object title: Invalid button text properties: error: type: array description: Invalid button text. items: type: string vbs_single_text_template_msg: type: object title: Single Text Template description: Send a branded text message to a recipient using an approved Viber text template. properties: phone: type: string description: The recipient's phone number in international format, including the country code. message_type: type: string description: The type of the message. Must be set to "text_template". method: type: string description: The method of sending the message (e.g. "transaction"). text: type: string description: The message text, matching the approved template syntax. tracking_data: type: string description: Optional tracking identifier for the message. vbs_single_text_msg: type: object title: Single Text description: Send a single text message to a recipient without any additional elements such as buttons, images, or videos. properties: phone: type: string description: The recipient's phone number in international format, including the country code. text: type: string description: 'The text to display in the message. ' message_type: type: string description: 'The type of the message. In this case, it should be set to "text". ' method: type: string description: 'The method of sending the message. It can be set to either "one_way" or "two_way". If set to "one_way", the recipient will not be able to reply to the message. If set to "two_way", the recipient will be able to reply to the message. ' vbs_400_invalid_time_duration: type: object title: Invalid time duration criteria properties: error: type: array description: Invalid time duration criteria. items: type: string vbs_400_invalid_text_msg: type: object title: Invalid text message properties: error: type: array description: Invalid text message. items: type: string vbs_single_video_text_action_button_msg: type: object title: Single Video Text Action Button description: Send a single video message with text and a structured action button (with both a URL and text label) to a recipient. properties: phone: type: string description: The recipient's phone number in international format, including the country code. message_type: type: string description: The type of the message. Must be set to "video_text_action_button". method: type: string description: The method of sending the message (e.g. "promotion"). video: type: string description: The URL of the video file, hosted publicly and starting with "https://" and ending with the file extension such as ".mp4". text: type: string description: The body text to display with the video. thumbnail_url: type: string description: The thumbnail image URL for the video preview. button: type: object description: The structured action button object. properties: button_url: type: string description: The URL the button should open. button_text: type: string description: The text label displayed on the button. vbs_single_fallback_msg: type: object title: Single Message with Fallback description: 'Send a Viber message with an automatic fallback channel in case the recipient is unreachable on Viber. Fallback can be to WhatsApp (`fallback_channel: whatsapp`) or SMS (`fallback_channel: sms`). Include the corresponding `fallback_whatsapp` or `fallback_sms` block.' properties: phone: type: string description: The recipient's phone number in international format, including the country code. message_type: type: string description: The Viber message type (e.g. "text"). method: type: string description: The method of sending the message. text: type: string description: The Viber message text. tracking_data: type: string description: Optional tracking identifier for the message. fallback_channel: type: string description: The fallback channel to use if Viber delivery fails. Must be "whatsapp" or "sms". enum: - whatsapp - sms fallback_whatsapp: type: object description: WhatsApp fallback configuration. Required when fallback_channel is "whatsapp". properties: fallback_sender: type: string description: The WhatsApp sender ID. fallback_username: type: string description: The WhatsApp account username. fallback_text: type: string description: The fallback message text. template_id: type: string description: The WhatsApp template ID. tm_id: type: string description: The TM ID for DLT compliance. pe_id: type: string description: The PE ID for DLT compliance. fallback_sms: type: object description: SMS fallback configuration. Required when fallback_channel is "sms". properties: fallback_sender: type: string description: The SMS sender ID. fallback_username: type: string description: The SMS account username. fallback_text: type: string description: The fallback SMS text. template_id: type: string description: The SMS template ID. tm_id: type: string description: The TM ID for DLT compliance. pe_id: type: string description: The PE ID for DLT compliance. vbs_400_invalid_thumbnail_url: type: object title: Invalid thumbnail URL properties: error: type: array description: Invalid thumbnail URL. items: type: string vbs_campaign_text_button_image: type: object title: Campaign Text Button Image properties: campaign_id: type: string description: 'The ID of the campaign that was generated after uploading the contact list and campaign content files. ' campaign_action: type: string description: 'The action to perform on the campaign. In this case, it is "start" to initiate the campaign. ' campaign_name: type: string description: 'The name of the campaign. ' ttl: type: string description: 'The time-to-live (TTL) value in seconds for the campaign message. ' file_mimetype: type: string description: 'The MIME type of the content file. For example, text/plain, text/csv. ' filename: type: string description: 'The name of the content file with its extension. ' payload: type: object description: The payload of the message. properties: text: type: string description: The message text. button_text: type: string description: The text for the button associated with the message. button_link: type: string description: The link to which the button should redirect. img: type: string description: The URL of the image to be displayed in the message. message_type: type: string description: The type of the message, which is "template". method: type: string description: 'The method of sending the campaign message. It can be set to either "one_way" or "two_way". If set to "one_way", the recipient will not be able to reply to the message. If set to "two_way", the recipient will be able to reply to the message. ' vbs_campaign_video_msg: type: object title: Campaign Video properties: campaign_id: type: string description: 'The ID of the campaign that was generated after uploading the contact list and campaign content files. ' campaign_action: type: string description: 'The action to perform on the campaign. In this case, it is "start" to initiate the campaign. ' campaign_name: type: string description: 'The name of the campaign. ' ttl: type: string description: 'The time-to-live (TTL) value in seconds for the campaign message. ' file_mimetype: type: string description: 'The MIME type of the content file. For example, text/plain, text/csv. ' filename: type: string description: 'The name of the content file with its extension. ' payload: type: object description: The payload of the message. properties: video: type: string description: The URL of the video file, hosted publicly and starting with "https://" and ending with the file extension, such as ".mp4". message_type: type: string description: The type of the message, which is "video". thumbnail_url: type: string description: The thumbnail image URL of the video file, hosted publicly and starting with "https://" and ending with the file extension, such as ".jpg". method: type: string description: 'The method of sending the campaign message. It can be set to either "one_way" or "two_way". If set to "one_way", the recipient will not be able to reply to the message. If set to "two_way", the recipient will be able to reply to the message. ' vbs_campaign_fallback_msg: type: object title: Campaign Message with Fallback description: Send a Viber campaign message with automatic fallback to WhatsApp or SMS for recipients unreachable on Viber. Include `fallback_channel` and the corresponding `fallback_whatsapp` or `fallback_sms` block inside the payload. properties: file_code: type: string description: The file code returned from the Campaign File Upload API. campaign_name: type: string description: The name of the campaign. personalised: type: boolean description: Whether the message uses personalised fields from the contact file. payload: type: object description: The message payload including the fallback configuration. properties: message_type: type: string description: The Viber message type (e.g. "image", "text"). method: type: string description: The send method (e.g. "promotion"). fallback_channel: type: string description: The fallback channel. Must be "whatsapp" or "sms". enum: - whatsapp - sms fallback_whatsapp: type: object description: WhatsApp fallback configuration. properties: fallback_sender: type: string fallback_username: type: string fallback_text: type: string template_id: type: string tm_id: type: string pe_id: type: string fallback_sms: type: object description: SMS fallback configuration. properties: fallback_sender: type: string fallback_username: type: string fallback_text: type: string template_id: type: string tm_id: type: string pe_id: type: string vbs_single_textimage_msg: type: object title: Single Text Image description: Send a single message combining a text body and an image to a recipient. properties: phone: type: string description: The recipient's phone number in international format, including the country code. message_type: type: string description: The type of the message. Must be set to "text_image". method: type: string description: The method of sending the message. Typically "promotion". img: type: string description: The URL of the image, hosted publicly and starting with "https://". text: type: string description: The body text to display alongside the image. tracking_data: type: string description: Optional tracking identifier for the message. vbs_single_textbuttonimg_msg: type: object title: Single Text Button Image description: Send a single message with text, a button, and an image to a recipient. You can specify the text, button text, button link, and image URL. properties: phone: type: string description: 'The recipient''s phone number in international format, including the country code. ' text: type: string description: 'The text to display in the message. ' button_text: type: string description: 'The text to display on the button that accompanies the message. ' button_link: type: string description: The URL to include in the button. img: type: string description: The URL of the image file, hosted publicly and starting with "https://" and ending with the file extension, such as ".png". ttl: type: string description: The time-to-live (TTL) of the message in seconds. message_type: type: string description: The type of the message. In this case, it should be set to "template". method: type: string description: 'The method of sending the message. It can be set to either "one_way" or "two_way". If set to "one_way", the recipient will not be able to reply to the message. If set to "two_way", the recipient will be able to reply to the message. ' vbs_campaign_file_msg: type: object title: Campaign File properties: campaign_id: type: string description: 'The ID of the campaign that was generated after uploading the contact list and campaign content files. ' campaign_action: type: string description: 'The action to perform on the campaign. In this case, it is "start" to initiate the campaign. ' campaign_name: type: string description: 'The name of the campaign. ' ttl: type: string description: 'The time-to-live (TTL) value in seconds for the campaign message. ' file_mimetype: type: string description: 'The MIME type of the content file. For example, text/plain, text/csv. ' filename: type: string description: 'The name of the content file with its extension. ' payload: type: object description: The payload of the message. properties: file: type: string description: The URL of the file, hosted publicly and starting with "https://" and ending with the file extension, such as ".pdf". message_type: type: string description: The type of the message, which is "file". method: type: string description: The method of sending the campaign message. It can be set to either "two_way" or "session". If set to "two_way", the recipient will be able to reply to the message. If set to "session", the recipient will be able to respond to multiple interactions in the session chat bot. vbs_400_invalid_image_url: type: object title: Invalid image url properties: error: type: array description: Invalid image url. items: type: string vbs_400_unsupported_video_file: type: object title: Unsupported video file format properties: error: type: array description: Unsupported video file format. items: type: string vbs_400_incorrect_message_method: type: object title: Incorrect message method properties: error: type: array description: Incorrect message method. items: type: string vbs_campaign_text_template_msg: type: object title: Campaign Text Template description: Send a branded text template message to multiple recipients. properties: file_code: type: string description: The file code returned from the Campaign File Upload API. campaign_name: type: string description: The name of the campaign. personalised: type: boolean description: Whether the message uses personalised fields from the contact file. payload: type: object description: The message payload. properties: message_type: type: string description: Must be set to "text_template". method: type: string description: The send method (e.g. "promotion"). text: type: string description: The message text matching the approved template syntax. tracking_data: type: string description: Optional tracking identifier. vbs_400_incorrect_message_type: type: object title: Incorrect message type properties: status: type: string description: The status of the message. message: type: string description: The response message. details: type: string description: The message details. vbs_single_video_msg: type: object title: Single Video description: Send a single video message to a recipient. You can specify the URL of the video to be displayed in the message. properties: phone: type: string description: 'The recipient''s phone number in international format, including the country code. ' message_type: type: string description: 'The type of the message. In this case, it should be set to "video". ' method: type: string description: 'The method of sending the message. If set to "two_way", the recipient will be able to reply to the message. ' ttl: type: string description: 'The time-to-live (TTL) of the message in seconds. ' video: type: string description: 'The URL of the video file, hosted publicly and starting with "https://" and ending with the file extension, such as ".mp4". ' thumbnail_url: type: string description: The thumbnail image URL of the video file, hosted publicly and starting with "https://" and ending with the file extension. vbs_single_image_msg: type: object title: Single Image description: Send a single image message to a recipient. You can specify the URL of the image to be displayed in the message. properties: phone: type: string description: 'The recipient''s phone number in international format, including the country code. ' img: type: string description: 'The URL of the image file, hosted publicly and starting with "https://" and ending with the file extension, such as ".png". ' ttl: type: string description: 'The time-to-live (TTL) of the message in seconds. ' message_type: type: string description: 'The type of the message. ' method: type: string description: 'The method of sending the message. It can be set to either "two_way" or "session". If set to "two_way", the recipient will be able to reply to the message. If set to "session", the recipient will be able to respond to multiple interactions in the session chat bot. ' vbs_400_invalid_phone_number: type: object title: Invalid Phone Number properties: error: type: array description: Invalid phone number. items: type: string vbs_campaign_text_msg: type: object title: Campaign Text properties: campaign_id: type: string description: 'The ID of the campaign that was generated after uploading the contact list and campaign content files. ' campaign_action: type: string description: 'The action to perform on the campaign. In this case, it is "start" to initiate the campaign. ' campaign_name: type: string description: 'The name of the campaign. ' ttl: type: string description: 'The time-to-live (TTL) value in seconds for the campaign message. ' file_mimetype: type: string description: 'The MIME type of the content file. For example, text/plain, text/csv. ' filename: type: string description: 'The name of the content file with its extension. ' payload: type: object description: The payload of the message. properties: text: type: string description: The message text. message_type: type: string description: The type of the message. method: type: string description: The method of sending the campaign message. It can be set to either "one_way" or "two_way". If set to "one_way", the recipient will not be able to reply to the message. If set to "two_way", the recipient will be able to reply to the message. If set to "session", the recipient will be able to respond to multiple interactions in the session chat bot. vbs_400_invalid_button_link: type: object title: Invalid button link properties: error: type: array description: Invalid button link. items: type: string vbs_400_campaign_short_name: type: object title: Short campaign name properties: error: type: array description: Campaign name is too short. items: type: string vbs_single_textbutton_msg: type: object title: Single Text Button description: Send a single text message with a button to a recipient. The button can have a custom text and a URL link. properties: phone: type: string description: The recipient's phone number in international format, including the country code. text: type: string description: The text to display in the message. button_text: type: string description: The text to display on the button that accompanies the message. button_link: type: string description: The URL to include in the button. message_type: type: string description: 'The type of the message. In this case, it should be set to "media". ' method: type: string description: 'The method of sending the message. It can be set to either "one_way" or "two_way". If set to "one_way", the recipient will not be able to reply to the message. If set to "two_way", the recipient will be able to reply to the message. ' vbs_campaign_text_button: type: object title: Campaign Text Button properties: campaign_id: type: string description: 'The ID of the campaign that was generated after uploading the contact list and campaign content files. ' campaign_action: type: string description: 'The action to perform on the campaign. In this case, it is "start" to initiate the campaign. ' campaign_name: type: string description: 'The name of the campaign. ' ttl: type: string description: 'The time-to-live (TTL) value in seconds for the campaign message. ' file_mimetype: type: string description: 'The MIME type of the content file. For example, text/plain, text/csv. ' filename: type: string description: 'The name of the content file with its extension. ' payload: type: object description: The payload of the message. properties: text: type: string description: The message text. button_text: type: string description: The text for the button associated with the message. button_link: type: string description: The link to which the button should redirect. message_type: type: string description: The type of the message, which is "media". method: type: string description: 'The method of sending the campaign message. It can be set to either "one_way" or "two_way". If set to "one_way", the recipient will not be able to reply to the message. If set to "two_way", the recipient will be able to reply to the message. ' securitySchemes: jwt: type: apiKey name: Authorization in: header x-logo: url: https://routemobile.github.io/Viber-Business-Messages-API/Logo.png backgroundColor: '#FFFFFF' altText: RouteMobile logo