We are making changes to the WhatsApp Business Platform pricing model. See Pricing Updates on the WhatsApp Business Platform.
Gunakan endpoint /PHONE_NUMBER_ID/messages
untuk mengirim teks, media, kontak, lokasi, dan pesan interaktif, serta template pesan ke pelanggan Anda. Pelajari selengkapnya tentang pesan yang dapat Anda kirim.
Endpoint | Autentikasi |
---|---|
(Lihat Mendapatkan ID Nomor Telepon) | Developers can authenticate their API calls with the access token generated in the App Dashboard > WhatsApp > API Setup.
Solution Partners must authenticate themselves with an access token with the |
Pesan diidentifikasi dengan ID unik (WAMID). Anda dapat melacak status pesan di Webhooks melalui WAMID-nya. Anda juga dapat menandai pesan masuk sebagai endpoint pesan yang telah dibaca. WAMID ini dapat memiliki panjang maksimal hingga 128 karakter.
Dengan Cloud API, tidak ada lagi cara untuk memeriksa secara eksplisit apakah suatu nomor telepon memiliki ID WhatsApp. Untuk mengirim pesan kepada seseorang menggunakan Cloud API, cukup kirimkan langsung ke nomor telepon pelanggan—setelah mereka setuju untuk dikirimi pesan. Lihat Referensi, Pesan untuk contohnya.
Untuk mengirim pesan, Anda harus terlebih dahulu menyusun objek pesan dengan konten yang ingin Anda kirim. Ini adalah parameter yang digunakan dalam objek message
:
Nama | Deskripsi (Klik panah di kolom kiri untuk opsi yang didukung.) |
---|---|
| Diperlukan saat Objek |
| Opsional. String arbitrer, berguna untuk pelacakan. Misalnya, Anda dapat meneruskan ID template pesan di kolom ini untuk melacak perjalanan pelanggan Anda mulai dari pesan pertama yang Anda kirim. Anda kemudian dapat melacak ROI berbagai jenis template pesan untuk menentukan yang paling efektif. Semua aplikasi yang berlangganan kolom webhook Cloud API tidak memproses kolom ini, melainkan hanya menampilkannya sebagai bagian dari webhook pesan yang terkirim/tersampaikan/dibaca. Maksimal 512 karakter. Cloud API saja. |
| Diperlukan saat |
| Diperlukan jika membalas pesan di percakapan. Objek yang berisi ID pesan sebelumnya yang Anda balas. Contoh:
Cloud API saja. |
| Diperlukan saat Objek |
| Berisi objek On-Premises API saja. |
| Diperlukan saat Objek |
| Diperlukan saat Objek |
| Diperlukan saat |
| Diperlukan Layanan pesan digunakan untuk permintaan tersebut. Gunakan Cloud API saja. |
| Diperlukan jika Memungkinkan pratinjau URL dalam pesan teks — Lihat Mengirim URL dalam Pesan Teks. Kolom ini opsional jika tidak menyertakan URL dalam pesan Anda. Nilai: On-Premises API saja. Pengguna Cloud API dapat menggunakan fungsi yang sama pada kolom |
| Opsional. Saat ini, Anda hanya dapat mengirim pesan ke perorangan. Atur ini sebagai Default: |
| Status pesan. Anda dapat menggunakan kolom ini untuk menandai pesan sebagai
|
| Diperlukan saat Objek Cloud API: Di samping semua jenis stiker masuk, stiker statis dan animasi keluar pihak ketiga juga didukung. Stiker statis harus berukuran 512x512 pixel dan tidak boleh melebihi 100 KB. Stiker animasi harus berukuran 512x512 pixel dan tidak boleh melebihi 500 KB. On-Premises API: Di samping semua jenis stiker masuk, hanya stiker keluar statis pihak ketiga yang didukung. Stiker statis harus berukuran 512x512 pixel dan tidak boleh melebihi 100 KB. Stiker animasi tidak didukung. |
| Diperlukan saat |
| Diperlukan untuk pesan teks. |
| Diperlukan. ID WhatsApp atau nomor telepon pelanggan yang hendak Anda kirimi pesan. Lihat Format Nomor Telepon. Jika diperlukan, pengguna On-Premises API bisa mendapatkan nomor ini dengan memanggil |
| Opsional. Jenis pesan yang ingin Anda kirim. Jika dihilangkan, defaultnya adalah |
Objek berikut bersarang di dalam objek pesan:
Name | Description |
---|---|
| Optional. Full contact address(es) formatted as an
|
| Optional.
|
| Optional. Contact email address(es) formatted as an
|
| Required. Full contact name formatted as a
*At least one of the optional parameters needs to be included along with the |
| Optional. Contact organization information formatted as an
|
| Optional. Contact phone number(s) formatted as a
|
| Optional. Contact URL(s) formatted as a
|
Nama | Deskripsi |
---|---|
| Wajib. Tindakan yang Anda ingin pengguna lakukan setelah membaca pesan. |
| Opsional untuk jenis Objek dengan isi pesan. Objek
|
| Opsional. Objek dengan footer pesan. Objek
|
| Wajib untuk jenis Konten header ditampilkan di atas pesan. Anda tidak dapat mengatur header jika objek interaktif Anda bertipe |
| Wajib. Jenis pesan interaktif yang ingin Anda kirim. Nilai yang didukung:
|
Objek berikut bertumpuk di dalam objek interactive
:
Nama | Deskripsi |
---|---|
| Wajib untuk Pesan Daftar. Konten tombol. Tidak boleh berupa string kosong dan harus unik dalam pesan. Emoji didukung, markdown tidak didukung. Panjang maksimal: 20 karakter. |
| Wajib untuk Tombol Balas. Objek tombol dapat berisi parameter berikut:
Anda dapat memiliki hingga 3 tombol. Anda tidak boleh memiliki spasi di depan atau di belakang saat mengatur ID. |
| Wajib untuk Pesan Satu Produk dan Pesan Multiproduk. Pengidentifikasi unik katalog Facebook yang ditautkan ke Akun WhatsApp Business Anda. ID ini dapat diambil melalui Commerce Manager Meta. |
| Wajib untuk Pesan Satu Produk dan Pesan Multiproduk. Pengidentifikasi unik dari produk di katalog. Untuk mendapatkan ID ini buka Commerce Manager Meta dan pilih akun Meta Business Anda. Anda akan melihat daftar toko yang terhubung ke akun Anda. Klik toko yang ingin Anda gunakan. Di panel sisi kiri, klik Katalog > Items, dan cari item yang ingin Anda sebutkan. ID untuk produk tersebut ditampilkan di bagian nama produk. |
| Wajib untuk Pesan Daftar dan Pesan Multiproduk. Array objek |
| Opsional untuk Pesan Alur. Mode Alur saat ini, baik Default: |
| Wajib untuk Pesan Alur. Harus |
| Wajib untuk Pesan Alur. Token yang dihasilkan oleh bisnis untuk berfungsi sebagai pengidentifikasi. |
| Wajib untuk Pesan Alur. Pengidentifikasi unik Alur yang disediakan oleh WhatsApp. |
| Wajib untuk Pesan Alur. Teks pada tombol CTA, contohnya. "Mendaftar". Panjang maksimum: 20 karakter (tanpa emoji). |
| Opsional untuk Pesan Alur.
Default: |
| Opsional untuk Pesan Alur. Diperlukan hanya jika
|
Nama | Deskripsi |
---|---|
| Wajib jika Berisi objek media untuk dokumen ini. |
| Wajib jika Berisi objek media untuk gambar ini. |
| Wajib jika Teks untuk header. Pemformatan mengizinkan emoji, tetapi markdown tidak diizinkan. Panjang maksimal: 60 karakter. |
| Opsional. Teks untuk header. Pemformatan mengizinkan emoji, tetapi markdown tidak diizinkan. Panjang maksimal: 60 karakter. |
| Wajib. Jenis header yang ingin Anda gunakan. Nilai yang didukung:
|
| Wajib jika Berisi objek media untuk video ini. |
Nama | Deskripsi |
---|---|
| Wajib untuk Pesan Multiproduk. Array objek Tiap objek
|
| Wajib untuk Pesan Daftar. Berisi daftar baris. Anda dapat memiliki total 10 baris di seluruh bagian Anda. Setiap baris harus memiliki judul (Panjang maksimal: 24 karakter) dan ID (Panjang maksimal: 200 karakter). Anda dapat menambahkan deskripsi (Panjang maksimal: 72 karakter), tetapi ini opsional. Contoh: "rows": [ { "id":"unique-row-identifier-here", "title": "row-title-content-here", "description": "row-description-content-here", } ] |
| Wajib jika pesan memiliki lebih dari satu bagian. Judul bagian. Panjang maksimal: 24 karakter. |
Name | Description |
---|---|
| Required. Location latitude in decimal degrees. |
| Required. Location longitude in decimal degrees. |
| Required. Name of the location. |
| Required. Address of the location. |
Lihat Dapatkan ID Media untuk informasi tentang cara mendapatkan ID objek media Anda. Untuk informasi tentang jenis media yang didukung untuk Cloud API, lihat Jenis Media yang Didukung.
Name | Description |
---|---|
| Required when The media object ID. Do not use this field when message |
| Required when The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Do not use this field when message Cloud API users only:
|
| Optional. Media asset caption. Do not use with On-Premises API users:
|
| Optional. Describes the filename for the specific document. Use only with The extension of the filename will specify what format the document is displayed as in WhatsApp. |
| Optional. On-Premises API only. This path is optionally used with a |
Nama | Deskripsi |
---|---|
| Wajib. Namespace template. Dimulai dari |
| Wajib. Nama template. |
| Wajib. Menentukan bahasa template yang dapat di-render. Hanya kebijakan bahasa |
| Opsional. Array yang berisi parameter pesan. |
Objek berikut bersarang di dalam objek template
:
Nama | Deskripsi (Klik panah di kolom kiri untuk opsi yang didukung.) |
---|---|
| Wajib. Menunjukkan jenis parameter untuk tombol. |
| Wajib untuk Payload yang ditentukan developer yang ditampilkan ketika tombol diklik, selain teks tampilan pada tombol. Lihat Panggilan balik dari Klik Tombol Balasan Cepat sebagai contohnya. |
| Wajib untuk tombol URL. Akhiran yang disediakan developer yang ditambahkan ke URL awalan yang telah ditentukan sebelumnya di template. |
Nama | Deskripsi |
---|---|
| Wajib. Mendeskripsikan jenis |
| Opsional. Array yang berisi konten pesan. |
Nama | Deskripsi |
---|---|
| Wajib. Teks default jika pelokalan gagal. |
| Wajib. Kode mata uang seperti yang ditentukan dalam |
| Wajib. Jumlahnya dikalikan 1000. |
Nama | Deskripsi |
---|---|
| Wajib. Teks default. Untuk Cloud API, kami selalu menggunakan nilai fallback, dan kami tidak mencoba melokalisasi menggunakan kolom opsional lainnya. |
Nama | Deskripsi |
---|---|
| Wajib. Menjelaskan jenis parameter. Nilai yang didukung:
Untuk template berbasis teks, satu-satunya jenis parameter yang didukung adalah |
| Diperlukan saat Teks pesan. Batas karakter bervariasi berdasarkan jenis komponen yang disertakan berikut ini. Untuk jenis komponen
Untuk jenis komponen
|
| Diperlukan saat |
| Diperlukan saat |
| Diperlukan saat Objek |
| Diperlukan saat Objek |
| Diperlukan saat Objek |
Nama | Deskripsi |
---|---|
| Wajib untuk pesan teks. Teks pesan teks yang dapat berisi URL yang dimulai dengan http:// atau https:// dan formatnya. Lihat opsi format yang tersedia di sini. Jika Anda menyertakan URL dalam teks dan ingin menyertakan kotak pratinjau dalam pesan teks ( Panjang maksimal: 4096 karakter |
| Opsional. Khusus Cloud API. Diatur ke Jika Pengguna On-Premises API, gunakan |
Nama | Deskripsi |
---|---|
| Wajib. ID Pesan WhatsApp (wamid) dari pesan yang akan menampilkan tanggapan. Tanggapan tidak akan dikirim jika:
Jika ID adalah pesan yang telah dihapus, pesan tidak akan tersampaikan. |
| Wajib. Emoji akan muncul di pesan.
|
Lihat panduan berikut untuk informasi lengkap tentang cara menggunakan endpoint /messages
untuk mengirim pesan:
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "text",
"text": { // the text object
"preview_url": false,
"body": "MESSAGE_CONTENT"
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "reaction",
"reaction": {
"message_id": "wamid.HBgLM...",
"emoji": "\uD83D\uDE00"
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM-PHONE-NUMBER-ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE-NUMBER",
"type": "image",
"image": {
"id" : "MEDIA-OBJECT-ID"
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"to": "PHONE_NUMBER",
"type": "location",
"location": {
"longitude": LONG_NUMBER,
"latitude": LAT_NUMBER,
"name": LOCATION_NAME,
"address": LOCATION_ADDRESS
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"to": "PHONE_NUMBER",
"type": "contacts",
"contacts": [{
"addresses": [{
"street": "STREET",
"city": "CITY",
"state": "STATE",
"zip": "ZIP",
"country": "COUNTRY",
"country_code": "COUNTRY_CODE",
"type": "HOME"
},
{
"street": "STREET",
"city": "CITY",
"state": "STATE",
"zip": "ZIP",
"country": "COUNTRY",
"country_code": "COUNTRY_CODE",
"type": "WORK"
}],
"birthday": "YEAR_MONTH_DAY",
"emails": [{
"email": "EMAIL",
"type": "WORK"
},
{
"email": "EMAIL",
"type": "HOME"
}],
"name": {
"formatted_name": "NAME",
"first_name": "FIRST_NAME",
"last_name": "LAST_NAME",
"middle_name": "MIDDLE_NAME",
"suffix": "SUFFIX",
"prefix": "PREFIX"
},
"org": {
"company": "COMPANY",
"department": "DEPARTMENT",
"title": "TITLE"
},
"phones": [{
"phone": "PHONE_NUMBER",
"type": "HOME"
},
{
"phone": "PHONE_NUMBER",
"type": "WORK",
"wa_id": "PHONE_OR_WA_ID"
}],
"urls": [{
"url": "URL",
"type": "WORK"
},
{
"url": "URL",
"type": "HOME"
}]
}]
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
"type": "product",
"body": {
"text": "optional body text"
},
"footer": {
"text": "optional footer text"
},
"action": {
"catalog_id": "CATALOG_ID",
"product_retailer_id": "ID_TEST_ITEM_1"
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
"type": "product_list",
"header":{
"type": "text",
"text": "header-content"
},
"body": {
"text": "body-content"
},
"footer": {
"text": "footer-content"
},
"action": {
"catalog_id": "CATALOG_ID",
"sections": [
{
"title": "section-title",
"product_items": [
{ "product_retailer_id": "product-SKU-in-catalog" },
{ "product_retailer_id": "product-SKU-in-catalog" },
...
]
},
{
"title": "section-title",
"product_items": [
{ "product_retailer_id": "product-SKU-in-catalog" },
{ "product_retailer_id": "product-SKU-in-catalog" },
...
]
}
]
}
}
}
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive" : {
"type" : "catalog_message",
"body" : {
"text": "Thanks for your order! Tell us what address you’d like this order delivered to."
},
"action": {
"name": "catalog_message",
"parameters": {
"thumbnail_product_retailer_id": "<Product-retailer-id>"
}
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive" : {
"type": "flow",
"header": {
"type": "text",
"text": "Flow message header"
},
"body": {
"text": "Flow message body"
},
"footer": {
"text": "Flow message footer"
},
"action": {
"name": "flow",
"parameters": {
"flow_message_version": "3",
"flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s",
"flow_id": "<FLOW_ID>",
"flow_cta": "Book!",
"flow_action": "navigate",
"flow_action_payload": {
"screen": "<SCREEN_ID>",
"data": {
"user_name": "name",
"user_age": 25
}
}
}
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
"type": "list",
"header": {
"type": "text",
"text": "HEADER_TEXT"
},
"body": {
"text": "BODY_TEXT"
},
"footer": {
"text": "FOOTER_TEXT"
},
"action": {
"button": "BUTTON_TEXT",
"sections": [
{
"title": "SECTION_1_TITLE",
"rows": [
{
"id": "SECTION_1_ROW_1_ID",
"title": "SECTION_1_ROW_1_TITLE",
"description": "SECTION_1_ROW_1_DESCRIPTION"
},
{
"id": "SECTION_1_ROW_2_ID",
"title": "SECTION_1_ROW_2_TITLE",
"description": "SECTION_1_ROW_2_DESCRIPTION"
}
]
},
{
"title": "SECTION_2_TITLE",
"rows": [
{
"id": "SECTION_2_ROW_1_ID",
"title": "SECTION_2_ROW_1_TITLE",
"description": "SECTION_2_ROW_1_DESCRIPTION"
},
{
"id": "SECTION_2_ROW_2_ID",
"title": "SECTION_2_ROW_2_TITLE",
"description": "SECTION_2_ROW_2_DESCRIPTION"
}
]
}
]
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
"type": "button",
"body": {
"text": "BUTTON_TEXT"
},
"action": {
"buttons": [
{
"type": "reply",
"reply": {
"id": "UNIQUE_BUTTON_ID_1",
"title": "BUTTON_TITLE_1"
}
},
{
"type": "reply",
"reply": {
"id": "UNIQUE_BUTTON_ID_2",
"title": "BUTTON_TITLE_2"
}
}
]
}
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "template",
"template": {
"name": "TEMPLATE_NAME",
"language": {
"code": "LANGUAGE_AND_LOCALE_CODE"
},
"components": [
{
"type": "header",
"parameters": [
{
"type": "image",
"image": {
"link": "http(s)://URL"
}
}
]
},
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "TEXT_STRING"
},
{
"type": "currency",
"currency": {
"fallback_value": "VALUE",
"code": "USD",
"amount_1000": NUMBER
}
},
{
"type": "date_time",
"date_time": {
"fallback_value": "MONTH DAY, YEAR"
}
}
]
},
{
"type": "button",
"sub_type": "quick_reply",
"index": "0",
"parameters": [
{
"type": "payload",
"payload": "PAYLOAD"
}
]
},
{
"type": "button",
"sub_type": "quick_reply",
"index": "1",
"parameters": [
{
"type": "payload",
"payload": "PAYLOAD"
}
]
}
]
}
}'
curl -X POST \
'https://graph.facebook.com/v21.0
/FROM_PHONE_NUMBER/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"context": {
"message_id": "MESSAGE_ID"
},
"to": "PHONE_NUMBER",
"type": "text",
"text": {
"preview_url": false,
"body": "your-text-message-content"
}
}’
{ "messaging_product": "whatsapp", "contacts": [ { "input": "16505555555", "wa_id": "16505555555" } ], "messages": [ { "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA" } ] }
Applies to businesses in Brazil, Colombia, and Singapore, starting September 12, 2023. Applies to all businesses starting October 12, 2023.
Messages will have one of the following statuses which will be returned in each of the messages
objects
"message_status":"accepted"
: means the message was sent to the intended recipient"message_status":"held_for_quality_assessment"
: means the message send was delayed until quality can be validated and it will either be sent or dropped at this point{ "messaging_product": "whatsapp", "contacts": [ { "input": "16505555555", "wa_id": "16505555555" } ], "messages": [ { "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA", "message_status": "accepted", } ] }