Public REST API v1.0

Dokumentasi API WhatsApp Gateway

Dokumentasi ini mengacu pada endpoint aktif di api.ovn.my.id. Format otentikasi resmi menggunakan header Authorization: Bearer <token> dan request body berupa JSON.

Base URL https://api.ovn.my.id
Autentikasi Bearer <token>
Format Body POST JSON
POST Method Only HTTPS Enforced
  • POST /kirim Pesan personal untuk akun FREE dan PREMIUM.
  • POST /kirim-grups Pesan ke grup WhatsApp (Khusus Akun PREMIUM).
  • POST /list-grups Daftar grup dari device premium yang sedang online.
  • POST /cek-nomer Validasi apakah nomor terdaftar di WhatsApp.

Bearer Auth

Setiap request wajib menyertakan header Authorization: Bearer <token>.

JSON Payload

Format request resmi menggunakan application/json yang standar.

Maks. 500 Karakter

Panjang teks per pesan dibatasi maksimal 500 karakter untuk performa terbaik.

Rate Limiting

Personal 120 req/menit, Grup 90 req/menit untuk menjaga stabilitas nomor.

Pola Respons & Status Code

HTTP Status dan Struktur Body JSON

API menggunakan HTTP Status Code standar untuk menandakan keberhasilan atau kegagalan request sebelum membaca body respons.

Prinsip Integrasi: Periksa HTTP status terlebih dahulu, lalu baca kombinasi code, status (boolean), dan pesan (string) pada body JSON.

Format Body Response Umum

Field Tipe Keterangan
code integer Kode internal aplikasi (misal: 200, 1003, 1004, 1005).
status boolean true jika berhasil diproses, false jika terdapat kesalahan.
pesan string Deskripsi status yang dapat dicatat pada log sistem Anda.
data, msgid, limit mixed Field tambahan opsional sesuai dengan endpoint terkait.

Status Code HTTP yang Digunakan

HTTP Status Kondisi Terjadi Contoh Code
200 OK Request berhasil diproses dan dikirim ke gateway. 200
401 Unauthorized Header Bearer tidak dikirim, format salah, atau token tidak valid. 401, 1003
403 Forbidden Akun tidak memiliki hak akses (misal: fitur grup pada akun non-premium) atau kuota habis. 403, 1004, 1005
422 Unprocessable Validasi request gagal (field nomor kosong, format nomor salah, atau teks >500 char). 105, 422
429 Too Many Req Melebihi batas frekuensi rate limit per IP per menit. 429
502 / 504 Gateway Err WhatsApp Server / Device offline atau timeout. 502, 504
Response Example

401 Token Tidak Terdaftar

401
1{2  "code": 1003,3  "status": false,4  "pesan": "Token tidak terdaftar."5}
Response Example

422 Validasi Gagal

422
1{2  "code": 422,3  "status": false,4  "pesan": "Field nomer wajib diisi."5}
Endpoint Reference

Referensi Endpoint Aktif

Seluruh endpoint di bawah ini menggunakan method POST dengan Bearer Token Authorization.

POST

/kirim

Mengirimkan pesan teks ke nomor WhatsApp personal. Tersedia untuk akun FREE & PREMIUM.

Request Parameters (JSON)

Field Tipe Wajib Keterangan
nomer string Ya Nomor tujuan (8 - 15 digit). Contoh: 62811294440 atau 0811294440.
pesan string Ya Isi pesan teks (maksimal 500 karakter).
Endpoint URL
POST https://api.ovn.my.id/kirim
Auth: Bearer <API_KEY> Content-Type: application/json
Pilih Bahasa / Format:
1curl --request POST "https://api.ovn.my.id/kirim" \2  --header "Authorization: Bearer APIKEY_ANDA" \3  --header "Content-Type: application/json" \4  --data '{"nomer":"62811294440","pesan":"Halo dari aplikasi saya"}'
1<?php2$payload = json_encode([3    'nomer' => '62811294440',4    'pesan' => 'Halo dari aplikasi saya',5]);67$ch = curl_init('https://api.ovn.my.id/kirim');8curl_setopt($ch, CURLOPT_POST, true);9curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);10curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);11curl_setopt($ch, CURLOPT_HTTPHEADER, [12    'Authorization: Bearer APIKEY_ANDA',13    'Content-Type: application/json',14    'Accept: application/json',15]);1617$result = curl_exec($ch);18curl_close($ch);19echo $result;
1:local api "APIKEY_ANDA";2:local nomer "0811294440";34:local res [/tool fetch url="https://api.ovn.my.id/kirim" \5    http-method=post \6    http-header-field="Authorization:Bearer $api,Content-Type:application/x-www-form-urlencoded" \7    http-data="nomer=$nomer&pesan=Halo dari RouterOS MikroTik" \8    as-value output=user]910:local data ($res->"data")11:log warning ("Response: " . $data)
Response Example

200 OK — Pesan Berhasil Terkirim

200 OK
1{2  "code": 200,3  "status": true,4  "pesan": "Pesan berhasil dikirim",5  "msgid": "MSG123456789",6  "limit": 499,7  "waktu": "2026-08-16 21:00:00"8}
POST

/kirim-grups

Mengirimkan pesan teks ke Grup WhatsApp. (Khusus Akun PREMIUM).

Tips ID Grup: Gunakan endpoint /list-grups terlebih dahulu untuk mendapatkan ID grup WhatsApp yang valid.

Request Parameters (JSON)

Field Tipe Wajib Keterangan
nomer string Ya ID Grup WhatsApp (contoh: 120363000000000000).
pesan string Ya Isi pesan grup (maksimal 500 karakter).
Endpoint URL
POST https://api.ovn.my.id/kirim-grups
Pilih Bahasa:
1curl --request POST "https://api.ovn.my.id/kirim-grups" \2  --header "Authorization: Bearer APIKEY_PREMIUM" \3  --header "Content-Type: application/json" \4  --data '{"nomer":"120363000000000000","pesan":"Halo seluruh anggota tim!"}'
1<?php2$payload = json_encode([3    'nomer' => '120363000000000000',4    'pesan' => 'Halo seluruh anggota tim!',5]);67$ch = curl_init('https://api.ovn.my.id/kirim-grups');8curl_setopt($ch, CURLOPT_POST, true);9curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);10curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);11curl_setopt($ch, CURLOPT_HTTPHEADER, [12    'Authorization: Bearer APIKEY_PREMIUM',13    'Content-Type: application/json',14]);1516$result = curl_exec($ch);17curl_close($ch);18echo $result;
POST

/list-grups

Mendapatkan daftar seluruh grup WhatsApp dari device premium yang sedang online.

Endpoint URL
POST https://api.ovn.my.id/list-grups
Pilih Format:
1curl --request POST "https://api.ovn.my.id/list-grups" \2  --header "Authorization: Bearer APIKEY_PREMIUM" \3  --header "Accept: application/json"
1<?php2$ch = curl_init('https://api.ovn.my.id/list-grups');3curl_setopt($ch, CURLOPT_POST, true);4curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);5curl_setopt($ch, CURLOPT_HTTPHEADER, [6    'Authorization: Bearer APIKEY_PREMIUM',7    'Accept: application/json',8]);910$result = curl_exec($ch);11curl_close($ch);12echo $result;
Response Example

200 OK — Daftar Grup

200 OK
1{2  "code": 200,3  "status": true,4  "pesan": "OK",5  "total": 2,6  "data": [7    { "id": "120363000000000000", "subject": "Tim NOC Operasional" },8    { "id": "120363000000000001", "subject": "Pelanggan VIP RT/RW Net" }9  ],10  "waktu": "2026-08-16 21:00:00"11}
POST

/cek-nomer

Memeriksa apakah nomor tujuan terdaftar secara aktif pada WhatsApp.

Request Parameters (JSON)

Field Tipe Wajib Keterangan
nomer string Ya Nomor WhatsApp yang ingin dicek (contoh: 62811294440).
Endpoint URL
POST https://api.ovn.my.id/cek-nomer
Pilih Format:
1curl --request POST "https://api.ovn.my.id/cek-nomer" \2  --header "Authorization: Bearer APIKEY_ANDA" \3  --header "Content-Type: application/json" \4  --data '{"nomer":"62811294440"}'
1<?php2$payload = json_encode(['nomer' => '62811294440']);34$ch = curl_init('https://api.ovn.my.id/cek-nomer');5curl_setopt($ch, CURLOPT_POST, true);6curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);7curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);8curl_setopt($ch, CURLOPT_HTTPHEADER, [9    'Authorization: Bearer APIKEY_ANDA',10    'Content-Type: application/json',11]);1213$result = curl_exec($ch);14curl_close($ch);15echo $result;
Praktik Terbaik

Panduan Sebelum Masuk ke Production

Simpan Token di Sisi Backend

Jangan pernah mempublikasikan Bearer Token Anda di file frontend (JavaScript klien/HTML). Panggil API ini melalui controller backend Anda.

Penanganan Status Code

Pastikan sistem Anda memeriksa HTTP Status (200, 401, 403, 422, 429) serta mencatat response pesan untuk memudahkan audit integrasi.

Gunakan Format E.164

Format nomor yang direkomendasikan adalah format internasional tanpa tanda plus/spasi (contoh: 62811294440).

Patuhi Batas Karakter

Batasan pesan teks adalah 500 karakter per request guna memastikan kecepatan antrean gateway tetap optimal.