SMSVIRO API Documentation adalah dokumentasi yang kami sediakan untuk membantu Anda mengirimkan SMS melalui aplikasi lain.
Sebelum melakukan request API ada beberapa hal berikut yang perlu diperhatikan:
Berikut cara untuk generate API Key pada Dashboard SMSVIRO:
Berisi endpoint untuk mengirimkan pesan.
Endpoint untuk mengirim pesan tunggal ke satu nomor tujuan atau lebih.
POST https://api.smsviro.com/restapi/sms/1/text/single
Required String
Authorization
:App {{API_KEY}}
API Key didapatkan dari Dashboard SMSVIRO.
Parameter | Tipe Data | Deskripsi |
---|---|---|
from * | String | Sender ID |
to * | String | Nomor tujuan. Jika ingin mengirimkan ke lebih dari satu nomor tujuan pisahkan nomor dengan tanda koma ( , ) |
text * | String | Isi pesan |
Parameter yang ditandai dengan tanda ( * ) bersifat wajib.
Berikut penjelasan mengenai response yang akan tampil setelah melakukan request:
Parameter | Deskripsi |
---|---|
messages | Isi pesan |
to | Nomor tujuan |
messageId | ID yang secara unik mengidentifikasi pesan yang dikirim |
smscount | Jumlah pesan yang dikirim |
status | Status pengiriman pesan |
groupId | ID grup |
groupName | Nama grup |
id | ID status |
name | Nama status |
description | Deskripsi status |
POST /restapi/sms/1/text/single HTTP/1.1
Host: api.smsviro.com
Content-Type: application/json
Authorization: App {{API_KEY}}
Content-Length: 86
{
"from": "{{SENDER_ID}}",
"to": "{{TO}}",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.smsviro.com/restapi/sms/1/text/single',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"from": "{{SENDER_ID}}",
"to": "{{TO}}",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: App {{API_KEY}}'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl --location 'https://api.smsviro.com/restapi/sms/1/text/single' \
--header 'Content-Type: application/json' \
--header 'Authorization: App {{API_KEY}}' \
--data '{
"from": "{{SENDER_ID}}",
"to": "{{TO}}",
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
}'
Penjelasan lebih lanjut mengenai status pesan dapat dilihat pada Statuses Groups.
Status: 200 OK
Pesan berhasil dikirim
{
"messages": [
{
"to": "6287654321",
"status": {
"groupId": 0,
"groupName": "ACCEPTED",
"id": 0,
"name": "MESSAGE_ACCEPTED",
"description": "Message accepted"
},
"smsCount": 1,
"messageId": "MESSAGE-ID-123-xyz"
}
]
}
Penjelasan lebih lanjut mengenai pesan error dapat dilihat pada Errors Groups.
Status: 400 Bad Request
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "BAD_REQUEST",
"text": "Bad request"
}
}
}
Status: 401 Unauthorized
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "UNAUTHORIZED",
"text": "Unauthorized"
}
}
}
Status: 500 Internal Server Error
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "GENERAL_ERROR",
"text": "Something went wrong. Please contact support."
}
}
}
Endpoint untuk mengirimkan pesan dengan Sender ID sama/berbeda ke satu nomor tujuan atau lebih secara bersamaan.
POST https://api.smsviro.com/restapi/sms/1/text/multi
Required String
Authorization
:App {{API_KEY}}
API Key didapatkan dari Dashboard SMSVIRO.
Parameter | Tipe Data | Deskripsi |
---|---|---|
from * | String | Sender ID |
to * | String | Nomor tujuan. Jika ingin mengirimkan ke lebih dari satu nomor tujuan pisahkan nomor dengan tanda koma ( , ) |
text * | String | Isi pesan |
Parameter yang ditandai dengan tanda ( * ) bersifat wajib.
Berikut penjelasan mengenai response yang akan tampil setelah melakukan request:
Parameter | Deskripsi |
---|---|
messages | Isi pesan |
to | Nomor telepon tujuan |
messageId | ID yang secara unik mengidentifikasi pesan yang dikirim |
bulkId | ID yang secara unik mengidentifikasi permintaan. bulkId hanya akan diterima bila Anda mengirim pesan ke lebih dari satu alamat tujuan |
smscount | Jumlah pesan yang dikirim |
status | Status pengiriman pesan |
groupId | ID grup |
groupName | Nama grup |
id | ID status |
name | Nama status |
description | Deskripsi status |
POST /restapi/sms/1/text/multi HTTP/1.1
Host: api.smsviro.com
Content-Type: application/json
Authorization: App {{API_KEY}}
Content-Length: 476
{
"messages": [
{
"from": "{{SENDER_ID}}",
"to": [
"{{TO}}"
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
},
{
"from": "{{SENDER_ID}}",
"to": [
"{{TO}}"
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
}
]
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.smsviro.com/restapi/sms/1/text/multi',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"messages": [
{
"from": "{{SENDER_ID}}",
"to": [
"{{TO}}"
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
},
{
"from": "{{SENDER_ID}}",
"to": [
"{{TO}}"
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
}
]
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: App {{API_KEY}}'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl --location 'https://api.smsviro.com/restapi/sms/1/text/multi' \
--header 'Content-Type: application/json' \
--header 'Authorization: App {{API}}' \
--data '{
"messages": [
{
"from": "{{SENDER_ID}}",
"to": [
"{{TO}}"
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
},
{
"from": "{{SENDER_ID}}",
"to": [
"{{TO}}"
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
}
]
}'
Penjelasan lebih lanjut mengenai status pesan dapat dilihat pada Statuses Groups.
Status: 200 OK
Pesan berhasil dikirim
{
"bulkId": "BULK-ID-123-xyz",
"messages": [
{
"to": "6287654321",
"status": {
"groupId": 0,
"groupName": "ACCEPTED",
"id": 0,
"name": "MESSAGE_ACCEPTED",
"description": "Message accepted"
},
"messageId": "MESSAGE-ID-123-xyz",
"smsCount": 1
}
]
}
Penjelasan lebih lanjut mengenai pesan error dapat dilihat pada Errors Groups.
Status: 400 Bad Request
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "BAD_REQUEST",
"text": "Bad request"
}
}
}
Status: 401 Unauthorized
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "UNAUTHORIZED",
"text": "Unauthorized"
}
}
}
Status: 500 Internal Server Error
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "GENERAL_ERROR",
"text": "Something went wrong. Please contact support."
}
}
}
Endpoint untuk mengirimkan pesan dengan Sender ID yang sama/berbeda ke satu nomor tujuan atau lebih secara bersamaan dengan opsi parameter lebih lanjut.
POST https://api.smsviro.com/restapi/sms/1/text/advanced
Required String
Authorization
:App {{API_KEY}}
API Key didapatkan dari Dashboard SMSVIRO.
Parameter | Tipe Data | Deskripsi |
---|---|---|
from * | String | Sender ID |
to * | String | Nomor tujuan. Jika ingin mengirimkan ke lebih dari satu nomor tujuan pisahkan nomor dengan tanda koma ( , ) |
text * | String | Isi pesan |
bulkId | String | ID hanya diterima jika mengirimkan pesan ke banyak nomor atau mengirim pesan melalui 1 permintaan API. |
messageId | String | ID untuk mengidentifikasi pesan yang dikirim. |
flash | Boolean | Nilai default false. Jika nilainya true, SMS kilat akan dikirim. Jika tidak, SMS biasa akan dikirim. |
transliteration | String | Konversi teks pesan dari satu skrip ke skrip lainnya. Value yang mungkin: “TURKISH”, “YUNANI”, "CYRILLIC", "CENTRAL_EUROPEAN". |
languageCode | String | Menampilkan karakter dengan value: TR untuk bahasa Turki, ES untuk bahasa Spanyol dan PT untuk bahasa Portugis. |
singleShift | String | Tabel shift tunggal menggantikan tabel ekstensi alfabet default GSM 7 bit. |
notifyUrl | String | Delivery report akan dikirim pada URL yang diset sebagai penerima response API. Penjelasan lebih lanjut dapat dilihat pada Notify URL. |
notify
ContentType |
String | Jenis konten delivery report application/json atau application/xml. |
callbackData | String | Data client tambahan yang akan dikirim di NOTIFY URL. |
validityPeriod | Integer | Masa berlaku pesan dalam hitungan menit. Jika periode berakhir, maka pesan tidak dapat dikirim. Lebih dari 48 jam tidak didukung. (diatur otomatis ke 48 jam). |
sendAt | DateTime | Tanggal dan waktu saat pesan akan dikirim. Digunakan untuk schedule SMS. SMS tidak langsung terkirim, tapi sesuai waktu yang sudah dijadwalkan. |
Parameter yang ditandai dengan tanda ( * ) bersifat wajib.
Berikut penjelasan mengenai response yang akan tampil setelah melakukan request:
Parameter | Deskripsi |
---|---|
messages | Isi pesan |
to | Nomor telepon tujuan |
messageId | ID yang secara unik mengidentifikasi pesan yang dikirim |
smscount | Jumlah pesan yang dikirim |
status | Status pengiriman pesan |
groupId | ID grup |
groupName | Nama grup |
id | ID status |
name | Nama status |
description | Deskripsi status |
Notify URL pada payload Body bersifat opsional (tidak wajib ada). Notify URL ini berfungsi untuk menerima perubahan status SMS yang dikirimkan oleh server SMSVIRO. Setiap ada perubahan status delivery pada SMS, maka data tersebut akan dikirimkan ke notify url.
Berikut contoh payload yang dikirimkan oleh server SMSVIRO ke Notify URL
{
"messageId": "MESSAGE-ID-123-xyz",
"status": {
"groupId": 0,
"groupName": "ACCEPTED",
"id": 0,
"name": "MESSAGE_ACCEPTED",
"description": "Message accepted"
}
}
POST /restapi/sms/1/text/advanced HTTP/1.1
Host: api.smsviro.com
Content-Type: application/json
Authorization: App {{API_KEY}}
Content-Length: 1136
{
"messages": [
{
"from": "{{SENDER_ID}}",
"destinations": [
{
"to": "{{TO}}",
"messageId": "{{MESSAGE_ID}}"
}
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum.",
"flash": false,
"language": {
"languageCode": "TR",
"singleShift": true,
"lockingShift": false
},
"transliteration": "TURKISH",
"notifyUrl": "{{NOTIFY_URL}}",
"notifyContentType": "{{NOTIFY_CONTENT_TYPE}}",
"callbackData": "DLR callback data",
"validityPeriod": 720,
"sendAt": "{{SEND_AT}}"
},
{
"from": "{{SENDER_ID}}",
"destinations": [
{
"to": "{{TO}}"
}
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
}
]
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.smsviro.com/restapi/sms/1/text/advanced',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"messages": [
{
"from": "{{SENDER_ID}}",
"destinations": [
{
"to": "{{TO}}",
"messageId": "{{MESSAGE_ID}}"
}
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum.",
"flash": false,
"language": {
"languageCode": "TR",
"singleShift": true,
"lockingShift": false
},
"transliteration": "TURKISH",
"notifyUrl": "{{NOTIFY_URL}}",
"notifyContentType": "{{NOTIFY_CONTENT_TYPE}}",
"callbackData": "DLR callback data",
"validityPeriod": 720,
"sendAt": "{{SEND_AT}}"
},
{
"from": "{{SENDER_ID}}",
"destinations": [
{
"to": "{{TO}}"
}
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
}
]
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: App {{API_KEY}}'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl --location 'https://api.smsviro.com/restapi/sms/1/text/advanced' \
--header 'Content-Type: application/json' \
--header 'Authorization: App {{API_KEY}}' \
--data '{
"messages": [
{
"from": "{{SENDER_ID}}",
"destinations": [
{
"to": "{{TO}}",
"messageId": "{{MESSAGE_ID}}"
}
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum.",
"flash": false,
"language": {
"languageCode": "TR",
"singleShift": true,
"lockingShift": false
},
"transliteration": "TURKISH",
"notifyUrl": "{{NOTIFY_URL}}",
"notifyContentType": "{{NOTIFY_CONTENT_TYPE}}",
"callbackData": "DLR callback data",
"validityPeriod": 720,
"sendAt": "{{SEND_AT}}"
},
{
"from": "{{SENDER_ID}}",
"destinations": [
{
"to": "{{TO}}"
}
],
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras interdum."
}
]
}'
Penjelasan lebih lanjut mengenai status pesan dapat dilihat pada Statuses Groups.
Status: 200 OK
Pesan berhasil dikirim
{
"bulkId": "BULK-ID-123-xyz",
"messages": [
{
"to": "6287654321",
"status": {
"groupId": 0,
"groupName": "ACCEPTED",
"id": 0,
"name": "MESSAGE_ACCEPTED",
"description": "Message accepted"
},
"messageId": "MESSAGE-ID-123-xyz",
"smsCount": 1
}
]
}
Penjelasan lebih lanjut mengenai pesan error dapat dilihat pada Errors Groups.
Status: 400 Bad Request
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "BAD_REQUEST",
"text": "Bad request"
}
}
}
Status: 401 Unauthorized
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "UNAUTHORIZED",
"text": "Unauthorized"
}
}
}
Status: 500 Internal Server Error
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "GENERAL_ERROR",
"text": "Something went wrong. Please contact support."
}
}
}
Endpoint untuk melihat status pengiriman pesan.
GET https://api.smsviro.com/restapi/sms/1/reports
Required String
Authorization
:App {{API_KEY}}
API Key didapatkan dari Dashboard SMSVIRO.
Parameter | Tipe Data | Deskripsi |
---|---|---|
bulkId | String | ID hanya diterima jika mengirimkan pesan ke banyak nomor atau mengirim pesan melalui 1 permintaan API. Dan juga digunakan untuk mendapatkan delivery reports dan message logs |
messageId | String | ID untuk mengidentifikasi pesan yang dikirim |
limit | Integer | Membatasi limit report yang ingin ditampilkan |
Berikut penjelasan mengenai response yang akan tampil setelah melakukan request:
Parameter | Deskripsi |
---|---|
to | Nomor telepon tujuan |
bulkId | ID yang secara unik mengidentifikasi permintaan. bulkId hanya akan diterima bila Anda mengirim pesan ke lebih dari satu alamat tujuan |
messageId | ID yang secara unik mengidentifikasi pesan yang dikirim |
sentAt | Tanggal dan waktu saat pesan dikirim |
doneAt | Tanggal dan waktu saat pesan berhasil dikirim |
smsCount | Jumlah pesan yang dikirim |
price |
|
status and error | Status pengiriman pesan dan error. Penjelasan lebih lanjut dapat dilihat pada Status dan Error. |
Jika melakukan request yang sama lagi maka Anda akan mendapatkan response berikut.
{
"results": []
}
Anda akan mendapatkan response kosong karena semua laporan pengiriman sudah terbaca pada request sebelumnya.
GET /restapi/sms/1/reports HTTP/1.1
Host: api.smsviro.com
Authorization: App {{API_KEY}}
Content-Length: 342
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="messageId"
{{MESSAGE_ID}}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="bulkId"
{{BULK_ID}}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="limit"
{{LIMIT}}
------WebKitFormBoundary7MA4YWxkTrZu0gW--
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.smsviro.com/restapi/sms/1/reports',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_POSTFIELDS => array('messageId' => '{{MESSAGE_ID}}','bulkId' => '{{BULK_ID}}','limit' => '{{LIMIT}}'),
CURLOPT_HTTPHEADER => array(
'Authorization: App {{API_KEY}}'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl --location --request GET 'https://api.smsviro.com/restapi/sms/1/reports' \
--header 'Authorization: App {{API_KEY}}' \
--form 'messageId="{{MESSAGE_ID}}"' \
--form 'bulkId="{{BULK_ID}}"' \
--form 'limit="{{LIMIT}}"'
Penjelasan lebih lanjut mengenai status pesan dapat dilihat pada Statuses Groups.
Status: 200 OK
Status pengiriman pesan berhasil ditampilkan
{
"results": [
{
"bulkId": "BULK-ID-123-xyz",
"messageId": "MESSAGE-ID-123-xyz",
"to": "6287654321",
"sentAt": "2015-02-12T09:58:20.323+0100",
"doneAt": "2015-02-12T09:58:20.337+0100",
"smsCount": 1,
"price": {
"pricePerMessage": 585.0,
"currency": "IDR"
},
"status": {
"id": 5,
"groupId": 3,
"groupName": "DELIVERED",
"name": "DELIVERED_TO_HANDSET",
"description": "Message delivered to handset"
},
"error": {
"groupId": 0,
"groupName": "OK",
"id": 0,
"name": "NO_ERROR",
"description": "No Error",
"permanent": false
}
}
]
}
Penjelasan lebih lanjut mengenai pesan error dapat dilihat pada Errors Groups.
Status: 401 Unauthorized
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "UNAUTHORIZED",
"text": "Unauthorized"
}
}
}
Status: 500 Internal Server Error
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "GENERAL_ERROR",
"text": "Something went wrong. Please contact support."
}
}
}
Endpoint untuk melihat semua history pesan yang dikirim.
GET https://api.smsviro.com/restapi/sms/1/logs
Required String
Authorization
:App {{API_KEY}}
API Key didapatkan dari Dashboard SMSVIRO.
Parameter | Tipe Data | Deskripsi |
---|---|---|
from | String | Sender ID |
to | String | Nomor tujuan. Jika ingin mengirimkan ke lebih dari satu nomor tujuan pisahkan nomor dengan tanda koma ( , ) |
text | String | Isi pesan |
bulkId | String | ID hanya diterima jika mengirimkan pesan ke banyak nomor atau mengirim pesan melalui 1 permintaan API. Dan juga digunakan untuk mendapatkan delivery reports dan message logs |
messageId | String | ID untuk mengidentifikasi pesan yang dikirim |
generalStatus | String | Status pengiriman SMS |
sentSince | Date | Batas limit tanggal dan waktu pengiriman SMS |
sentUntil | Date | Batas akhir tanggal dan waktu pengiriman SMS |
limit | Date | Batas akhir tanggal dan waktu pengiriman SMS |
mcc | String | Mobile country code |
mnc | String | Mobile country code |
Berikut penjelasan mengenai response yang akan tampil setelah melakukan request:
Parameter | Deskripsi |
---|---|
to | Nomor telepon tujuan |
bulkId | ID yang secara unik mengidentifikasi permintaan. bulkId hanya akan diterima bila Anda mengirim pesan ke lebih dari satu alamat tujuan |
messageId | ID yang secara unik mengidentifikasi pesan yang dikirim |
sentAt | Tanggal dan waktu saat pesan dikirim |
doneAt | Tanggal dan waktu saat pesan berhasil dikirim |
smsCount | Jumlah pesan yang dikirim |
price |
|
status and error | Status pengiriman pesan dan error. Penjelasan lebih lanjut dapat dilihat pada Status dan Error. |
GET /restapi/sms/1/logs HTTP/1.1
Host: api.smsviro.com
Authorization: App {{API_KEY}}
Content-Length: 871
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="from"
{{SENDER_ID}}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="to"
{{TO}}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="bulkId"
{{BULK_ID}}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="messageId"
{{MESSAGE_ID}}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="generalStatus"
DELIVERED
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="sentSince"
2019-11-09T16:00:00.000+0000
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="sentUntil"
2019-11-09T16:00:00.000+0000
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="limit"
{{LIMIT}}
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Content-Disposition: form-data; name="MCC"
{{MCC}}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="MNC"
{{MNC}}
------WebKitFormBoundary7MA4YWxkTrZu0gW--
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.smsviro.com/restapi/sms/1/logs',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_POSTFIELDS => array('from' => '{{SENDER_ID}}','to' => '{{TO}}','bulkId' => '{{BULK_ID}}','messageId' =>
'{{MESSAGE_ID}}','generalStatus' => 'DELIVERED','sentSince' => '2019-11-09T16:00:00.000+0000','sentUntil' =>
'2019-11-09T16:00:00.000+0000','limit' => '{{LIMIT}}', 'MCC' => '{{MCC}}','MNC' => '{{MNC}}'),
CURLOPT_HTTPHEADER => array(
'Authorization: App {{API_KEY}}'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl --location --request GET 'https://api.smsviro.com/restapi/sms/1/logs' \
--header 'Authorization: App {{API_KEY}}' \
--form 'from="{{SENDER_ID}}"' \
--form 'to="{{TO}}"' \
--form 'bulkId="{{BULK_ID}}"' \
--form 'messageId="{{MESSAGE_ID}}"' \
--form 'generalStatus="DELIVERED"' \
--form 'sentSince="2019-11-09T16:00:00.000+0000"' \
--form 'sentUntil="2019-11-09T16:00:00.000+0000"' \
--form 'limit="{{LIMIT}}"'\
--form 'MCC="{{MCC}}"' \
--form 'MNC="{{MNC}}"'
Penjelasan lebih lanjut mengenai status pesan dapat dilihat pada Statuses Groups.
Status: 200 OK
History pengiriman pesan berhasil ditampilkan
{
"results": [
{
"messageId": "MESSAGE-ID-123-xyz",
"to": "6287654321",
"from": "infoSMS",
"text": "This is a sample message",
"sentAt": "2023-08-14T07:29:23.288+0000",
"doneAt": "2023-08-14T07:29:24.570+0000",
"smsCount": 1,
"mccMnc": "51010",
"price": {
"pricePerMessage": 585.0,
"currency": "IDR"
},
"status": {
"groupId": 3,
"groupName": "DELIVERED",
"id": 5,
"name": "DELIVERED_TO_HANDSET",
"description": "Message delivered to handset"
},
"error": {
"groupId": 0,
"groupName": "OK",
"id": 0,
"name": "NO_ERROR",
"description": "No Error",
"permanent": false
},
"applicationId": "default"
}
]
}
Penjelasan lebih lanjut mengenai pesan error dapat dilihat pada Errors Groups.
Status: 401 Unauthorized
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "UNAUTHORIZED",
"text": "Unauthorized"
}
}
}
Status: 500 Internal Server Error
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "GENERAL_ERROR",
"text": "Something went wrong. Please contact support."
}
}
}
Endpoint untuk menampilkan saldo akun.
GET https://api.smsviro.com/restapi/account/1/balance
Required String
Authorization
:App {{API_KEY}}
API Key didapatkan dari Dashboard SMSVIRO.
Berikut penjelasan mengenai response yang akan tampil setelah melakukan request:
Parameter | Deskripsi |
---|---|
balance | Saldo akun |
currency | Mata uang |
GET /restapi/account/1/balance HTTP/1.1
Host: api.smsviro.com
Authorization: App {{API_KEY}}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.smsviro.com/restapi/account/1/balance',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: App {{API_KEY}}'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl --location 'https://api.smsviro.com/restapi/account/1/balance' \
--header 'Authorization: App {{API_KEY}}'
Penjelasan lebih lanjut mengenai status pesan dapat dilihat pada Statuses Groups.
Status: 200 OK
Saldo akun berhasil ditampilkan
{
"balance": 47.79134,
"currency": "IDR"
}
Penjelasan lebih lanjut mengenai pesan error dapat dilihat pada Errors Groups.
Status: 401 Unauthorized
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "UNAUTHORIZED",
"text": "Unauthorized"
}
}
}
Status: 500 Internal Server Error
Penyebab gagal:
{
"requestError": {
"serviceException": {
"messageId": "GENERAL_ERROR",
"text": "Something went wrong. Please contact support."
}
}
}
Berikut penjelasan mengenai response yang akan tampil setelah melakukan request:
GroupId | GroupName | Description |
---|---|---|
0 | ACCEPTED | Pesan diterima |
1 | PENDING | Pesan telah diproses dan dikirim ke nomor tujuan |
2 | UNDELIVERABLE | Pesan belum terkirim |
3 | DELIVERED | Pesan telah berhasil diproses dan dikirimkan |
4 | EXPIRED | Pesan telah terkirim, dan telah kedaluwarsa karena melewati masa berlaku yaitu 48 jam |
5 | REJECTED | Pesan telah diterima, namun ditolak oleh operator |
Contoh response pesan mendapatkan status terkirim ke nomor tujuan:
{
"groupId": 3,
"groupName": "DELIVERED",
"id": 5,
"name": "DELIVERED_TO_HANDSET",
"description": "Message delivered to handset"
}
GroupId | Id | GroupName | Description |
---|---|---|---|
1 | 3 | PENDING_WAITING_DELIVERY | Pesan telah diproses dan dikirim ke operator. Laporan pengiriman belum diterima sehingga statusnya masih pending. |
7 | PENDING_ENROUTE | Pesan telah diproses dan dikirim ke operator. | |
26 | PENDING_ACCEPTED | Pesan telah diterima dan diproses, dan siap dikirim ke operator berikutnya. | |
2 | 4 | UNDELIVERABLE_REJECTED_OPERATOR | Pesan telah terkirim ke operator, namun permintaan ditolak. |
9 | UNDELIVERABLE_NOT_DELIVERED | Pesan telah terkirim ke operator, namun gagal terkirim ke nomor tujuan. | |
3 | 2 | DELIVERED_TO_OPERATOR | Pesan telah berhasil terkirim ke operator. |
5 | DELIVERED_TO_HANDSET | Pesan telah berhasil diproses dan dikirimkan ke penerima. | |
4 | 15 | EXPIRED_EXPIRED | Pesan telah diterima dan dikirim ke operator, namun masih tertunda hingga masa berlakunya habis, operator mengembalikan status EXPIRED untuk sementara. |
29 | EXPIRED_DLR_UNKNOWN | Pesan telah diterima dan diteruskan ke operator untuk dikirimkan, namun laporan pengiriman dari operator belum diformat dengan benar, atau belum diakui sah. | |
5 | 6 | REJECTED_NETWORK | Pesan telah diterima, namun jaringan berada di luar jangkauan. |
8 | REJECTED_PREFIX_MISSING | Pesan telah diterima, namun ditolak karena nomornya tidak dikenali karena awalan atau panjang nomor salah. | |
10 | REJECTED_DND | Pesan telah diterima, dan ditolak karena pengguna menggunakan mode DND (Jangan Ganggu). | |
11 | REJECTED_SOURCE | Akun Anda diatur untuk hanya menerima ID pengirim yang terdaftar sedangkan ID pengirim yang ditentukan dalam permintaan belum terdaftar di akun Anda. | |
12 | REJECTED_NOT_ENOUGH_CREDITS | Saldo habis. Silakan isi ulang akun Anda pada link ini. | |
13 | REJECTED_SENDER | ID pengirim telah masuk pada daftar blacklist di akun Anda, hapus daftar blacklist di akun Anda atau hubungi kami untuk bantuan lebih lanjut. | |
14 | REJECTED_DESTINATION | Nomor tujuan telah masuk daftar blacklist baik atas permintaan operator maupun pada akun Anda. | |
17 | REJECTED_PREPAID_PACKAGE_EXPIRED | Kredit akun telah habis masa berlakunya. Silakan isi ulang saldo untuk memperpanjang masa berlaku. | |
18 | REJECTED_DESTINATION_NOT_REGISTERED | Akun Anda telah disiapkan untuk pengiriman hanya ke satu nomor tujuan. | |
19 | REJECTED_ROUTE_NOT_AVAILABLE | Pesan telah diterima di sistem, namun akun Anda belum dikonfigurasi untuk mengirim pesan sehingga tidak ada rute di akun Anda yang tersedia untuk pengiriman lebih lanjut. | |
20 | REJECTED_FLOODING_FILTER | Pesan telah ditolak karena Flooding. Secara default, satu nomor hanya dapat menerima 20 pesan bervariasi dan 6 pesan identik per jam. | |
21 | REJECTED_SYSTEM_ERROR | Permintaan telah ditolak karena ada kesalahan sistem, silakan coba lagi pengiriman atau hubungi kami untuk lebih jelasnya. | |
23 | REJECTED_DUPLICATE_MESSAGE_ID | Permintaan telah ditolak karena adanya duplikat ID pesan yang ditentukan dalam permintaan pengiriman, sedangkan ID pesan harus berupa nilai unik. | |
24 | REJECTED_INVALID_UDH | Pesan telah diterima, sementara sistem kami mendeteksi bahwa pesan tersebut diformat secara tidak benar karena parameter kelas ESM yang tidak valid atau jumlah karakter yang tidak akurat saat menggunakan esmclass:64 (UDH). Untuk informasi lebih lanjut, silakan kunjungi artikel di bawah ini User Data Header atau Concatenated SMS. | |
25 | REJECTED_MESSAGE_TOO_LONG | Pesan telah diterima, tetapi panjang pesan lebih dari 25 bagian atau teks pesan melebihi 4000 byte sesuai batasan sistem kami. | |
51 | MISSING_TO | Permintaan telah diterima, namun parameter TO belum isi atau kosong. Maka harus ada Sender ID yang valid untuk mengirim pesan. | |
52 | REJECTED_INVALID_DESTINATION | Permintaan telah diterima, namun tujuannya tidak valid. Awalan nomor salah karena tidak cocok dengan awalan nomor yang valid oleh operator seluler mana pun. Panjang nomor juga menjadi pertimbangan dalam memverifikasi validitas nomor. |
GroupId | GroupName | Description |
---|---|---|
0 | OK | Tidak error, pengiriman berhasil |
1 | HANDSET_ERRORS | Terjadi kesalahan pada ponsel |
2 | USER_ERRORS | Terjadi kesalahan pada pengguna |
3 | OPERATOR_ERRORS | Terjadi kesalahan pada operator |
Semua pesan dengan status error, saldo akan tetap terpotong kecuali pesan error REJECTED.
Contoh response pesan yang gagal dikirim karena error:
{
"groupId": 1,
"groupName": "HANDSET_ERRORS",
"id": 13,
"name": "EC_CALL_BARRED",
"description": "Handset error occurred",
"permanent": false
}
Group Id | Id | GroupName | Is Permanent | Description |
---|---|---|---|---|
1 | 1 | EC_UNKNOWN_SUBSCRIBER | TRUE | Nomor tersebut tidak ada atau belum menjadi pelanggan aktif mana pun di database operator. |
5 | EC_UNIDENTIFIED_SUBSCRIBER | FALSE | Pelanggan tak dikenal. | |
6 | EC_ABSENT_SUBSCRIBER_SM | FALSE | Pelanggan tidak tersedia, karena tidak ada respon dari handset. Hal ini sering terjadi karena handset dimatikan atau berada di area dengan sinyal rendah. Berlaku untuk protokol MAP versi 3. | |
7 | EC_UNKNOWN_EQUIPMENT | FALSE | Perangkat seluler belum dikenali oleh EIR (Equipment Identity Register), selama verifikasi perangkat pada tingkat protokol MAP di infrastruktur operator. | |
8 | EC_ROAMING_NOT_ALLOWED | FALSE | Pelanggan saat ini sedang roaming di negara lain atau infrastruktur operator lain. Pengiriman roaming tidak bisa karena kurangnya perjanjian roaming antara banyak operator berbeda. | |
9 | EC_ILLEGAL_SUBSCRIBER | TRUE | Pelanggan Ilegal. | |
11 | EC_TELESERVICE_NOT_PROVISIONED | TRUE | Layanan seluler telah ditangguhkan oleh operator. | |
12 | EC_ILLEGAL_EQUIPMENT | TRUE | Illegal Equipment. | |
13 | EC_CALL_BARRED | FALSE | Pelanggan menggunakan metode DND (Jangan Ganggu). | |
21 | EC_FACILITY_NOT_SUPPORTED | FALSE | Fasilitas tidak didukung. | |
27 | EC_ABSENT_SUBSCRIBER | FALSE | Pelanggan sedang offline di jaringan. Hal ini sering terjadi karena handset dimatikan. | |
31 | EC_SUBSCRIBER_BUSY_FOR_MT_SMS | FALSE | Pelanggan sibuk untuk MT SMS. | |
32 | EC_SM_DELIVERY_FAILURE | FALSE | Gagal pengiriman. | |
33 | EC_MESSAGE_WAITING_LIST_FULL | FALSE | Pesan Waiting List penuh. | |
34 | EC_SYSTEM_FAILURE | FALSE | Sistem gagal. | |
35 | EC_DATA_MISSING | FALSE | Data hilang. | |
36 | EC_UNEXPECTED_DATA_VALUE | FALSE | Value data tidak terduga. | |
255 | EC_UNKNOWN_ERROR | FALSE | Kesalahan yang tidak diketahui. | |
256 | EC_SM_DF_MEMORYCAPACITYEXCEEDED | FALSE | Memori SM DF melebihi kapasitas. | |
257 | EC_SM_DF_EQUIPMENTPROTOCOLERROR | FALSE | Kesalahan Protokol Equipment SM DF. | |
258 | EC_SM_DF_EQUIPMENTNOTSM_EQUIPPED | FALSE | Equipment SM DF tidak dilengkapi SM. | |
259 | EC_SM_DF_UNKNOWNSERVICECENTRE | FALSE | Layanan SM DF tidak diketahui. | |
260 | EC_SM_DF_SC_CONGESTION | FALSE | Congestion SM DF SC. | |
261 | EC_SM_DF_INVALIDSME_ADDRESS | FALSE | Alamat SM DF tidak valid. | |
262 | EC_SM_DF_SUBSCRIBERNOTSC_SUBSCRIBER | FALSE | Pelanggan SM DF bukan Pelanggan SC. | |
500 | EC_PROVIDER_GENERAL_ERROR | FALSE | Kesalahan umum penyedia. | |
502 | EC_NO_RESPONSE | FALSE | Pesan telah berhasil diproses dan diteruskan ke operator, namun tidak ada respons yang dikembalikan dari operator. Kesalahan ini juga berlaku untuk kesalahan serupa pada tingkat jaringan SS7. | |
503 | EC_SERVICE_COMPLETION_FAILURE | FALSE | Layanan gagal. | |
504 | EC_UNEXPECTED_RESPONSE_FROM_PEER | FALSE | Respon tak terduga dari rekan. | |
507 | EC_MISTYPED_PARAMETER | FALSE | Salah ketik parameter. | |
508 | EC_NOT_SUPPORTED_SERVICE | FALSE | Layanan tidak didukung. | |
509 | EC_DUPLICATED_INVOKE_ID | FALSE | ID duplikat. | |
1024 | EC_OR_APPCONTEXTNOTSUPPORTED | FALSE | Konteks aplikasi tidak didukung. | |
1025 | EC_OR_INVALIDDESTINATIONREFERENCE | FALSE | Referensi tujuan tidak valid. | |
1026 | EC_OR_INVALIDORIGINATINGREFERENCE | FALSE | Referensi asal tidak valid. | |
1027 | EC_OR_ENCAPSULATEDAC_NOTSUPPORTED | FALSE | AC tidak didukung. | |
1028 | EC_OR_TRANSPORTPROTECTIONNOTADEQUATE | FALSE | Protect Transportasi Tidak Memadai. | |
1029 | EC_OR_NOREASONGIVEN | FALSE | Tidak ada alasan yang diberikan. | |
1030 | EC_OR_POTENTIALVERSIONINCOMPATIBILITY | FALSE | Ada potensi versi tidak cocok. | |
1031 | EC_OR_REMOTENODENOTREACHABLE | FALSE | Node jarak jauh tidak dapat dijangkau. | |
1152 | EC_NNR_NOTRANSLATIONFORANADDRESSOFSUCHNATURE | FALSE | Tidak ada terjemahan untuk alamat yang sifatnya seperti ini. | |
1153 | EC_NNR_NOTRANSLATIONFORTHISSPECIFICADDRESS | FALSE | Tidak ada terjemahan untuk alamat khusus ini. | |
1154 | EC_NNR_SUBSYSTEMCONGESTION | FALSE | Congestion Subsistem. | |
1155 | EC_NNR_SUBSYSTEMFAILURE | FALSE | Subsistem Gagal. | |
1156 | EC_NNR_UNEQUIPPEDUSER | FALSE | Pengguna tidak dilengkap. | |
1157 | EC_NNR_MTPFAILURE | FALSE | Kegagalan MTP. | |
1158 | EC_NNR_NETWORKCONGESTION | FALSE | Permintaan gagal karena kemacetan jaringan pada saat pengajuan. | |
1159 | EC_NNR_UNQUALIFIED | FALSE | Tidak memenuhi syarat. | |
1160 | EC_NNR_ERRORINMESSAGETRANSPORTXUDT | FALSE | Kesalahan dalam transportasi Pesan XUDT. | |
1161 | EC_NNR_ERRORINLOCALPROCESSINGXUDT | FALSE | Kesalahan dalam pemrosesan lokal XUDT. | |
1162 | EC_NNR_DESTINATIONCANNOTPERFORMREASSEMBLYXUDT | FALSE | Tujuan tidak dapat melakukan Reassembly XUDT. | |
1163 | EC_NNR_SCCPFAILURE | FALSE | SCCP gagal. | |
1164 | EC_NNR_HOPCOUNTERVIOLATION | FALSE | Pelanggaran penghitung HOP. | |
1165 | EC_NNR_SEGMENTATIONNOTSUPPORTED | FALSE | Segmentasi tidak didukung. | |
1166 | EC_NNR_SEGMENTATIONFAILURE | FALSE | Segmentasi gagal. | |
1281 | EC_UA_USERSPECIFICREASON | FALSE | Alasan khusus pengguna. | |
1282 | EC_UA_USERRESOURCELIMITATION | FALSE | Keterbatasan sumber daya pengguna. | |
1283 | EC_UA_RESOURCEUNAVAILABLE | FALSE | Sumber daya tidak tersedia. | |
1284 | EC_UA_APPLICATIONPROCEDURECANCELLATION | FALSE | Pembatalan prosedur permohonan. | |
1536 | EC_UA_APPLICATIONPROCEDURECANCELLATION | FALSE | Kerusakan penyedia. | |
1537 | EC_PA_SUPPORTINGDIALOGORTRANSACTIONREALEASED | FALSE | Dialog pendukung atau transaksi diluncurkan kembali. | |
1538 | EC_PA_RESSOURCELIMITATION | FALSE | Keterbatasan sumber daya. | |
1539 | EC_PA_MAINTENANCEACTIVITY | FALSE | Maintenance. | |
1540 | EC_PA_VERSIONINCOMPATIBILITY | FALSE | Versi tidak cocok. | |
1541 | EC_PA_ABNORMALMAPDIALOG | FALSE | MAP DIALOG tidak normal. | |
1792 | EC_NC_ABNORMALEVENTDETECTEDBYPEER | FALSE | Peristiwa tidak normal terdeteksi. | |
1793 | EC_NC_RESPONSEREJECTEDBYPEER | FALSE | Tanggapan ditolak. | |
1794 | EC_NC_ABNORMALEVENTRECEIVEDFROMPEER | FALSE | Peristiwa tidak normal diterima. | |
1795 | EC_NC_MESSAGECANNOTBEDELIVEREDTOPEER | FALSE | Pesan tidak dapat dikirim. | |
1796 | EC_NC_PROVIDEROUTOFINVOKE | FALSE | Penyedia keluar dari panggilan. | |
2 | 2049 | EC_IMSI_BLACKLISTED | TRUE | IMSI masuk daftar blacklist. |
2052 | EC_BLACKLISTED_DESTINATIONADDRESS | TRUE | Nomor tujuan masuk daftar blacklist. | |
2053 | EC_BLACKLISTED_SENDERADDRESS | TRUE | Nomor pengirim masuk daftar blacklist. | |
4096 | EC_INVALID_PDU_FORMAT | TRUE | Format PDU tidak valid. | |
4099 | EC_MONTHLY_LIMIT_REACHED | TRUE | Batas kredit bulanan akun Anda telah limit. | |
4100 | EC_MESSAGE_CANCELED | TRUE | Permintaan telah diterima, namun belum dikirim ke instance berikutnya. | |
4101 | EC_VALIDITYEXPIRED | TRUE | Pesan dikirim ke instance berikutnya, dan belum terkirim dalam masa berlaku pesan, sehingga kedaluwarsa. | |
4102 | EC_NOTSUBMITTEDTOSMPPCHANNEL | TRUE | SM masuk tidak dapat ditransfer melalui SMPP karena kurangnya konektivitas SMPP. | |
4103 | EC_DESTINATION_FLOODING | TRUE | Pesan ditolak karena banyaknya pesan yang dikirim ke satu nomor. | |
4104 | EC_DESTINATION_TXT_FLOODING | TRUE | Pesan ditolak karena banyaknya pesan identik yang dikirim ke satu nomor. | |
3 | 10 | EC_BEARER_SERVICE_NOT_PROVISIONED | TRUE | Layanan tidak disediakan. |
20 | EC_SS_INCOMPATIBILITY | FALSE | SS tidak cocok. | |
51 | EC_RESOURCE_LIMITATION | TRUE | Operasi MAP tidak dapat diselesaikan karena kesalahan jaringan SS7 pada tingkat protokol MAP. | |
71 | EC_UNKNOWN_ALPHABET | FALSE | Alfabet tidak diketahui. | |
501 | EC_INVALID_RESPONSE_RECEIVED | FALSE | Respons tidak valid | |
2048 | EC_TIME_OUT | FALSE | Waktu habis. | |
2050 | EC_DEST_ADDRESS_BLACKLISTED | TRUE | Nomor tersebut masuk pada daftar blacklist DND (Jangan Ganggu). | |
2051 | EC_INVALIDMSCADDRESS | FALSE | Teks masuk pada daftar blacklist. | |
4097 | EC_NOTSUBMITTEDTOGMSC | FALSE | Tidak Diserahkan Ke GMSC. | |
4102 | EC_NOTSUBMITTEDTOSMPPCHANNEL | TRUE | Tidak Dikirim Ke SMPP. |