Send Message
Initiate Viber number message sending service via API.
- URL:
https://api2.nxcloud.com/api/viber/mt
- Method:
POST
- Content-Type:
application/json
- Requires authentication: Yes
Authentication Mechanism
Please refer to the following link for authentication rules: API Interface Calling Convention
Request Parameters
Header parameters:
Parameter |
Type |
Required |
Example |
Description |
accessKey |
String |
Yes |
fme2na3kdi3ki |
User identity identifier |
ts |
String |
Yes |
1655710885431 |
Current timestamp of the request (in milliseconds). The maximum time difference allowed between the client and the NXCLOUD server is 60 seconds. |
bizType |
String |
Yes |
7 |
Viber business type, fixed value "7" |
action |
String |
Yes |
mt |
Viber business operation, fixed value "mt" |
sign |
String |
Yes |
6e9506557d1f289501d333ee2c365826 |
API input parameter signature, signature algorithm |
Body parameters:
Parameter |
Type |
Required |
Example |
Description |
appkey |
String |
Yes |
pem28kje |
Application appkey |
phone |
String |
Yes |
86158xxxx1795 |
Viber number of the message recipient, including the country code. For example, 86158xxxx1795 |
functionType |
String |
Yes |
text |
Viber message function type. The message supports the following function types: 1. text Text 2. image Image 3. text_image Text + Image 4. text_image_button Text + Image + Button 5. text_button Text + Button 6. file File 7. video Video 8. video_text Video + Text9. video_text_button Video + Text + Button |
messageData |
JsonObject |
Yes |
Refer to the request examples |
Viber message body parameters |
Message Function Types
- text:
Parameter |
Type |
Required |
Example |
Description |
rateType |
String |
Yes |
Transactional |
Available billing types (Transactional /Session /OtpTemplate ) |
text |
String |
No |
Your code is 989724. |
Text message content (When rateType is of Transactional or Session, this param is required ) |
temolateId |
String |
No |
1 |
template id(When rateType is of OtpTemplate, this param is required) - Refer to OTP template for instructions |
temolateParams |
String |
No |
{"pin","132132"} |
template params (When rateType is of OtpTemplate, this param is required) - Refer to OTP template for instructions |
temolateLang |
String |
No |
en |
template lang (When rateType is of OtpTemplate, this param is required) - Refer to OTP template lang for instructions |
- image:
Parameter |
Type |
Required |
Example |
Description |
rateType |
String |
Yes |
Promotional |
Available billing types (Promotional /Session ) |
image |
String |
Yes |
https://***.jpeg |
Image link |
- text_image:
Parameter |
Type |
Required |
Example |
Description |
rateType |
String |
Yes |
Promotional |
Available billing types (Promotional ) |
text |
String |
Yes |
Your code is 989724. |
Text message content |
image |
String |
Yes |
https://***.jpeg |
Image link |
- text_image_button:
Parameter |
Type |
Required |
Example |
Description |
rateType |
String |
Yes |
Promotional |
Available billing types (Promotional ) |
text |
String |
Yes |
Your code is 989724. |
Text message content |
image |
String |
Yes |
https://***.jpeg |
Image link |
buttonText |
String |
Yes |
Click me |
Button title |
buttonLink |
String |
Yes |
http://www.viber.com |
Button link |
- text_button:
Parameter |
Type |
Required |
Example |
Description |
rateType |
String |
Yes |
Promotional |
Available billing types (Promotional ) |
text |
String |
Yes |
Your code is 989724. |
Text message content |
buttonText |
String |
Yes |
Click me |
Button title |
buttonLink |
String |
Yes |
http://www.viber.com |
Button link |
- file:
Parameter |
Type |
Required |
Example |
Description |
rateType |
String |
Yes |
Transactional |
Available billing types (Transactional /Session ) |
fileName |
String |
Yes |
fileName.pdf |
File name |
fileLink |
String |
Yes |
https://***.pdf |
File link |
fileType |
String |
Yes |
pdf |
File type (Refer to the supported file types list) |
- video:
Parameter |
Type |
Required |
Example |
Description |
rateType |
String |
Yes |
Promotional |
Available billing types (Promotional ) |
thumbnail |
String |
Yes |
https://***.jpeg |
Video thumbnail |
videoLink |
String |
Yes |
https://***.mp4 |
Video link |
videoSize |
Number |
Yes |
1024 |
Video file size (in bytes, cannot exceed 200MB) |
duration |
Number |
Yes |
10 |
Video duration (in seconds, cannot exceed 600s) |
- video_text:
Parameter |
Type |
Required |
Example |
Description |
rateType |
String |
Yes |
Promotional |
Available billing types (Promotional ) |
thumbnail |
String |
Yes |
https://***.jpeg |
Video thumbnail |
videoLink |
String |
Yes |
https://***.mp4 |
Video link |
videoSize |
Number |
Yes |
1024 |
Video file size (in bytes, cannot exceed 200MB) |
duration |
Number |
Yes |
10 |
Video duration (in seconds, cannot exceed 600s) |
text |
String |
Yes |
Your code is 989724. |
Text message content |
- video_text_button:
Parameter |
Type |
Required |
Example |
Description |
rateType |
String |
Yes |
Promotional |
Available billing types (Promotional ) |
thumbnail |
String |
Yes |
https://***.jpeg |
Video thumbnail |
videoLink |
String |
Yes |
https://***.mp4 |
Video link |
videoSize |
Number |
Yes |
1024 |
Video file size (in bytes, cannot exceed 200MB) |
duration |
Number |
Yes |
10 |
Video duration (in seconds, cannot exceed 600s) |
text |
String |
Yes |
Your code is 989724. |
Text message content |
buttonText |
String |
Yes |
Click me |
Button title |
Request Examples
Text Request Example
Body (application/json) parameters:
{
"appkey": "TexxxP6",
"phone": "791xxxxx730",
"functionType": "text",
"messageData": {
"rateType": "Transactional",
"text": "Your code is 989724."
}
}
Image Request Example
Body (application/json) parameters:
{
"appkey": "TexxxP6",
"phone": "791xxxxx730",
"functionType": "image",
"messageData": {
"rateType": "Promotional",
"image": "https://***.jpeg"
}
}
Text + Image Request Example
Body (application/json) parameters:
{
"appkey": "TexxxP6",
"phone": "791xxxxx730",
"functionType": "text_image",
"messageData": {
"rateType": "Promotional",
"text": "Your code is 989724.",
"image": "https://***.jpeg"
}
}
Text + Image + Button Request Example
Body (application/json) parameters:
{
"appkey": "TexxxP6",
"phone": "791xxxxx730",
"functionType": "text_image_button",
"messageData": {
"rateType": "Promotional",
"text": "Your code is 989724.",
"image": "https://***.jpeg",
"buttonText": "Click me",
"buttonLink": "http://www.viber.com"
}
}
Text + Button Request Example
Body (application/json) parameters:
{
"appkey": "TexxxP6",
"phone": "791xxxxx730",
"functionType": "text_button",
"messageData": {
"rateType": "Promotional",
"text": "Your code is 989724.",
"buttonText": "Click me",
"buttonLink": "http://www.viber.com"
}
}
File Request Example
Body (application/json) parameters:
{
"appkey": "TexxxP6",
"phone": "791xxxxx730",
"functionType": "file",
"messageData": {
"rateType": "Transactional",
"fileType": "pdf",
"fileName": "fileName.pdf",
"fileLink": "https://***.pdf"
}
}
Video Request Example
Body (application/json) parameters:
{
"appkey": "TexxxP6",
"phone": "791xxxxx730",
"functionType": "video",
"messageData": {
"rateType": "Promotional",
"thumbnail": "https://***.jpeg",
"videoSize": 882472,
"duration": 15,
"videoLink": "https://***.mp4"
}
}
Video + Text Request Example
Body (application/json) parameters:
{
"appkey": "TexxxP6",
"phone": "791xxxxx730",
"functionType": "video_text",
"messageData": {
"rateType": "Promotional",
"thumbnail": "https://***.jpeg",
"videoSize": 882472,
"duration": 15,
"videoLink": "https://***.mp4",
"text": "Your code is 989724."
}
}
Video + Text + Button Request Example
Body (application/json) parameters:
{
"appkey": "TexxxP6",
"phone": "791xxxxx730",
"functionType": "video_text_button",
"messageData": {
"rateType": "Promotional",
"thumbnail": "https://***.jpeg",
"videoSize": 882472,
"duration": 15,
"videoLink": "https://***.mp4",
"text": "Your code is 989724.",
"buttonText": "button text"
}
}
Response Examples
Success Example
{
"code": 0,
"message": "Success",
"data": {
"requestId": "b81e8e9fcbbb422a813863e903de94bd"
}
}
Failure Example
{
"code": -1,
"message": "Failure"
}
Response Code Description
code |
message |
Solution |
0 |
Success |
|
-1 |
Failure |
Please contact the technical personnel to troubleshoot the issue |
1000~100X |
Authentication failed |
Refer to the API authentication section for details |
1100 |
Customer does not exist / Status is unavailable |
Account status exception, contact the business personnel to handle the account issue |
1102 |
Insufficient balance |
Insufficient account balance, please contact the business personnel to recharge |
9000 |
Request parameter error |
Missing parameters, please check the required parameters |
9001 |
System business error |
System business error, please contact the technical personnel to troubleshoot the issue |
9002 |
Phone number error |
Invalid phone number, please check the correctness of the number |
9003 |
Customer APP does not exist / Status is unavailable |
Application status exception, contact the business personnel to handle the creation/disabling of the cloud platform application |
9004 |
Customer APP does not have quotation |
Application quotation missing, contact the business personnel to handle the application quotation issue |
9005 |
Missing customer APP routes |
Application routes missing, please contact the technical personnel to investigate the routes |
9999 |
Unknown error |
Please contact the technical personnel to troubleshoot the issue |
Appendix
File Type List
File Type |
File Formats |
Max File Size |
Documents |
.doc, .docx, .rtf, .dot, .dotx, .odt ,odf, .fodt, .txt, .info |
200MB |
PDF |
.pdf, .xps, .pdax, .eps |
200MB |
Spreadsheet |
.xls, .xlsx, .ods, .fods, .csv, .xlsm, .xltx |
200MB |
Template Description
- Mandatory template sending countries: Russia (
RU
), Ukraine (UK
), Belarus (BY
)
- Billing rules: For
text
type messages, it must match the template approved by Viber registration review. If it matches successfully, it will be billed as Transactional
; if it fails to match, it will be billed as Promotional
.
Session Description
- Session Start
When the end user initiates a conversation, sending a message of session type will trigger a 24-hour session window.
- Session Limitations
- Without a response from the end user, you can send a maximum of 5 consecutive session type messages.
- A single session is limited to sending 60 messages to the user.
- After reaching the limit of 60 messages, the session ends.
- If the user responds, sending a session message at this point will start a new session.
- Session Billing
- Without starting a session, sending session messages will be billed separately based on the message type (e.g., for
text
type messages, if not within a session, it will be sent as Session
and billed as Transactional
).
- When a session is started, the first session message will be billed as
Session
, and subsequent session messages within the session will not be billed.
OTP Template
template id |
template params |
template Example |
1 |
pin(String) |
Your code is {{pin}}. Please don't share your code with ANYONE. We'll never call or message you and ask for it. |
2 |
pin(String) |
Your code is {{pin}}. It's valid for 5 minutes. Please don't share your code with ANYONE. We'll never call or message you and ask for it |
3 |
pin(String)、 businessPlatformName(String) |
{{business_platform_name}}: Your code is {{pin}}. Please don't share your code with ANYONE. We'll never call or message you and ask for it |
4 |
pin(String)、codeValidityTime(int) |
Your code is {{pin}}. It's valid for {{code_validity_time}} minutes. Please don't share your code with ANYONE. We'll never call or message you and ask for it. |
5 |
pin(String)、pinType(String)、codeValidityTime(int) |
Your {{pin_type}} code is {{pin}}. It's valid for {{code_validity_time}} minutes. Please don't share your code with ANYONE. We'll never call or message you and ask for it. |
6 |
pin(String)、businessPlatformName(String)、codeValidityTime(int) |
Your {{business_platform_name}} code is {{pin}}. It's valid for {{code_validity_time}} hours. Please don't share your code with ANYONE. We'll never call or message you and ask for it |
7 |
pin(String)、pinType(String) |
Your {{pin_type}} code is {{pin}}. Please don't share your code with ANYONE. We'll never call or message you and ask for it |
8 |
pin(String)、businessPlatformActionName(String) |
Your one-time password for {{business_platform_action_name}} is {{pin}}. Please don't share your code with ANYONE. We'll never call or message you and ask for it. |
9 |
pin(String)、businessPlatformName(String)、codeReason(String) |
{{business_platform_name}}: Your code is {{pin}}. You got this code because {{code_reason}}. Please don't share your code with ANYONE. We'll never call or message you and ask for it. |
OTP Template Lang
-- | --
Englis | en
Arabic | ar
Bulgarian | bg
Croatian | hr
Czech | cs
Danish | da
German | de
Greek |el
Spanish |es
Finnish | fi
French | fr
Hebrew | he
Burmese | my
Hungarian | hu
Indonesian | id
Italian | it
Norwegian | nb
Dutch | nl
Polish | pl
Portuguese(Portugal) | pt
Portuguese (Brazil) | br
Romanian | ro
Russian | ru
Slovak | sk
Serbian | sr
Swedish | sv
Thai | th
Turkish | tr
Ukrainian | uk
Vietnamese | vi
Persian | fa
Belarusian | be
Japanese | ja