REST API · v1

Pesan Interaktif WhatsApp

Quick Reply, CTA URL, dan List — pesan dengan tombol/pilihan yang membuat pelanggan merespons tanpa perlu mengetik.

Tipe yang tersedia

whatsGo mendukung tiga jenis pesan interaktif yang bisa kamu kirim melalui API:

Tipe Kode tipe Deskripsi
Quick Reply button Maks 3 tombol balas cepat. Pelanggan cukup ketuk satu tombol untuk merespons.
CTA URL cta_url 1 tombol yang membuka link URL. Cocok untuk mengarahkan pelanggan ke halaman web, formulir, atau katalog.
List list Daftar pilihan dengan kategori. Pelanggan memilih opsi dari dropdown yang terorganisir.

Quick Reply (tombol balas cepat)

Quick Reply menampilkan hingga 3 tombol di bawah pesan. Pelanggan cukup mengetuk satu tombol untuk merespons. Tidak perlu mengetik pesan secara manual.

Endpoint

POST /external-api/v1/whatsapp/interactive

Contoh request

{
  "to": "+628123456789",
  "type": "interactive",
  "interactive": {
    "type": "button",
    "body": {
      "text": "Apakah kamu puas dengan layanan kami?"
    },
    "action": {
      "buttons": [
        {
          "type": "reply",
          "reply": {
            "id": "puas_1",
            "title": "Puas"
          }
        },
        {
          "type": "reply",
          "reply": {
            "id": "tidak_puas_1",
            "title": "Tidak Puas"
          }
        },
        {
          "type": "reply",
          "reply": {
            "id": "lainnya_1",
            "title": "Lainnya"
          }
        }
      ]
    }
  }
}

Batas

Atribut Batas
Jumlah tombol Maks. 3
Panjang judul tombol Maks. 20 karakter
Panjang ID tombol Maks. 256 karakter
Panjang teks body Maks. 1024 karakter
Header (opsional) Maks. 60 karakter

CTA URL (tombol membuka link)

CTA URL menampilkan satu tombol yang, saat diketuk, akan membuka URL yang kamu tentukan. Cocok untuk mengarahkan pelanggan ke halaman pemesanan, formulir survei, atau katalog produk.

Endpoint

POST /external-api/v1/whatsapp/interactive

Contoh request

{
  "to": "+628123456789",
  "type": "interactive",
  "interactive": {
    "type": "cta_url",
    "header": {
      "type": "text",
      "text": "Lihat Katalog Kami"
    },
    "body": {
      "text": "Temukan produk terbaru kami dengan harga spesial. Klik tombol di bawah untuk melihat katalog lengkap."
    },
    "footer": {
      "text": "Berlaku hingga 31 Desember 2026"
    },
    "action": {
      "display_text": "Lihat Katalog",
      "url": "https://example.com/katalog"
    }
  }
}

Batas

Atribut Batas
Jumlah tombol 1
Display text tombol Maks. 20 karakter
URL Maks. 2000 karakter, harus valid
Panjang teks body Maks. 1024 karakter
Header text Maks. 60 karakter
Footer text Maks. 60 karakter

List (daftar pilihan)

List menampilkan daftar pilihan yang terorganisir dalam kategori. Pelanggan mengetuk tombol untuk membuka daftar, lalu memilih salah satu opsi. Cocok untuk menu layanan, opsi pembayaran, atau daftar lokasi.

Endpoint

POST /external-api/v1/whatsapp/interactive

Contoh request

{
  "to": "+628123456789",
  "type": "interactive",
  "interactive": {
    "type": "list",
    "header": {
      "type": "text",
      "text": "Menu Layanan"
    },
    "body": {
      "text": "Pilih layanan yang ingin kamu gunakan:"
    },
    "footer": {
      "text": "Ketuk untuk melihat opsi"
    },
    "action": {
      "button": "Pilih Layanan",
      "sections": [
        {
          "title": "Layanan Utama",
          "rows": [
            {
              "id": "konsultasi",
              "title": "Konsultasi",
              "description": "Konsultasi dengan tim ahli kami"
            },
            {
              "id": "perbaikan",
              "title": "Perbaikan",
              "description": "Layanan perbaikan perangkat"
            }
          ]
        },
        {
          "title": "Layanan Tambahan",
          "rows": [
            {
              "id": "pengiriman",
              "title": "Cek Pengiriman",
              "description": "Lacak status pengiriman kamu"
            },
            {
              "id": "pembayaran",
              "title": "Cek Pembayaran",
              "description": "Lihat detail tagihan dan riwayat pembayaran"
            }
          ]
        }
      ]
    }
  }
}

Batas

Atribut Batas
Display text tombol utama Maks. 20 karakter
Jumlah section Maks. 10
Jumlah row per section Maks. 10
Panjang judul row Maks. 24 karakter
Panjang deskripsi row Maks. 72 karakter
Panjang judul section Maks. 24 karakter
Panjang ID row Maks. 256 karakter
Panjang teks body Maks. 1024 karakter

Pesan error pesan interaktif

Ketika request gagal, API akan mengembalikan respons error dalam format berikut:

Field Tipe Deskripsi
error.code string Kode error yang terjadi
error.message string Pesan penjelasan error
error.details object Detail tambahan (opsional)

Contoh respons error

{
  "success": false,
  "error": {
    "code": "INTERACTIVE_INVALID_BUTTON",
    "message": "Jumlah tombol melebihi batas maksimum. Quick Reply maksimal 3 tombol.",
    "details": {
      "field": "interactive.action.buttons",
      "max": 3,
      "received": 5
    }
  }
}

Error umum pesan interaktif

Kode Error Penjelasan
INTERACTIVE_INVALID_TYPE Tipe interaktif tidak valid. Harus salah satu dari button, cta_url, atau list.
INTERACTIVE_INVALID_BUTTON Jumlah atau format tombol tidak sesuai batas.
INTERACTIVE_INVALID_URL URL pada CTA URL tidak valid atau melebihi batas karakter.
INTERACTIVE_INVALID_LIST Format list tidak valid, section atau row melebihi batas.
INTERACTIVE_BODY_EMPTY Body text tidak boleh kosong.

Menerima jawaban user

Ketika pelanggan mengetuk tombol atau memilih opsi dari pesan interaktif, whatsGo akan mengirimkan event ke webhook yang sudah kamu konfigurasi.

Format webhook event

{
  "event": "message.interactive_reply",
  "data": {
    "message_id": "wamid.HBgLMjEyMzQ1Njc4OQ==",
    "from": "+628123456789",
    "timestamp": 1719820800,
    "interactive": {
      "type": "button",
      "button": {
        "id": "puas_1",
        "title": "Puas"
      }
    }
  }
}

Untuk pesan list, format jawabannya akan berisi list_reply dengan field id dan title dari opsi yang dipilih pelanggan:

{
  "event": "message.interactive_reply",
  "data": {
    "message_id": "wamid.HBgLMjEyMzQ1Njc4OQ==",
    "from": "+628123456789",
    "timestamp": 1719820800,
    "interactive": {
      "type": "list",
      "list_reply": {
        "id": "konsultasi",
        "title": "Konsultasi"
      }
    }
  }
}
Penting

Pastikan webhook kamu sudah dikonfigurasi di dashboard whatsGo sebelum mengirim pesan interaktif. Pelajari lebih lanjut di halaman Webhook.