Dokumentasi - Mengirim Pesan
Endpoint API
URL: https://api.wavave.com/v1/send
Method: POST
Contoh Kode
<?php
header('Content-Type: application/json; charset=utf-8');
$data = json_encode(array(
'to' => '62812345678',
'message' => 'Halo ini adalah pesan test',
'from' => '62812345678',
'Type' => 'text', // text atau media
'url' => 'https://api.wavave.com/sampel.png',
'callbackStatus' => 'https://api.wavave.com/callback.php',
'typing' => true,
'delay' => 5
));
// Endpoint Api
$endpoint = 'https://api.wavave.com/v1/send';
$ch = curl_init($endpoint);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
'Authorization: Bearer YOUR_API_KEY'
));
$response = curl_exec($ch);
if($response === FALSE){
die(curl_error($ch));
}
curl_close($ch);
echo $response;
const axios = require('axios');
const data = {
to: '62812345678',
message: 'Halo ini adalah pesan test',
from: '62812345678',
Type: 'text', // text atau media
url: 'https://api.wavave.com/sampel.png',
callbackStatus: 'https://api.wavave.com/callback.php',
typing: true,
delay: 5
};
axios.post('https://api.wavave.com/v1/send', data, {
headers: {
'Content-Type': 'application/json',
'Authorization: 'Bearer YOUR_API_KEY'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
import requests
import json
url = 'https://api.wavave.com/v1/send'
data = {
'to': '62812345678',
'message': 'Halo ini adalah pesan test',
'from': '62812345678',
'Type': 'text', // text atau media
'url': 'https://api.wavave.com/sampel.png',
'callbackStatus': 'https://api.wavave.com/callback.php',
'typing': true,
'delay': 5
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
}
response = requests.post(url, data=json.dumps(data), headers=headers)
print(response.json())
curl -X POST https://api.wavave.com/v1/send \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"to": "62812345678",
"message": "Halo ini adalah pesan test",
"from": "62812345678",
"Type": "text",
"url": "https://api.wavave.com/sampel.png",
"callbackStatus": "https://api.wavave.com/callback.php",
"typing": true,
"delay": 5
}'
Parameter
Parameter | Tipe | Deskripsi |
---|---|---|
from | Number | Nomor whatsapp pengirim dalam format internasional |
to | Number | Nomor telepon penerima dalam format internasional (misalnya: 62812345678) |
message | String | Isi pesan yang akan dikirim |
Type | String | 'text' atau 'media' |
url | String | Anda harus menyertakan url media yang dapat diakses secara publik jika memilih Type = media |
callbackStatus | String | URL endpoint yang digunakan untuk menerima status pengiriman pesan melalui callback, harus berupa URL https yang dapat diakses secara publik, CallbackStatus adalah mekanisme callback yang memungkinkan sistem mengirimkan notifikasi secara real time terkait status pengiriman pesan, Saat pesan anda terkirim—baik berhasil maupun gagal—sistem akan mengirimkan notifikasi yang mencakup detail seperti ID pesan, tipe pesan, status pengiriman, dan informasi relevan lainnya ke URL callback anda. |
typing | Boolean | typing adalah cara sistem membuat akun whatsapp anda seolah olah sedang mengetik pesan sebelum dikirim ke pengguna (target) Nilainya true atau false |
delay | String | Nilai delay antara 1 hingga 18000 jika dikosongkan nilai defaultnya adalah 1 yang berarti pesan anda akan dikirim dalam 1 detik,
atau anda bisa menggunakan nilai random untuk membuat delay acak secara otomatis oleh sistem. Contoh menggunakan delay 'delay' => 5 'delay' => 'random' |
Response Success
{
"success": true,
"message": "Success",
"data": {
"status": "pending",
"requestId": "8e212d3d-de11-4e58-a037-e2bde22a697d",
"to": "62812345678",
"code": 200
}
}
Response error
Success | Message | Status | Code |
---|---|---|---|
false | Gagal mengirim pesan | error | 500 |
false | Jenis file tidak didukung | invalid | 415 |
false | Invalid json format | invalid | 400 |
false | Url media harus diberikan | invalid | 400 |
false | Pesan tidak boleh kosong | invalid | 400 |
false | Api key tidak valid | failed | 401 |
false | Perangkat disconnect | disconnect | 503 |
false | Nomor pengirim tidak valid | Invalid | 400 |
false | Jenis pesan tidak didukung | Invalid | 400 |
false | Masa berlaku habis | expired | 403 |
false | Anda telah melebihi batas permintaan | throttled | 429 |
false | Ukuran file melebihi batas maksimum | Invalid | 413 |
Tangani status pesan yang anda kirim
Salin kode dibawah dan simpan di server anda dengan nama file misalnya callback.php atau webhook.php dan pastikan situs anda mendukung Https
callback ini akan menerima payload dari sistem kami secara real time untuk melacak status pesan yang anda kirim.
<?php
header('Content-Type: application/json; charset=utf-8');
try {
$input = file_get_contents('php://input');
$data = json_decode($input, true);
$logFile = 'callback.log';
if (!file_exists($logFile)) {
file_put_contents($logFile, "===== callback Log Created: " . date('Y-m-d H:i:s') . " =====" . PHP_EOL);
}
if ($data) {
$device = $data['device'] ?? '';
$requestId = $data['requestId'] ?? '';
$campaignId = $data['campaignId'] ?? '';
$type = $data['type'] ?? '';
$messageid = $data['messageid'] ?? '';
$status = $data['status'] ?? '';
$to = $data['to'] ?? '';
$code = $data['code'] ?? '';
$details = $data['details'] ?? '';
$messagebody = json_encode($messagebody, JSON_UNESCAPED_UNICODE);
$logData = [
'timestamp' => date('Y-m-d H:i:s'),
'device' => $device,
'requestId' => $requestId,
'campaignId' => $campaignId,
'type' => $type,
'messageid' => $messageid,
'status' => $status,
'to' => $to,
'code' => $code,
'details' => $details
];
file_put_contents($logFile, json_encode($logData, JSON_PRETTY_PRINT) . PHP_EOL, FILE_APPEND);
echo json_encode(['status' => 'success', 'message' => 'Log saved']);
} else {
echo json_encode(['status' => 'error', 'message' => 'No data received']);
}
} catch (Exception $e) {
file_put_contents('ErrorCallback.log', date('Y-m-d H:i:s') . " - Error: " . $e->getMessage() . PHP_EOL, FILE_APPEND);
echo json_encode(['status' => 'error', 'message' => 'An error occurred']);
}
Contoh payload
Anda akan menerima data secara real time dari sistem kami ketika pesan yang anda kirim berhasil ataupun gagal, berikut payload yang akan diterima oleh callback atau webhook anda.
{
"device": "62812345678",
"requestId": "8e212d3d-de11-4e58-a037-e2bde22a697d",
"campaignId": "6b64e65e-9290-4322-764D-2bead9e53268",
"type": "text",
"messageid": "3EB08AB7397BD419A90985",
"status": "sent",
"to": "62812345678",
"code": 200,
"details": "Pesan terkirim"
}
Parameter
Properti | Nilai | Deskripsi |
---|---|---|
device | Number | Perangkat anda yang terhubung dengan Wa Vave dalam format internasional : 628123456789 |
requestId | String | ID unik untuk melacak permintaan yang sebelumnya anda kirim melalui API |
campaignId | String | ID unik dari kampanye yang anda kirim melalui dashboard aplikasi |
type | String | Jenis pesan yang anda kirim baik melalui dashboard aplikasi ataupun API |
messageid | String | ID pesan unik yang bisa anda simpan di aplikasi anda |
status | String | sent: Pesan anda berhasil terkirim failed: Pesan anda tidak terkirim |
to | Number | Nomor whatsapp yang menerima pesan dari anda |
code | Number | 200, 1001, 1002, 1003 200: Pesan berhasil terkirim 1001: Nomor target tidak terdaftar di whatsapp 1002: Nomor target tidak valid 1003: Mime tipe tidak diizinkan |
details | String | Detail lengkap tentang status pesan yang anda kirim |
Jenis MIME yang didukung
Sistem kami mengikuti standar whatsapp api official yang hanya mengizinkan mime tipe jenis berikut.
'text/vcard',
'text/x-vcard',
'text/csv',
'text/rtf',
'text/richtext',
'text/calendar',
'text/directory',
'application/pdf',
'application/vcard',
'application/msword',
'application/vnd.ms-excel',
'application/vnd.ms-powerpoint',
'application/vnd.apple.pkpass',
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'image/jpeg',
'image/jpg',
'image/gif',
'image/png',
'image/webp',
'image/bmp',
'image/tiff',
'audio/basic',
'audio/L24',
'audio/mp4',
'audio/mpeg',
'audio/ogg',
'audio/aac',
'audio/vnd.rn-realaudio',
'audio/ogg; codecs=opus',
'audio/vnd.wave',
'audio/3gpp',
'audio/3gpp2',
'audio/ac3',
'audio/webm',
'audio/amr-nb',
'audio/amr',
'video/mpeg4',
'video/mp4',
'video/mpeg',
'video/webm',
'video/quicktime',
'video/3gpp',
'video/3gpp2',
'video/3gpp-tt',
'video/H261',
'video/H263',
'video/H263-1998',
'video/H263-2000',
'video/H264',
'video/H265'