Dokumentasi API HalloWa
Integrasikan pesan WhatsApp, Instagram, Messenger, dan Threads ke dalam aplikasi Anda dengan REST API yang powerful.
RESTful API
Endpoint REST standar dengan response JSON
Aman
Autentikasi JWT dan signature webhook
Andal
Retry otomatis dengan exponential backoff
Base URL
https://api.hallowa.id/v1Panduan Cepat
1. Dapatkan API Key Anda
Buka Dashboard → Pengaturan → API Keys untuk membuat API key Anda.
2. Kirim pesan pertama Anda
curl -X POST https://api.hallowa.id/v1/messages/send \
-H "Authorization: Bearer sk_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"platform": "whatsapp",
"to": "+6285157667780",
"type": "text",
"content": "Hello from HalloWa!"
}'3. Atur webhook
Terima notifikasi real-time untuk pesan masuk dan update status pengiriman.
Autentikasi
/auth/login Login
Autentikasi pengguna dan dapatkan access token
Request Body
{
"email": "[email protected]",
"password": "your-password"
}Response
{
"token": "eyJhbGciOiJIUzI1NiIs...",
"user": {
"id": "usr_123",
"email": "[email protected]",
"name": "John Doe"
}
}/auth/refresh Perlu AuthRefresh Token
Dapatkan access token baru menggunakan refresh token
Response
{
"token": "eyJhbGciOiJIUzI1NiIs..."
}Pesan
/messages/send Perlu AuthKirim Pesan
Kirim pesan ke kontak di platform manapun
Request Body
{
"platform": "whatsapp",
"to": "+6285157667780",
"type": "text",
"content": "Hello from HalloWa!"
}Response
{
"id": "msg_abc123",
"status": "sent",
"timestamp": "2026-01-25T10:30:00Z"
}/messages/{id} Perlu AuthAmbil Pesan
Ambil pesan tertentu berdasarkan ID
Parameter
id string wajib ID PesanResponse
{
"id": "msg_abc123",
"platform": "whatsapp",
"direction": "outbound",
"content": "Hello!",
"status": "delivered",
"created_at": "2026-01-25T10:30:00Z"
}/messages/template Perlu AuthKirim Pesan Template
Kirim pesan template yang sudah disetujui (WhatsApp HSM)
Request Body
{
"platform": "whatsapp",
"to": "+6285157667780",
"template_name": "order_confirmation",
"language": "id",
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "John" },
{ "type": "text", "text": "ORD-12345" }
]
}
]
}Percakapan
/conversations Perlu AuthDaftar Percakapan
Ambil semua percakapan dengan paginasi
Parameter
platform string Filter berdasarkan platformstatus string Filter berdasarkan status (open, closed)limit number Jumlah maksimum hasil (default: 50)offset number Offset paginasiResponse
{
"conversations": [
{
"id": "conv_123",
"platform": "whatsapp",
"contact": { "id": "ctn_456", "name": "John" },
"last_message": { "content": "Hi!", "created_at": "..." },
"unread_count": 2
}
],
"total": 150,
"has_more": true
}/conversations/{id}/assign Perlu AuthAssign Percakapan
Assign percakapan ke seorang agent
Request Body
{
"agent_id": "usr_789"
}Kontak
/contacts Perlu AuthDaftar Kontak
Ambil semua kontak dengan filter opsional
Parameter
search string Cari berdasarkan nama, telepon, atau emaillabel string Filter berdasarkan ID label/contacts Perlu AuthBuat Kontak
Buat kontak baru
Request Body
{
"name": "Jane Doe",
"phone": "+6285157667780",
"email": "[email protected]",
"labels": ["lbl_vip", "lbl_premium"]
}/contacts/{id} Perlu AuthUpdate Kontak
Update kontak yang sudah ada
/contacts/{id} Perlu AuthHapus Kontak
Hapus sebuah kontak
Webhook
/webhooks Perlu AuthBuat Webhook
Daftarkan endpoint webhook untuk menerima event
Request Body
{
"url": "https://your-server.com/webhook",
"events": ["message.received", "message.status"],
"secret": "your-webhook-secret"
}/webhooks Perlu AuthDaftar Webhook
Ambil semua webhook yang terdaftar
Broadcast
/broadcast Perlu AuthBuat Broadcast
Kirim pesan massal ke banyak kontak sekaligus
Request Body
{
"name": "January Promo",
"platform": "whatsapp",
"template_name": "promo_january",
"recipients": ["ctn_1", "ctn_2", "ctn_3"],
"schedule": "2026-01-26T09:00:00Z"
}/broadcast/{id}/status Perlu AuthStatus Broadcast
Ambil status pengiriman broadcast
Kode Error
| Kode | Deskripsi |
|---|---|
400 | Bad Request - Parameter tidak valid |
401 | Unauthorized - API key tidak valid atau tidak ada |
403 | Forbidden - Permission tidak mencukupi |
404 | Not Found - Resource tidak ditemukan |
429 | Rate Limited - Terlalu banyak request |
500 | Server Error - Silakan hubungi support |
Batas Rate
Paket Free
100
request/menit
Paket Pro
1.000
request/menit
Enterprise
Custom
Hubungi sales
Header batas rate disertakan di setiap response:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 987
X-RateLimit-Reset: 1706178600
SDK & Library
Butuh Bantuan?
Tim developer support kami siap membantu Anda