Dokumen ini menjelaskan cara menggunakan API untuk mengirim pesan ke pengguna WhatsApp.
Anda dapat menggunakan API untuk mengirim jenis pesan berikut.
Pesan alamat memudahkan Anda untuk meminta alamat pengiriman dari pengguna WhatsApp. | ![]() |
Pesan audio menampilkan ikon audio dan tautan ke file audio. Saat pengguna WhatsApp mengetuk ikon, klien WhatsApp memuat dan memutar file audio. | ![]() |
Pesan kontak memungkinkan Anda untuk mengirim banyak informasi kontak langsung ke pengguna WhatsApp, seperti nama, nomor telepon, alamat fisik, dan alamat email. | ![]() |
Pesan dokumen menampilkan ikon dokumen, yang ditautkan ke sebuah dokumen yang dapat diketuk oleh pengguna WhatsApp untuk diunduh. | ![]() |
Pesan gambar menampilkan satu gambar dan keterangan opsional. | ![]() |
Pesan tombol URL CTA interaktif memungkinkan Anda untuk memetakan URL apa pun ke tombol sehingga Anda tidak perlu menyertakan URL mentah yang panjang atau tidak jelas di isi pesan. | ![]() |
Pesan Alur interaktif memungkinkan Anda mengirim pesan terstruktur yang lebih alami atau nyaman bagi pelanggan Anda. Misalnya, Anda bisa menggunakan WhatsApp Flows untuk membuat janji temu, menelusuri produk, mengumpulkan masukan dari pelanggan, mendapatkan prospek penjualan baru, atau hal lainnya. Pesan Alur Interaktif didokumentasikan dalam set dokumentasi WhatsApp Flows kami. | ![]() |
Pesan daftar interaktif memungkinkan Anda untuk menyajikan daftar opsi kepada pengguna WhatsApp untuk dipilih. | ![]() |
Pesan permintaan lokasi interaktif menampilkan teks isi dan tombol kirim lokasi. Saat pengguna WhatsApp mengetuk tombol ini, layar bagikan lokasi akan muncul yang dapat digunakan pengguna untuk membagikan lokasi mereka. | ![]() |
Pesan tombol balasan interaktif memungkinkan Anda untuk mengirim hingga tiga balasan yang sudah ditentukan sebelumnya untuk dipilih oleh pengguna. | ![]() |
Pesan lokasi memungkinkan Anda mengirim koordinat lintang dan bujur suatu lokasi ke pengguna WhatsApp. | ![]() |
Pesan stiker menampilkan gambar stiker animasi atau statis dalam pesan WhatsApp. | ![]() |
Pesan teks adalah pesan yang hanya berisi isi teks dan pratinjau tautan opsional. | ![]() |
Pesan template memungkinkan Anda mengirim template marketing, utilitas, dan autentikasi ke pengguna WhatsApp. Tidak seperti semua jenis pesan lainnya, pesan template tidak mewajibkan jendela layanan pelanggan 24 jam yang terbuka antara Anda dan penerima pesan sebelum pesan dapat dikirim. | ![]() |
Pesan video menampilkan pratinjau gambar mini dari gambar video dengan keterangan opsional. Saat pengguna WhatsApp mengetuk pratinjau, video akan dimuat video dan ditampilkan ke pengguna. | ![]() |
Pesan tanggapan adalah tanggapan-emoji yang dapat Anda terapkan pada pesan pengguna WhatsApp sebelumnya yang telah Anda terima. | ![]() |
Kualitas pesan Anda didasarkan pada bagaimana pesan telah diterima oleh pengguna WhatsApp selama tujuh hari terakhir dan diberi bobot berdasarkan kebaruan. Hal ini ditentukan oleh kombinasi sinyal umpan balik pengguna seperti pemblokiran, laporan, penyenyapan, pengarsipan, dan alasan yang diberikan pengguna saat mereka memblokir Anda.
Pedoman untuk mengirim pesan berkualitas tinggi:
Status nomor telepon bisnis Anda, peringkat kualitas, dan batas berkirim pesan ditampilkan di panel Pengelola WhatsApp > Fitur akun > Nomor telepon.

Perhatikan bahwa perubahan kualitas dalam interval pendek (bahkan dalam hitungan menit) pada nomor dengan traffic tinggi adalah hal yang wajar.
Setiap kali pengguna WhatsApp mengirim pesan kepada Anda atau menelepon Anda, pengatur waktu 24 jam yang disebut periode layanan pelanggan akan dimulai (atau dimuat ulang jika sudah dimulai).
Saat periode layanan pelanggan terbuka antara Anda dan pengguna, Anda bisa mengirim jenis pesan apa pun kepada pengguna tersebut. Jika periode tidak terbuka antara Anda dan pengguna, Anda hanya dapat mengirim pesan template kepada pengguna, karena pesan template adalah satu-satunya jenis pesan yang dapat dikirim di luar periode layanan pelanggan.
Sebagai pengingat, Anda hanya dapat mengirim pesan kepada pengguna yang telah setuju untuk menerima pesan dari Anda.
Masalah yang diketahui: Dalam kasus yang jarang terjadi, Anda mungkin menerima pesan dari pengguna, tetapi tidak dapat menanggapi dalam periode layanan pelanggan. Kami mohon maaf atas ketidaknyamanan ini.
Semua permintaan kirim pesan menggunakan endpoint POST /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID/messages:
POST /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID>/messages
Isi postingan bervariasi tergantung jenis pesan yang ingin Anda kirimkan, tetapi payload menggunakan sintaksis umum berikut ini:
{
"messaging_product": "whatsapp",
"recipient_type": "<RECIPIENT_TYPE>",
"to": "<WHATSAPP_USER_PHONE_NUMBER>",
"type": "<MESSAGE_TYPE>",
"<MESSAGE_TYPE>": {<MESSAGE_CONTENTS>}
}Nilai properti type di dalam payload isi postingan menunjukkan jenis pesan yang akan dikirim, dan properti yang cocok dengan jenis tersebut harus disertakan yang menjelaskan isi pesan.
Properti recipient_type bisa berupa indivudal untuk berkirim pesan pribadi, atau group untuk pesan grup.
Pelajari selengkapnya tentang Groups API
Sebagai contoh, ini adalah permintaan untuk mengirim pesan teks ke pengguna WhatsApp. Perhatikan bahwa type diatur ke text, dan sebuah objek text mengikutinya, yang menjelaskan isi pesan:
curl 'https://graph.facebook.com/v24.0/106540352242922/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "+16505551234",
"type": "text",
"text": {
"preview_url": true,
"body": "As requested, here'\''s the link to our latest product: https://www.meta.com/quest/quest-3/"
}
}'
Berikut adalah tampilan pesan di klien WhatsApp jika pesan teks berhasil dikirim ke pengguna WhatsApp:

API akan menampilkan tanggapan JSON berikut ini jika berhasil menerima permintaan kirim pesan Anda tanpa menemukan kesalahan apa pun dalam permintaan itu sendiri. Perhatikan bahwa tanggapan ini hanya menunjukkan bahwa API berhasil menerima permintaan Anda, tidak menunjukkan keberhasilan pengiriman pesan Anda. Status pengiriman pesan dikomunikasikan melalui webhooks pesan.
{
"messaging_product": "whatsapp",
"contacts": [
{
"input": "<WHATSAPP_USER_PHONE_NUMBER>",
"wa_id": "<WHATSAPP_USER_PHONE_NUMBER>"
}
],
"messages": [
{
"id": "<WHATSAPP_MESSAGE_ID>",
"group_id": "<GROUP_ID>", <!-- Only included if messaging a group -->
"message_status": "<PACING_STATUS>" <!-- Only included if sending a template -->
}
]
}| Placeholder | Description | Sample Value |
|---|---|---|
String | The string identifier of a group made using the Groups API. This field shows when messages are sent, received, or read from a group. |
|
String | Indicates template pacing status. The |
|
String | WhatsApp user's WhatsApp phone number. May not match |
|
String | WhatsApp user's WhatsApp ID. May not match |
|
String | WhatsApp Message ID. This ID appears in associated messages webhooks, such as sent, read, and delivered webhooks. |
|
Pesan dagang adalah pesan interaktif yang digunakan bersama dengan katalog produk. Lihat Bagikan Produk dengan Pelanggan untuk melihat cara menggunakan jenis pesan ini.
Anda dapat memberi tahu pengguna WhatsApp bahwa Anda telah membaca pesan mereka dengan menandainya sebagai telah dibaca, yang menyebabkan dua tanda centang biru (disebut "laporan dibaca") yang muncul di bawah pesan pengguna:

Jika Anda memerlukan waktu beberapa detik atau lebih untuk membalas pengguna WhatsApp, Anda dapat memberi tahu mereka bahwa Anda sedang mempersiapkan tanggapan dengan menampilkan indikator mengetik dan laporan dibaca di klien WhatsApp:

Anda dapat mengirim pesan ke pengguna WhatsApp sebagai balasan kontekstual, yang mengutip pesan sebelumnya dalam gelembung obrolan kontekstual:

Hal ini memudahkan pengguna untuk mengetahui pesan spesifik mana yang Anda balas.
Pesan yang dikirim ke pengguna WhatsApp memicu webhooks pesan, jadi pastikan untuk berlangganan topik ini untuk menerima notifikasi status pesan.
Plus signs (+), hyphens (-), parenthesis ((,)), and spaces are supported in send message requests.
We highly recommend that you include both the plus sign and country calling code when sending a message to a customer. If the plus sign is omitted, your business phone number's country calling code is prepended to the customer's phone number. This can result in undelivered or misdelivered messages.
For example, if your business is in India (country calling code 91) and you send a message to the following customer phone number in various formats:
| Number In Send Message Request | Number Message Delivered To | Outcome |
|---|---|---|
|
| Correct number |
|
| Correct number |
|
| Potentially wrong number |
|
| Potentially wrong number |
Note: For Brazil and Mexico, the extra added prefix of the phone number may be modified by the Cloud API. This is a standard behavior of the system and is not considered a bug.
Jika Anda menggunakan tautan (link) ke aset media di server Anda (berlawanan dengan ID (id) aset yang telah Anda unggah ke server kami), Cloud API WhatsApp secara internal menyimpan aset tersebut dalam cache untuk jangka waktu 10 menit. Kami akan menggunakan aset yang di-cache dalam permintaan kirim pesan berikutnya jika tautan pada payload pengiriman pesan berikutnya sama dengan tautan pada payload pengiriman pesan awal.
Jika Anda tidak ingin kami menggunakan kembali aset yang di-cache dalam pesan berikutnya dalam jangka waktu 10 menit, tambahkan string kueri acak ke tautan aset pada payload permintaan kirim pesan yang baru. Kami akan memperlakukannya sebagai aset baru, mengambilnya dari server Anda, dan menyimpannya dalam cache selama 10 menit.
Contoh:
https://link.to.media/sample.jpg — aset diambil, di-cache selama 10 menithttps://link.to.media/sample.jpg - menggunakan aset yang di-cachehttps://link.to.media/sample.jpg?abc123 - aset diambil, di-cache selama 10 menitSaat mengirim serangkaian pesan, urutan tersampainya pesan tidak dijamin sesuai dengan urutan permintaan API Anda. Jika Anda perlu memastikan urutan pengiriman pesan, konfirmasikan tanda terima status delivered dalam webhook status pesan sebelum mengirim pesan berikutnya dalam urutan pesan Anda.
Jika kami tidak dapat mengirimkan pesan kepada pengguna WhatsApp, kami akan mencoba kembali pengiriman tersebut dalam jangka waktu yang dikenal sebagai time-to-live (TTL), atau masa berlaku pesan.
Anda bisa menyesuaikan TTL default untuk template autentikasi dan utilitas, dan untuk template marketing yang dikirim menggunakan MM Lite API. Lihat dokumen Time-to-live kami untuk mempelajari caranya.
Pesan yang tidak dapat dikirim dalam TTL default atau yang disesuaikan akan dibatalkan.
Jika Anda tidak menerima webhook pesan status dengan status diatur ke delivered sebelum TTL terlampaui, anggap saja pesan telah dibatalkan.
Jika Anda mengirim pesan yang gagal (status diatur ke failed), mungkin ada penundaan kecil sebelum Anda menerima webhook, jadi Anda mungkin ingin membuat buffer kecil sebelum menganggap pesan telah dibatalkan.
Jika Anda mengalami masalah dengan pengiriman pesan, lihat Pesan Tidak Tersampaikan.