NusaSMS API v1.0
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Grab your APIKey on app.nusasms.com, on Account > User management menu.
Authentication
- API Key (APIKey)
- Parameter Name: APIKey, in: header.
APIKey
Get user data using API Key
GET /nusasms_api/1.0/auth/api_key
BASE_URL=https://api.nusasms.com
# BASE_URL=https://dev.nusasms.com # For testing
curl ${BASE_URL}/nusasms_api/1.0/auth/api_key \
-H "APIKey: {YOUR_APIKEY}" \
-H 'Content-Type: application/json' \
# --insecure # Ignore SSL Verification
import requests
BASE_URL = "https://api.nusasms.com/nusasms_api/1.0"
# For testing
# BASE_URL = "https://dev.nusasms.com/nusasms_api/1.0"
HEADERS = {
"Accept": "application/json",
"APIKey": "{YOUR_API_KEY}"
}
r = requests.get(
f'{BASE_URL}/auth/api_key',
headers=HEADERS,
# verify=False # Skip SSL Verification
)
print(r.json())
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"APIKey": []string{" YOUR_API_KEY "},
}
url := "https://api.nusasms.com/nusasms_api/1.0/auth/api_key"
// For testing
// url := "https://dev.nusasms.com/nusasms_api/1.0/auth/api_key"
req, _ := http.NewRequest("GET", url, nil)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
// ...
}
<?php
$BASE_URL = "https://api.nusasms.com/nusasms_api/1.0/auth/api_key";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HTTPHEADER => array(
'APIKey: {YOUR_API_KEY}',
'Content-Type: application/json'
),
CURLOPT_URL => $BASE_URL,
// CURLOPT_SSL_VERIFYPEER => 0, // Skip SSL Verification
));
$resp = curl_exec($curl);
echo $resp;
curl_close($curl);
const axios = require('axios');
const headers = {
'Accept':'application/json',
'APIKey':'YOUR_API_KEY'
};
const url = 'https://api.nusasms.com/nusasms_api/1.0/auth/api_key'
// Test host
//const url = 'https://dev.nusasms.com/nusasms_api/1.0/auth/api_key'
axios.get(url, {headers: headers})
.then(function(response) {
console.log(response.data)
})
.catch(error => {
if (error.response) {
console.error(error.response.data)
} else if (error.request) {
console.error(error.request)
} else {
console.error(error.message);
}
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'APIKey' => 'YOUR_API_KEY'
}
url = 'https://api.nusasms.com/nusasms_api/1.0/auth/api_key'
# Dev host
# url = 'https://dev.nusasms.com/nusasms_api/1.0/auth/api_key'
result = RestClient.get(url, headers=headers)
puts JSON.parse(result)
Example responses
200 Response
{
"error": false,
"message": "Data message",
"data": {
"userid": "string",
"idPerson": 0,
"idClient": 0
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful Response | PersonResponse |
WhatsApp Business
Introduction
Usage flow
- Register Whatsapp Official Account.
- Request for message template.
- Use any pre-approved template to send broadcast message (see Send Broadcast Message section below).
- After any recipient answer a broadcast message, you can send reply message to the recipient. (max: 24 hours after the recipient reply the broadcast messsage)
Rate Limit
- Gateway message request is limited to 60 requests / minute.
Type of Message
- Broadcast: send message using any approved template
- Reply: send message to a recipient whom has been answered broadcast message
Message Template
WhatsApp message templates allow businesses to use pre-approved templates to send structured messages to customers who have opted in to receive notifications.
Message template is devided in 4 parts:
-
Header: (Optional) Add a title or choose which type of media you’ll use for this header.
Valid types:- DOCUMENT:
doc
,docx
,pdf
,ppt
,pptx
,txt
,xlx
, andxlsx
Max: 50 MB - IMAGE:
jpeg
andpng
Max: 5 MB - VIDEO:
mp4
Max: 15 MB - TEXT:
txt
Upon creation,
TEXT
header might have parameters (similar like on the Body)`. - DOCUMENT:
-
Body: Enter the text for your message in the language you’ve selected. You can edit text formats, add emojis or include variables. These allow a developer to add unique information such as specific names, locations or tracking numbers when inputting the templates into WhatsApp Business Platform.
-
Footer: (Optional) Add a short line of text to the bottom of your message template.
-
Buttons: (Optional) Select from the drop down menu to create buttons that let customers respond to your message or take action.
Type of buttons:- Call to action: Create up to 2 buttons that let your customers take action. The types of action include Call phone number and URL to Visit website. This lets you add a phone number or website URL to your message. If you choose Visit website, you can choose from a Static (fixed) website URL or a Dynamic website URL, which creates a personalized link for the customer to view their specific information on your website by adding a variable at the end of the link.
- Quick reply: Create up to 3 buttons that let your customers respond to your message.
Template creation limitation:
- Message template name field is limited to 512 characters.
- Message template content field is limited to 1024 characters.
Message Status
Message status for message is sent
, delivered
, read
, and failed
.
Send Broadcast Message
POST /nusasms_api/1.0/wa_business/broadcast
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
headers := map[string][]string {
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"APIKey": []string{"YOUR_API_KEY"},
}
param_header := map[string]string {
"type": "image",
"link": "https://link.to/yourimage.png",
}
param_body := []interface{} {
map[string]string { "type": "text", "text": "your text" },
map[string]string { "type": "text", "text": "your text again" },
}
// param_buttons := []interface{} {
// map[string]interface{} {},
// }
payload, _ := json.Marshal(map[string]interface{} {
"recipient": "DESTINATION_PHONE_NUMBER",
"gateway_id": "PHONE_NUMBER_ID",
"template": map[string]string {
"name": "TEMPLATE_NAME",
"language": "TEMPLATE_LANGUAGE_CODE",
},
"header": param_header,
"body": param_body,
// "bottons": param_buttons,
})
url := "https://api.nusasms.com/nusasms_api/1.0/wa_business/broadcast"
req, err := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
// ...
}
const axios = require('axios');
const headers = {
Accept: 'application/json',
APIKey: 'YOUR_API_KEY'
};
var data = {
gateway_id: "GATEWAY_ID",
recipient: "RECIPIENT_ID",
template: {
language: "LANG_CODE",
name: "TEMPLATE_NAME"
},
header: {
type: "document",
link: "https://link.to/your-document.pdf"
},
body: [
{ "type": "text", "text": "your text for param 1" },
{ "type": "text", "text": "your text for param 2" },
],
buttons: [
{
sub_type: "quick_reply",
index: 1,
parameters: [
{
type: "payload",
payload: "PAYLOAD"
}
]
}
]
}
const URL = 'https://api.nusasms.com/nusasms_api/1.0/wa_business/broadcast'
axios.post(URL, data, {headers})
.then(response => {
console.log(response.data)
})
.catch(error => {
if (error.response) {
console.error(error.response.data)
} else if (error.request) {
console.error(error.request)
} else {
console.error(error.message);
}
});
<?php
$BASE_URL = 'https://api.nusasms.com/nusasms_api/1.0/wa_business/broadcast';
$curl = curl_init();
$payload = json_encode(array(
'recipient' => 'RECIPIENT',
'gateway_id' => 'GATEWAY_ID',
'template' => array(
'language' => 'LANG_CODE',
'name' => 'TEMPLATE_NAME',
),
'header' => array(
array(
"type" => "text",
"text" => "Text for param 1 on header",
),
array(
"type" => "text",
"text" => "Text for param 2 on header",
)
)
));
echo $payload . "\n";
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $BASE_URL,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array(
"APIKey: YOUR_API_KEY",
'Content-Type: application/json'
),
CURLOPT_POSTFIELDS => $payload,
// CURLOPT_SSL_VERIFYPEER => 0, // Skip SSL Verification
));
$resp = curl_exec($curl);
echo $resp;
import requests
BASE_URL = 'https://api.nusasms.com'
URL = f'{BASE_URL}/nusasms_api/1.0/wa_business/broadcast'
HEADERS = {"APIKey": "DEV_TESTING_API_KEY"}
PAYLOADS = {
"recipient": "RECIPIENT",
"gateway_id": "GATEWAY_ID",
"template": {
"language": "LANG_CODE",
"name": "TEMPLATE_NAME"
},
"body": [
{ "type": "text", "text": "your text for param 1" },
{ "type": "text", "text": "your text for param 2" }
],
"buttons": [
{
"sub_type": "quick_reply",
"index": 1,
"parameters": [
{ "type": "payload", "payload": "PAYLOAD" }
]
}
]
}
r = requests.post(URL, json=PAYLOADS, headers=HEADERS)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'APIKey' => 'DEV_TESTING_API_KEY',
'Content-Type' => 'application/json'
}
payloads = {
'recipient' => 'RECIPIENT',
'gateway_id' => 'GATEWAY_ID',
'template': {
'language' => 'LANG_CODE',
'name' => 'TEMPLATE_NAME'
},
'body' => [
{
"type" => "text",
"text" => "Text for param 1 on body",
},
{
"type" => "text",
"text" => "Text for param 2 on body",
}
]
}
base_url = 'https://api.nusasms.com/nusasms_api/1.0'
response = RestClient::Request.new({
method: :post,
url: base_url + '/wa_business/broadcast',
payload: payloads.to_json,
headers: headers
}).execute do |response, request, result|
case response.code
# Success
when 201
[ :success, puts(response.to_str) ]
when 403
[
:error,
puts("Failed status_code=#{response.code} response=#{response.to_str}")
]
when 422
[
:error,
puts("Failed status_code=#{response.code} response=#{response.to_str}")
]
else
[
:error,
puts("Failed response=#{response.to_str}")
]
end
end
URL=https://api.nusasms.com/nusasms_api/1.0/wa_business/broadcast
curl -X 'POST' $URL \
-H 'Accept: application/json' \
-H 'APIKey: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"recipient": "RECIPIENT",
"gateway_id": "GATEWAY_ID",
"template": {
"language": "LANG_CODE",
"name": "TEMPLATE_NAME"
},
"body": [
{ "type": "text", "text": "your text for param 1" },
{ "type": "text", "text": "your text for param 2" }
],
"buttons": [
{
"sub_type": "quick_reply",
"index": 1,
"parameters": [
{ "type": "payload", "payload": "PAYLOAD" }
]
}
]
}'
Broadcast message can be sent using pre-approved template. A template message parameters consists of message part, namely:
header
: Add a title or choose which type of media.body
: Text for your message in the language you’ve selected.buttons
: Message button parameters.
Header
Media file is provided via header
.
The media file types that are allowed are document
, image
and video
.
Only one media header is allowed per message.
Apart from media you can have a message title that can use multiple text parameters.
Media (image
, video
and document
)
Text
body
You can include multiple text parameters on the body
upon requesting template.
buttons
There are 2 types of button on message template
- Action button: URL and Call button. Max 2 buttons per message.
If you use 2 buttons, its must be
URL
andCall
button. - Quick reply: text only button for quick reply. Max 3 buttons per message.
Actions
Action buttons parameter is only for dynamic URL Button.
The value of the parameter (text
) is developer-provided suffix that is
appended to the predefined prefix URL in the template.
Quick Reply
Body parameter
{
"recipient": "string",
"gateway_id": "string",
"template": {
"name": "string",
"language": "string"
},
"header": {
"type": "image",
"link": "http://example.com",
"filename": "string"
},
"body": [
{
"type": "text",
"text": "string"
}
],
"buttons": [
{
"sub_type": "QUICK_REPLY",
"parameters": {
"type": "payload",
"payload": "string"
},
"index": 2
}
],
"message_id": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | TemplateParam | true | none |
Example responses
200 Response
{
"error": false,
"message": "Data message",
"data": {
"message_id": "string"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful Response | Response |
422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Send Reply Message
POST /nusasms_api/1.0/wa_business/reply
Send reply message
Text
Image (Coming soon)
Location (Coming soon)
Body parameter
{
"recipient": "RECIPIENT",
"gateway_id": "YOUR_GATEWAY_ID",
"type": "text",
"payloads": {
"body": "text example"
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ReplyParameter | true | none |
Example responses
200 Response
{
"error": false,
"message": "Data message",
"data": {
"message_id": "string"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful Response | Response |
422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Send Otp Message
POST /nusasms_api/1.0/wa_business/otp
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
headers := map[string][]string {
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"APIKey": []string{"YOUR_API_KEY"},
}
payload, _ := json.Marshal(map[string]interface{} {
"recipient": "DESTINATION_PHONE_NUMBER",
"gateway_id": "PHONE_NUMBER_ID",
"otp": "YOUR OTP CODE",
"template": []map[string]string {
"name": "AUTHENTICATION_TEMPLATE_NAME",
"language": "TEMPLATE_LANGUAGE_CODE",
}
})
url := "https://api.nusasms.com/nusasms_api/1.0/wa_business/otp"
req, err := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
// ...
}
const axios = require('axios');
const headers = {
Accept: 'application/json',
APIKey: 'YOUR_API_KEY'
};
var data = {
gateway_id: "GATEWAY_ID",
recipient: "RECIPIENT_ID",
template: {
name: "AUTH_TEMPLATE_NAME",
language: "LANG_CODE",
},
otp: "YOUR OTP CODE"
}
const URL = 'https://api.nusasms.com/nusasms_api/1.0/wa_business/otp'
axios.post(URL, data, {headers})
.then(response => {
console.log(response.data)
})
.catch(error => {
if (error.response) {
console.error(error.response.data)
} else if (error.request) {
console.error(error.request)
} else {
console.error(error.message);
}
});
<?php
$BASE_URL = 'https://api.nusasms.com/nusasms_api/1.0/wa_business/otp';
$curl = curl_init();
$payload = json_encode(array(
'recipient' => 'RECIPIENT',
'gateway_id' => 'GATEWAY_ID',
'template' => array(
'name' => 'AUTHENTICATION_TEMPLATE_NAME',
'language' => 'LANG_CODE',
),
'otp' => 'Your OTP Code',
));
echo $payload . "\n";
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $BASE_URL,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array(
"APIKey: YOUR_API_KEY",
'Content-Type: application/json'
),
CURLOPT_POSTFIELDS => $payload,
// CURLOPT_SSL_VERIFYPEER => 0, // Skip SSL Verification
));
$resp = curl_exec($curl);
echo $resp;
import requests
BASE_URL = 'https://api.nusasms.com'
URL = f'{BASE_URL}/nusasms_api/1.0/wa_business/otp'
HEADERS = {"APIKey": "DEV_TESTING_API_KEY"}
PAYLOADS = {
"recipient": "RECIPIENT",
"gateway_id": "GATEWAY_ID",
"template": {
"name": "AUTHENTICATION_TEMPLATE_NAME",
"language": "LANG_CODE",
},
"otp": "Your OTP Code"
}
r = requests.post(URL, json=PAYLOADS, headers=HEADERS)
print(r.json())
require 'rest-client'
require 'json'
headers = {
'APIKey' => 'DEV_TESTING_API_KEY',
'Content-Type' => 'application/json'
}
payloads = {
'recipient' => 'RECIPIENT',
'gateway_id' => 'GATEWAY_ID',
'template' => {
'name' => 'AUTHENTICATION_TEMPLATE_NAME',
'language' => 'LANG_CODE',
},
'otp' => 'Your OTP Code'
}
base_url = 'https://api.nusasms.com/nusasms_api/1.0'
response = RestClient::Request.new({
method: :post,
url: base_url + '/wa_business/otp',
payload: payloads.to_json,
headers: headers
}).execute do |response, request, result|
case response.code
# Success
when 201
[ :success, puts(response.to_str) ]
when 403
[
:error,
puts("Failed status_code=#{response.code} response=#{response.to_str}")
]
when 422
[
:error,
puts("Failed status_code=#{response.code} response=#{response.to_str}")
]
else
[
:error,
puts("Failed response=#{response.to_str}")
]
end
end
URL=https://api.nusasms.com/nusasms_api/1.0/wa_business/otp
curl -X 'POST' $URL \
-H 'Accept: application/json' \
-H 'APIKey: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"recipient": "RECIPIENT",
"gateway_id": "GATEWAY_ID",
"template": {
"name": "AUTHENTICATION_TEMPLATE_NAME",
"language": "LANG_CODE"
},
"otp": "Your OTP Code"
}'
Send OTP message
OTP message can be sent if you has a Authentication Template.
OTP Text requirements
- Max 15 Characters
- Can not contain any space character
> Body parameter
```json
{
"recipient": "string",
"gateway_id": "string",
"otp": "string",
"template": {
"name": "string",
"language": "string"
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | OTPParameter | true | none |
Example responses
200 Response
{
"error": false,
"message": "Data message",
"data": {
"message_id": "string"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful Response | Response |
422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Push URL Callback
Delivery status and Inbox message data is retrieved on your Callback URL. Callback URL setting can be set in Account > Account Settings > WhatsApp Business Webhook menu on app.nusasms.com.
Callback URL will be called with HTTP POST method with json content type.
Delivery Status
Delivery status is status changes of your messages.
The avaiable status is sent
, delivered
, read
and failed
.
Changelog
2025-04-29
- Add more detail about header types and its max size
2024-12-20
- Update on API parameter. Use
template
parameter now.
2023-09-15
Added
- ✨ New parameter,
include_unsubscribe
to allow client’s recipient to exclude their account from client’s messages
2023-07-12
Added
- ✨ New endpoint for WA Business
/wa_business/otp
2023-03-03
Added
- ✨ New API, Whatsapp Business. Send Whatsapp message using official Meta partner.
v1
Added
- SMS API Documentations
Schemas
Button
{
"sub_type": "QUICK_REPLY",
"parameters": {
"type": "payload",
"payload": "string"
},
"index": 2
}
Button
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
sub_type | string | false | none | none |
parameters | ButtonParameter | true | none | none |
index | integer | true | none | none |
Enumerated Values
Property | Value |
---|---|
sub_type | QUICK_REPLY |
sub_type | URL |
ButtonParameter
{
"type": "payload",
"payload": "string"
}
ButtonParameter
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
type | string | false | none | none |
payload | string | false | none | none |
Enumerated Values
Property | Value |
---|---|
type | payload |
Document
{
"type": "document",
"link": "http://example.com",
"filename": "string"
}
Document
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
type | string | true | none | none |
link | string(uri) | true | none | none |
filename | string | false | none | none |
Enumerated Values
Property | Value |
---|---|
type | document |
HTTPValidationError
{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}
HTTPValidationError
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
detail | [ValidationError] | false | none | none |
Image
{
"type": "image",
"link": "http://example.com",
"filename": "string"
}
Image
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
type | string | true | none | none |
link | string(uri) | true | none | none |
filename | string | false | none | none |
Enumerated Values
Property | Value |
---|---|
type | image |
OTPParameter
{
"recipient": "string",
"gateway_id": "string",
"otp": "string",
"template": {
"name": "string",
"language": "string"
}
}
OTPParameter
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
recipient | string | true | none | none |
gateway_id | string | true | none | none |
otp | string | true | none | none |
template | Template | true | none | none |
Person
{
"userid": "string",
"idPerson": 0,
"idClient": 0
}
Person
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
userid | string | true | none | none |
idPerson | integer | true | none | none |
idClient | integer | true | none | none |
PersonResponse
{
"error": false,
"message": "Data message",
"data": {
"userid": "string",
"idPerson": 0,
"idClient": 0
}
}
PersonResponse
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
error | boolean | false | none | none |
message | string | false | none | none |
data | Person | true | none | none |
ReplyParameter
{
"recipient": "RECIPIENT",
"gateway_id": "YOUR_GATEWAY_ID",
"type": "text",
"payloads": {
"body": "text example"
}
}
ReplyParameter
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
recipient | string | true | none | none |
gateway_id | string | true | none | none |
type | string | true | none | none |
payloads | object | false | none | none |
Enumerated Values
Property | Value |
---|---|
type | text |
type | reaction |
type | audio |
type | document |
type | image |
type | sticker |
type | video |
type | location |
Response
{
"error": false,
"message": "Data message",
"data": {
"message_id": "string"
}
}
Response
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
error | boolean | false | none | none |
message | string | false | none | none |
data | ResponseData | true | none | none |
ResponseData
{
"message_id": "string"
}
ResponseData
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
message_id | string | false | none | none |
Template
{
"name": "string",
"language": "string"
}
Template
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | true | none | none |
language | string | true | none | none |
TemplateParam
{
"recipient": "string",
"gateway_id": "string",
"template": {
"name": "string",
"language": "string"
},
"header": {
"type": "image",
"link": "http://example.com",
"filename": "string"
},
"body": [
{
"type": "text",
"text": "string"
}
],
"buttons": [
{
"sub_type": "QUICK_REPLY",
"parameters": {
"type": "payload",
"payload": "string"
},
"index": 2
}
],
"message_id": "string"
}
TemplateParam
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
recipient | string | true | none | none |
gateway_id | string | true | none | none |
template | Template | true | none | none |
header | any | false | none | none |
anyOf
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» anonymous | Image | false | none | none |
or
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» anonymous | Document | false | none | none |
or
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» anonymous | Video | false | none | none |
or
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» anonymous | [Text] | false | none | none |
continued
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
body | [Text] | false | none | none |
buttons | [Button] | false | none | none |
message_id | string | false | none | none |
Text
{
"type": "text",
"text": "string"
}
Text
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
type | string | true | none | none |
text | string | true | none | none |
Enumerated Values
Property | Value |
---|---|
type | text |
ValidationError
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
ValidationError
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
loc | [anyOf] | true | none | none |
anyOf
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» anonymous | string | false | none | none |
or
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» anonymous | integer | false | none | none |
continued
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
msg | string | true | none | none |
type | string | true | none | none |
Video
{
"type": "video",
"link": "http://example.com",
"filename": "string"
}
Video
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
type | string | true | none | none |
link | string(uri) | true | none | none |
filename | string | false | none | none |
Enumerated Values
Property | Value |
---|---|
type | video |