Sebelum mulai
Alamat dasar: https://api.gocap.id. Semua endpoint memakai metode POST di alamat ini, tanpa awalan versi.
Autentikasi: header Authorization berisi token device; bentuk Bearer TOKEN_DEVICE juga diterima. Token hanya dibaca dari header Authorization; parameter dikirim di badan permintaan, bukan di query string.
Yang Anda perlukan:
- Device berstatus terhubung di daftar device. Belum punya device? Mulai dari wizard Mulai.
- Token device: token yang tampil sekali saat device dibuat. Bila hilang, buat token baru di pengaturan device; token lama berhenti berlaku.
- Nomor WhatsApp Anda sendiri sebagai target pesan uji.
- Terminal dengan curl. Di Windows PowerShell 5.1 ketik
curl.exe, bukancurl: di sanacurladalah alias perintah lain.
Kirim pesan pertama
Siapkan token device Anda
Pakai token yang tampil sekali saat device dibuat. Bila hilang, buat token baru di pengaturan device; token lama berhenti berlaku. Token akun, yang berawalan
gc_(atauwv_untuk token akun lama), tidak diterima endpoint API.Kirim pesan ke nomor WhatsApp Anda sendiri
Kirim ke nomor yang sudah pernah berbalas pesan dengan device ini: dari WhatsApp di ponsel Anda, kirim "Halo" ke nomor device lebih dulu, lalu jalankan perintah di bawah ke nomor Anda sendiri. Pesan ke kontak yang belum pernah berbalas pesan dengan device tidak dijamin sampai (lihat OTP dan kontak pertama).
curl
curl -X POST https://api.gocap.id/send \ -H 'Authorization: TOKEN_DEVICE' \ --data-urlencode 'target=NOMOR_TUJUAN' \ --data-urlencode 'message=Halo dari gocap. Simbol % + & tetap utuh.'Contoh ini memakai
--data-urlencodeagar%,+,&, dan baris baru di pesan tiba utuh;-dmeneruskan data apa adanya sehingga pesan ber-%dijawabinput invalid. Di Windows PowerShell 5.1 ketikcurl.exedan ganti\di akhir baris dengan backtick (`). Command Prompt (cmd.exe) tidak mengenal kutip tunggal, jadi perintah ini tidak berjalan di sana; pakai PowerShell atau contoh bahasa lain.PHP
<?php $pesan = "Halo dari gocap.\nSimbol % + & tetap utuh."; $ch = curl_init('https://api.gocap.id/send'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_HTTPHEADER => ['Authorization: TOKEN_DEVICE'], CURLOPT_POSTFIELDS => [ 'target' => 'NOMOR_TUJUAN', 'message' => $pesan, ], CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30, ]); $raw = curl_exec($ch); if ($raw === false) { echo 'Koneksi gagal: ', curl_error($ch), PHP_EOL; exit(1); } $data = json_decode($raw, true); // Penolakan tetap HTTP 200: periksa status. if (empty($data['status'])) { $alasan = $data['reason'] ?? $raw; echo 'gocap menolak: ', $alasan, PHP_EOL; exit(1); } echo 'requestid ', $data['requestid'], PHP_EOL;Butuh ekstensi curl PHP. Array di
CURLOPT_POSTFIELDSdikirim sebagaimultipart/form-data, bentuk yang sama dengan contoh Fonnte.Node.js
const PESAN = "Halo dari gocap.\nSimbol % + & tetap utuh."; async function main() { const res = await fetch("https://api.gocap.id/send", { method: "POST", headers: { Authorization: "TOKEN_DEVICE" }, body: new URLSearchParams({ target: "NOMOR_TUJUAN", message: PESAN, }), signal: AbortSignal.timeout(30000), }); const data = await res.json(); // Penolakan tetap HTTP 200: periksa status. if (!data.status) { throw new Error(`gocap menolak: ${data.reason}`); } console.log("requestid", data.requestid); } main().catch((err) => { console.error(err.message); process.exitCode = 1; });Node.js 18 atau lebih baru (
fetchbawaan). Simpan sebagaikirim.js, lalu jalankannode kirim.js.Python
import requests PESAN = "Halo dari gocap.\nSimbol % + & tetap utuh." res = requests.post( "https://api.gocap.id/send", headers={"Authorization": "TOKEN_DEVICE"}, data={"target": "NOMOR_TUJUAN", "message": PESAN}, timeout=30, ) data = res.json() # Penolakan tetap HTTP 200: periksa status. if not data["status"]: raise SystemExit(f"gocap menolak: {data['reason']}") print("requestid", data["requestid"])Butuh pustaka
requests(pip install requests).Google Apps Script
// Token device dibaca dari Script Property // GOCAP_TOKEN (Project Settings > Script Properties). const PESAN = "Halo dari gocap.\nSimbol % + & tetap utuh."; function kirimGocap() { const token = PropertiesService.getScriptProperties() .getProperty("GOCAP_TOKEN"); const url = "https://api.gocap.id/send"; const res = UrlFetchApp.fetch(url, { method: "post", headers: { Authorization: token }, payload: { target: "NOMOR_TUJUAN", message: PESAN }, muteHttpExceptions: true, }); const data = JSON.parse(res.getContentText()); // Penolakan tetap HTTP 200: periksa status. if (!data.status) { throw new Error("gocap menolak: " + data.reason); } Logger.log("requestid %s", data.requestid); }Di editor Apps Script, buka Project Settings > Script Properties, lalu tambah properti bernama
GOCAP_TOKENberisi token device; kode membacanya dari sana, jadi token tidak tertulis di kode. Apps Script hanya dapat mengirim (mengapa Apps Script tidak bisa menerima webhook).Ganti TOKEN_DEVICE dengan token device Anda dan NOMOR_TUJUAN dengan nomor WhatsApp Anda sendiri, mis.
08…atau628…; angka 0 di depan otomatis diganti 62.Keluaran mirip berikut: { "status": true, "detail": "success! message in queue", "id": [ "407" ], "process": "pending", "requestid": 101, "target": [ "628xxxxxxxxx" ], "quota": 299 }"status": trueberarti permintaan diterima."process": "pending"berarti pesan sudah masuk antrian kirim dan dikirim sesudah gocap membalas.requestidadalah nomor permintaan kirim ini.Lihat pesan tiba di WhatsApp
Buka WhatsApp di ponsel target. Bila pesan tidak muncul, lihat Kalau gagal.
Opsional: periksa status koneksi device
Lihat Cek device untuk arti
device_statusdanhealth.
Baca respons
Galat tetap dikembalikan dengan HTTP 200; periksa status dan reason, bukan kode HTTP.
status:truebila diterima,falsebila ditolak.reason: alasan penolakan, hanya bilastatusbernilaifalse. Cocokkan string-nya persis.detail: ringkasan hasil.id: id pesan, satu per target, berurutan sama dengantarget.process: selalupending; pesan dikirim dari antrian kirim.requestid: nomor permintaan kirim; sebutkan saat menghubungi gocap.target: target setelah dinormalisasi, berurutan sama dengan permintaan.quota: sisa kuota device;nulluntuk paket Pro.
{
"status": false,
"reason": "target invalid"
}Beberapa keadaan memakai kode lain dengan amplop yang sama: path yang tidak ada dijawab HTTP 404 dengan endpoint not available, kegagalan internal dijawab HTTP 500 dengan reason bebas yang tidak boleh dicocokkan, dan gerbang di depan API dapat menjawab:
- HTTP 503
service unavailable: Gerbang di depan API tidak mendapat jawaban dari layanan gocap: layanan sedang dimulai ulang, terganggu, atau melewati batas waktu. - HTTP 400
input invalid: Gerbang menolak permintaan yang rusak sebelum sampai ke API, misalnya HTTP polos ke port HTTPS atau header terlalu besar (HTTP/1.1). - HTTP 413
file size must under 25MB: Badan permintaan melebihi batas ukuran gerbang.
Kalau gagal
Tabel ini memuat reason yang dapat muncul saat memanggil POST /send hari ini, termasuk jawaban gerbang di depan API dan jawaban untuk path yang salah ketik, ditambah kesalahan yang terjadi sebelum permintaan sampai ke gocap.
| Yang tampil | HTTP | Arti | Yang dilakukan |
|---|---|---|---|
token invalid | 200 | Token device tidak dikenal: salah salin, sudah dibuat ulang, milik device yang sudah dihapus, atau header Authorization kosong atau berisi koma. | Kirim token device di header Authorization, apa adanya atau dengan awalan Bearer. Token hanya tampil sekali; bila hilang, buat ulang di halaman device dashboard (token lama langsung tidak berlaku). Token berawalan gc_ (atau wv_ untuk token lama) adalah token akun dan tidak diterima endpoint ini. |
input invalid | 200 | Parameter wajib tidak ada atau kosong, bentuk nilai salah (misalnya countryCode, delay, typing, atau schedule), message lebih dari 60.000 karakter, url dan file diisi bersamaan, parameter yang belum didukung dikirim (misalnya location), atau parameter ditaruh di query string, bukan di badan. Di /qr: type selain qr dan code, atau type=code tanpa nomor whatsapp yang sah. | Kirim parameter di badan permintaan (form, multipart, atau JSON) dengan nama dan bentuk yang benar. Untuk pesan teks, target dan message wajib diisi. |
JSON format invalid | 200 | Badan dengan Content-Type application/json tidak dapat diurai atau bukan objek JSON. | Kirim satu objek JSON yang sah, dengan target ditulis sebagai string. |
buttons and lists not supported | 200 | Parameter tombol atau daftar (buttonJSON, listJSON, templateJSON) dikirim; gocap tidak mendukungnya. | Hapus parameter itu dan kirim pesan teks atau media. |
file format not supported | 200 | Ekstensi atau tipe konten berkas, termasuk ekstensi pada filename, tidak termasuk format yang didukung. | Kirim berkas dengan format yang didukung, atau perbaiki ekstensi pada filename. |
file size must under 25MB | 200 | Berkas pada file atau url lebih besar dari 25 MB (26.214.400 byte). | Perkecil berkas, atau kirim tautan ke berkas yang lebih kecil. |
id group invalid | 200 | Target berakhiran @g.us bukan grup yang diikuti device ini. | Pastikan nomor device sudah menjadi anggota grup itu dan ID grup disalin lengkap. |
insufficient quota | 200 | Sisa kuota periode berjalan lebih kecil dari jumlah target; seluruh permintaan ditolak tanpa ada pesan yang dibuat. | Periksa sisa kuota lewat POST /device, lalu kurangi jumlah target. |
target invalid | 200 | Satu atau lebih target gagal dinormalisasi: mengandung huruf (termasuk NOMOR_TUJUAN yang belum diganti), panjangnya di luar 8 sampai 15 digit, ada entri kosong di antara koma, atau alamat ber-@ selain grup (@g.us) dan LID (@lid). | Tulis nomor dengan kode negara atau berawalan 0, tanpa huruf, dan pisahkan beberapa target dengan koma. |
url invalid | 200 | Nilai url bukan URL http atau https yang lengkap, atau memuat nama pengguna atau sandi. | Kirim URL lengkap yang diawali http:// atau https://, tanpa kredensial di dalamnya. |
url unreachable | 200 | Berkas di url tidak dapat diambil: gagal DNS atau koneksi, melewati batas waktu, mengarah ke alamat jaringan privat, atau dijawab selain 2xx. | Pastikan URL dapat diunduh publik tanpa login, atau kirim berkasnya langsung lewat field file. |
endpoint not available | 404 | Path atau metode tidak dilayani: path salah ketik, garis miring di akhir path, metode selain POST (termasuk GET /send), atau endpoint Fonnte yang belum ada di gocap. | Kirim POST ke alamat dasar ditambah /send, /device, /qr, atau /disconnect, tanpa garis miring di akhir. |
internal errorreason bebas: jangan dicocokkan | 500 | Kegagalan internal di sisi gocap, misalnya database tidak tersedia. Teks reason ini bebas dan dapat berubah. | Jangan mencocokkan teks ini; ulangi permintaan beberapa saat kemudian. |
service unavailable | 503 | Gerbang di depan API tidak mendapat jawaban dari layanan gocap: layanan sedang dimulai ulang, terganggu, atau melewati batas waktu. | Ulangi beberapa saat kemudian. Bila jawaban ini datang setelah permintaan lama menunggu, permintaan mungkin sudah diterima; mengulang POST /send dapat mengirim pesan dua kali. |
curl: (6) Could not resolve host | — | Alamat salah ketik atau tidak ada koneksi internet. | Salin alamat dasar dari Sebelum mulai dan periksa koneksi. |
Galat Invoke-WebRequest | — | Di Windows PowerShell, curl adalah alias perintah lain. | Ketik curl.exe. |
| Keluaran HTML, keluaran kosong, atau terminal menunggu masukan | — | Perintah terpotong saat ditempel. | Tempel ulang seluruh blok perintah; baris yang diakhiri \ bersambung ke baris berikutnya. |
Token yang dipakai berawalan gc_ atau wv_ | — | Mungkin token akun: token akun berawalan gc_ (token akun lama wv_) dan tidak diterima endpoint API (jawabannya token invalid). | Pakai token device: yang tampil sekali saat device dibuat, atau token baru dari pengaturan device. |
"status": true tetapi pesan tidak muncul | — | Pesan sudah diantrekan. Selama device tidak terhubung, pesan menunggu sampai tersambung lagi; pesan yang menunggu lebih dari 24 jam kedaluwarsa. Selama health bernilai restricted, gocap menahan pesan device itu sampai Anda memilih "Lanjutkan pengiriman" di dashboard. Pesan ke kontak baru juga tidak dijamin sampai. | Periksa status koneksi device beserta health, dan pastikan target benar. |
Masalah berlanjut? Kirim email ke hi@gocap.id dan sertakan requestid dari respons.
Cek device
POST /device mengembalikan keadaan device pemilik token; tidak ada parameter.
curl -X POST https://api.gocap.id/device \
-H 'Authorization: TOKEN_DEVICE'{
"status": true,
"device": "628xxxxxxxxx",
"device_status": "connect",
"expired": "2026-10-23T10:00:00+07:00",
"messages": 1,
"name": "Toko Contoh",
"package": "Free",
"quota": 299,
"health": "ok",
"restricted": false,
"restricted_until": null
}device_status menyatakan status koneksi ke WhatsApp:
| Nilai | Label | Arti | Yang bisa Anda lakukan |
|---|---|---|---|
connect | terhubung | Device tersambung ke WhatsApp. | Tidak ada; periksa juga health. |
disconnect | belum dihubungkan, sedang menghubungkan, terputus, keluar dari WhatsApp, atau menunggu pembaruan | Device tidak tersambung ke WhatsApp. Pesan baru tetap diterima dan menunggu di antrian kirim sampai device tersambung lagi (bila health bernilai restricted karena sebab selain kunci kiriman dingin, juga sampai Anda memilih "Lanjutkan pengiriman"); pesan yang menunggu lebih dari 24 jam selama device tidak tersambung kedaluwarsa. | Lihat reason untuk penyebabnya. Field device kosong berarti device belum pernah dihubungkan: hubungkan dari dashboard. |
health menyatakan apakah device sedang dibatasi:
| Nilai | Label | Arti | Yang bisa Anda lakukan |
|---|---|---|---|
ok | ok | Device tidak sedang dibatasi. Sesudah device tersambung atau pembatasan dilepas, kiriman dingin dapat tertunda sesaat sampai gocap memeriksa status kunci di WhatsApp. | Tidak ada. |
restricted | dibatasi | Device sedang dibatasi: pembatasan sementara dari WhatsApp, sesi yang ditolak WhatsApp, atau jeda yang Anda pasang di dashboard. Selama itu gocap menahan semua pesan device ini: POST /send tetap diterima dan pesannya menunggu, lalu dilepas setelah Anda memilih "Lanjutkan pengiriman" di dashboard. Pesan yang sedang dikirim saat jeda dipasang tetap terkirim. Untuk ketiga sebab itu, pesan yang tertahan selama device tersambung tidak kedaluwarsa. Bila reason bernilai timelock, sebabnya kunci kiriman dingin dari WhatsApp: gocap menahan kiriman dingin, yaitu pesan perorangan ke nomor yang menurut sesi WhatsApp di device belum punya percakapan aktif, termasuk pesan yang belum sempat diperiksa. Pesan grup tetap dikirim, begitu juga pesan ke nomor yang sudah membalas: gocap memeriksanya di sesi WhatsApp device lalu mengirimnya, biasanya dalam satu menit (lebih lama bila banyak pesan tertahan). Bila WhatsApp kembali menolak pesan ke nomor yang sudah membalas sebanyak 2 kali selama kunci yang sama, semua pesan perorangan ikut ditahan sampai kunci lepas; pesan grup tetap dikirim. Kunci lepas sendiri saat WhatsApp membukanya. Kiriman dingin yang tetap dingin menurut pemeriksaan di sesi WhatsApp dan sudah tertahan lebih dari 72 jam, dihitung sejak kunci terpasang atau sejak pesan masuk antrean (mana yang lebih akhir), kedaluwarsa selama device tersambung. Kunci yang sama masih berlaku bila device tidak tersambung dengan reason logged_out dan restricted_until terisi (rantai 463 lalu 401): "Lanjutkan pengiriman" tidak melepasnya, dan sesudah device tersambung lagi kiriman dingin tetap ditahan sampai kunci lepas. restricted bernilai true; restricted_until berisi batas waktunya bila WhatsApp memberikannya; reason dan restriction_type menyebut sebabnya bila ada. | Periksa health sebelum mengirim pesan yang cepat basi, misalnya OTP: pesan yang tertahan baru terkirim setelah Anda memilih "Lanjutkan pengiriman", atau, bila sebabnya kunci kiriman dingin (reason bernilai timelock, atau logged_out dengan restricted_until terisi), setelah WhatsApp membuka kunci dan device tersambung. Keterangan dan langkah pemulihannya tampil di halaman device di dashboard. |
Pesan ditahan selama device dibatasi
Selama health bernilai restricted karena pembatasan sementara dari WhatsApp, sesi yang ditolak WhatsApp, atau jeda yang Anda pasang di dashboard, gocap menahan semua pesan device itu: POST /send tetap diterima dan pesannya menunggu, lalu dilepas setelah Anda memilih "Lanjutkan pengiriman" di dashboard. Pesan yang sedang dikirim saat jeda dipasang tetap terkirim. Bila reason bernilai timelock, WhatsApp mengunci kiriman dingin: gocap menahan kiriman dingin, yaitu pesan perorangan ke nomor yang menurut sesi WhatsApp di device belum punya percakapan aktif, termasuk pesan yang belum sempat diperiksa. Pesan grup tetap dikirim, begitu juga pesan ke nomor yang sudah membalas: gocap memeriksanya di sesi WhatsApp device lalu mengirimnya, biasanya dalam satu menit (lebih lama bila banyak pesan tertahan). Bila WhatsApp kembali menolak pesan ke nomor yang sudah membalas sebanyak 2 kali selama kunci yang sama, semua pesan perorangan ikut ditahan sampai kunci lepas; pesan grup tetap dikirim. Kunci lepas sendiri saat WhatsApp membukanya. Kiriman dingin yang tetap dingin menurut pemeriksaan di sesi WhatsApp dan sudah tertahan lebih dari 72 jam, dihitung sejak kunci terpasang atau sejak pesan masuk antrean (mana yang lebih akhir), kedaluwarsa selama device tersambung. Periksa health sebelum mengirim pesan yang cepat basi, misalnya OTP.
Risiko pemblokiran (ban) oleh WhatsApp ditanggung pemilik nomor.
Arti reason dan restriction_type
reason hanya ada bila keadaan device saat ini punya penyebab.
| Nilai | Label | Arti | Yang bisa Anda lakukan |
|---|---|---|---|
network | jaringan terputus | Koneksi ke WhatsApp terputus karena jaringan. | Tidak ada: gocap menyambung ulang otomatis. |
engine_restart | layanan penghubung WhatsApp dimulai ulang | Layanan penghubung WhatsApp dimulai ulang, misalnya saat pembaruan. | Tidak ada: device tersambung lagi otomatis. |
manual | tindakan manual dari dashboard atau API | Keadaan device berasal dari tindakan manual: device di-logout lewat POST /disconnect atau dari dashboard (sesi WhatsApp-nya dihapus), atau device sedang disambung ulang setelah Anda memilih "Sambung ulang" di dashboard. | Bila Anda baru memilih "Sambung ulang", tunggu sebentar lalu periksa lagi. Bila device di-logout, hubungkan ulang dengan QR atau pairing code dari dashboard. |
logged_out | sesi WhatsApp berakhir | Sesi WhatsApp device berakhir dan dihapus; gocap tidak menyambung ulang sendiri. | Hubungkan ulang dengan QR atau pairing code dari dashboard. Bila health bernilai restricted karena sesi ditolak WhatsApp, hubungkan ulang lebih dulu, lalu pilih "Lanjutkan pengiriman"; sampai saat itu gocap menahan pesan device ini. Bila pembatasannya kunci kiriman dingin (health bernilai restricted dengan restricted_until terisi; rantai 463 lalu 401; restriction_type menyebut jenis kuncinya hanya bila WhatsApp memberikannya), Anda dapat menunggu sampai waktu di restricted_until lewat sebelum menghubungkan ulang, tetapi selama device tidak tersambung pesan yang menunggu lebih dari 24 jam kedaluwarsa. |
outdated | layanan penghubung WhatsApp belum diperbarui | Layanan penghubung WhatsApp perlu diperbarui agar diterima WhatsApp; device menunggu pembaruan dari gocap. | Tidak ada: device tersambung lagi otomatis setelah pembaruan selesai. |
stream_replaced | sesi dipakai koneksi lain | Sesi WhatsApp ini dipakai koneksi lain, jadi gocap terputus dan tidak menyambung ulang sendiri. | Pilih "Sambung ulang" di dashboard. |
temporary_ban | pembatasan sementara dari WhatsApp | WhatsApp memberi pembatasan sementara pada nomor ini sampai waktu di restricted_until. | Tunggu sampai waktu di restricted_until lewat, lalu pilih "Lanjutkan pengiriman" dan "Sambung ulang" di halaman device di dashboard. Sampai Anda memilih "Lanjutkan pengiriman", gocap menahan pesan device ini. |
passkey_required | WhatsApp meminta passkey | WhatsApp meminta passkey saat device dihubungkan; gocap belum dapat menyelesaikan langkah itu, jadi device belum tersambung. | Hubungkan lewat pairing code dari dashboard. |
restricted | dijeda manual karena peringatan di ponsel | Anda menjeda device ini di dashboard (tombol "Jeda pengiriman"), misalnya karena peringatan "account at risk" di ponsel. Selama jeda, gocap menahan semua pesan device ini: POST /send tetap diterima dan pesannya menunggu, lalu dilepas setelah Anda memilih "Lanjutkan pengiriman" di dashboard. Selama device tersambung, pesan yang tertahan tidak kedaluwarsa. Pesan yang sedang dikirim saat jeda dipasang tetap terkirim. | Bila peringatan di ponsel sudah hilang, pilih "Lanjutkan pengiriman" di halaman device di dashboard; pesan yang tertahan lalu dikirim. |
timelock | Timelock WhatsApp (463) | WhatsApp mengunci kiriman dingin nomor ini sampai sekitar waktu di restricted_until; gocap memastikannya lewat pemeriksaan berkala. Selama kunci berlaku, gocap menahan kiriman dingin, yaitu pesan perorangan ke nomor yang menurut sesi WhatsApp di device belum punya percakapan aktif, termasuk pesan yang belum sempat diperiksa. Pesan grup tetap dikirim, begitu juga pesan ke nomor yang sudah membalas: gocap memeriksanya di sesi WhatsApp device lalu mengirimnya, biasanya dalam satu menit (lebih lama bila banyak pesan tertahan). Bila WhatsApp kembali menolak pesan ke nomor yang sudah membalas sebanyak 2 kali selama kunci yang sama, semua pesan perorangan ikut ditahan sampai kunci lepas; pesan grup tetap dikirim. Kunci lepas sendiri saat WhatsApp membukanya. Kiriman dingin yang tetap dingin menurut pemeriksaan di sesi WhatsApp dan sudah tertahan lebih dari 72 jam, dihitung sejak kunci terpasang atau sejak pesan masuk antrean (mana yang lebih akhir), kedaluwarsa selama device tersambung. | Tidak ada tombol untuk kunci ini: gocap memeriksa status kunci di WhatsApp secara berkala dan melepas pesan yang tertahan begitu WhatsApp membuka kuncinya. "Lanjutkan pengiriman" tidak melepasnya. |
restriction_type hanya ada bila health bernilai restricted dan WhatsApp memberi kode pembatasan. Kode lain berawalan TempBan dapat muncul untuk jenis pembatasan sementara yang baru; artinya sama. Selama reason bernilai timelock, kodenya adalah jenis kunci kiriman dingin dari WhatsApp, dikirim apa adanya.
| Nilai | Label | Arti | Yang bisa Anda lakukan |
|---|---|---|---|
TempBanSentToTooManyPeople | pembatasan sementara dari WhatsApp | Kode pembatasan sementara dari WhatsApp untuk nomor ini, dikirim apa adanya. | Tunggu sampai waktu di restricted_until lewat, lalu pilih "Lanjutkan pengiriman" dan "Sambung ulang" di halaman device di dashboard. Sampai Anda memilih "Lanjutkan pengiriman", gocap menahan pesan device ini. |
TempBanBlockedByUsers | pembatasan sementara dari WhatsApp | Kode pembatasan sementara dari WhatsApp untuk nomor ini, dikirim apa adanya. | Tunggu sampai waktu di restricted_until lewat, lalu pilih "Lanjutkan pengiriman" dan "Sambung ulang" di halaman device di dashboard. Sampai Anda memilih "Lanjutkan pengiriman", gocap menahan pesan device ini. |
TempBanCreatedTooManyGroups | pembatasan sementara dari WhatsApp | Kode pembatasan sementara dari WhatsApp untuk nomor ini, dikirim apa adanya. | Tunggu sampai waktu di restricted_until lewat, lalu pilih "Lanjutkan pengiriman" dan "Sambung ulang" di halaman device di dashboard. Sampai Anda memilih "Lanjutkan pengiriman", gocap menahan pesan device ini. |
TempBanSentTooManySameMessage | pembatasan sementara dari WhatsApp | Kode pembatasan sementara dari WhatsApp untuk nomor ini, dikirim apa adanya. | Tunggu sampai waktu di restricted_until lewat, lalu pilih "Lanjutkan pengiriman" dan "Sambung ulang" di halaman device di dashboard. Sampai Anda memilih "Lanjutkan pengiriman", gocap menahan pesan device ini. |
TempBanBroadcastList | pembatasan sementara dari WhatsApp | Kode pembatasan sementara dari WhatsApp untuk nomor ini, dikirim apa adanya. | Tunggu sampai waktu di restricted_until lewat, lalu pilih "Lanjutkan pengiriman" dan "Sambung ulang" di halaman device di dashboard. Sampai Anda memilih "Lanjutkan pengiriman", gocap menahan pesan device ini. |
OTP dan kontak pertama
OTP dan kontak pertama tidak dijamin
OTP dan notifikasi kontak pertama bukan kasus penggunaan yang dijamin di provider WhatsApp tidak resmi. Pesan ke nomor yang belum pernah berbalas pesan dengan device Anda dapat tidak sampai.
Pola yang dianjurkan:
- Minta pelanggan mengirim pesan lebih dulu, misalnya lewat tautan
https://wa.me/NOMOR_DEVICE?text=Haloberlabel "Mulai chat" di formulir Anda. Ganti NOMOR_DEVICE dengan nomor device (fielddevicedi responsPOST /device). - Tulis pesan yang mengundang balasan, misalnya "Balas OK untuk mengonfirmasi pesanan".
- Sebelum mengirim OTP, periksa
POST /device:device_status,health, danrestricted_until. Selamahealthbernilairestricted, OTP ikut ditahan sampai Anda memilih "Lanjutkan pengiriman" dan bisa sudah basi saat terkirim; pakai jalur cadangan. - Kirim ke kontak baru dalam jumlah kecil dan bertahap.
- Siapkan jalur cadangan seperti SMS atau email untuk pesan yang wajib sampai.
Akun WhatsApp Business dapat mengalami pembatasan tambahan "new chat message capping" yang tidak dimodelkan gocap.
Terima pesan masuk
Isi URL webhook pesan masuk di pengaturan device (slot webhook). gocap mengirim pesan masuk ke URL itu sebagai POST JSON bertanda tangan: pesan pribadi aktif bawaan, sedangkan pesan grup hanya bila "Kirim pesan grup ke webhook" dinyalakan di pengaturan device.
- URL wajib
httpsdan dapat dijangkau dari internet; URLhttpdan alamat jaringan privat ditolak saat disimpan. Untuk pengembangan di komputer sendiri, pakai tunnel HTTPS. - Balas dengan kode 2xx tanpa badan dalam 10 detik, lalu proses isinya. Badan JSON berisi
messageatauurlmenjadi balasan webhook: gocap mengirimnya sebagai pesan WhatsApp ke pengirim (ke grup bila pesan berasal dari grup) dan memakai kuota. - Kode selain 2xx, termasuk pengalihan 3xx, dan batas waktu yang terlewati dihitung gagal. gocap mencoba lagi dengan jeda 1, 5, 15, lalu 40 menit antar-percobaan: total 5 percobaan dalam ±61 menit, lalu berhenti.
- Pesan yang sama dapat terkirim lebih dari sekali; pakai
inboxiduntuk membuang duplikat. - Tombol "Uji webhook" di pengaturan device mengirim satu payload contoh bertanda tangan ke URL yang tersimpan. Tombol ini mengabaikan badan jawaban penerima, jadi tidak dapat dipakai untuk menguji balasan webhook.
Slot webhook koneksi dan status pesan dapat diisi, tetapi belum mengirim event.
Verifikasi tanda tangan
Setiap pengiriman webhook membawa header X-Gocap-Signature dan X-Gocap-Timestamp. Periksa keduanya sebelum memproses isi.
Verifikasi tanda tangan webhook (bagian 4.6)
Langkah, contoh PHP, Node.js, dan Python, kesalahan umum, dan vektor uji.
Langkah berikutnya
- Verifikasi tanda tangan webhook (bagian 4.6)Tolak permintaan yang tidak berasal dari gocap.
- Wizard MulaiTekan Segarkan: langkah Kirim pesan pertama tercentang begitu pesan tercatat di kuota device.
- Daftar deviceAtur webhook pesan masuk dan token device.
- Pengaturan akunTampilkan Webhook Secret untuk memverifikasi tanda tangan.