We are making changes to the WhatsApp Business Platform pricing model. See Pricing Updates on the WhatsApp Business Platform.
Usa el punto final /PHONE_NUMBER_ID/messages
para enviar texto, contenido multimedia, contactos, ubicaciones, mensajes interactivos y plantillas de mensajes a tus clientes. Más información sobre los mensajes que puedes enviar.
Punto de conexión | Autenticación |
---|---|
| 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 |
Un identificador único (WAMID) identifica los mensajes. Con este, puedes hacer un seguimiento del estado de los mensajes en los webhooks. También puedes marcar un mensaje entrante como leído a través del punto final de mensajes. Este WAMID puede tener un máximo de 128 caracteres.
Con la API Cloud, ya no es posible verificar de manera explícita si un número de teléfono tiene un identificador de WhatsApp. Para enviar un mensaje a un cliente con la API Cloud, envíalo directamente a su número de teléfono después de que se haya suscrito. Consulta Referencia, Mensajes para ver ejemplos.
Para enviar un mensaje, primero debes crear un objeto "Message" con el contenido que deseas enviar. Estos son los parámetros que se utilizan en un objeto message
:
Nombre | Descripción (haz clic en la flecha de la columna izquierda para ver las opciones compatibles) |
---|---|
| Obligatorio si Un objeto |
| Opcional. Una cadena aleatoria, útil para hacer seguimiento. Por ejemplo, podrías pasar el identificador del modelo de mensaje en este campo para hacer seguimiento del recorrido del cliente a partir del primer mensaje que envíes. Puedes seguir el ROI de diferentes tipos de plantillas de mensaje para determinar la más efectiva. Las apps suscriptas al campo del webhook La API de la nube no procesa este campo; solo lo devuelve como parte de los webhooks de mensajes enviados/entregados/leídos. Máximo de 512 caracteres. API de nube únicamente. |
| Obligatorio si Un objeto |
| Obligatorio si se responde a algún mensaje de la conversación. Un objeto que contiene el identificador de un mensaje anterior al que respondes. Por ejemplo:
API de nube únicamente. |
| Obligatorio si Un objeto |
| Contiene un objeto API de instalaciones locales únicamente. |
| Obligatorio si Un objeto |
| Obligatorio si Un objeto |
| Obligatorio si Un objeto |
| Obligatorio Servicio de mensajes utilizado para la solicitud. Usa API de nube únicamente. |
| Obligatorio si Permite previsualizar URL en mensajes de texto. Consulta Enviar URL en mensajes de texto. Este campo es opcional si no incluyes una URL en tu mensaje. Valores: API de Instalaciones locales únicamente. Los usuarios de la API de la nube pueden utilizar la misma funcionalidad con el campo |
| Opcional. En estos momentos, solo es posible enviar mensajes a individuos. Se debe configurar como Predeterminado: |
| El estado de un mensaje. Puedes usar este campo para marcar un mensaje como
|
| Obligatorio si Un objeto API de la nube: se admiten stickers de salida estáticos y animados de terceros, además de todos los tipos de stickers de entrada. Un sticker estático debe contener 512 x 512 píxeles y no puede exceder los 100 KB. Un sticker animado debe contener 512 x 512 píxeles y no puede exceder los 500 KB. API de instalaciones locales: solo se admiten stickers de salida estáticos de terceros, además de todos los tipos de stickers de entrada. Un sticker estático debe contener 512 x 512 píxeles y no puede exceder los 100 KB. Los stickers animados no son compatibles. |
| Obligatorio si Un objeto |
| Obligatorio para mensajes de texto. Un objeto |
| Obligatorio. Número de teléfono de WhatsApp o identificador del cliente al que deseas enviar un mensaje. Consulta formatos de números de teléfono. Si es necesario, los usuarios de la API de instalaciones locales pueden obtener este número realizando una llamada al punto de conexión |
| Opcional. El tipo de mensaje que deseas enviar. Si se omite, se establece de forma predeterminada como |
Los siguientes objetos se anidan dentro del objeto "Message":
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
|
Nombre | Descripción |
---|---|
| Obligatorio. La acción que deseas que realice el usuario después de leer el mensaje. |
| Opcional para el tipo Un objeto con el cuerpo del mensaje. El objeto
|
| Opcional. Un objeto con el pie de página del mensaje. El objeto
|
| Obligatorio para el tipo Contenido de encabezado que se muestra en la parte de arriba del mensaje. No puedes configurar un encabezado si tu objeto "Interactive" es del tipo |
| Obligatorio. El tipo de mensaje interactivo que te gustaría enviar. Valores admitidos:
|
Los siguientes objetos se anidan dentro del objeto interactive
:
Nombre | Descripción |
---|---|
| Se requiere para los mensajes de lista. Contenido del botón. No puede ser una cadena vacía y debe ser único dentro del mensaje. Se ofrece compatibilidad con emojis, no así con Markdown . Longitud máxima: 20 caracteres. |
| Obligatorio en los botones de respuesta. Un objeto "Button" puede contener los siguientes parámetros:
Puedes tener hasta 3 botones. No puede haber espacios al comienzo ni al final del identificador. |
| Obligatorio en el caso de los mensajes de productos individuales y múltiples. Identificador único del catálogo de Facebook vinculado a la cuenta de WhatsApp Business. Este identificador se puede recuperar a través del administrador de ventas de Meta. |
| Obligatorio en el caso de los mensajes de productos individuales y múltiples. Identificador único del producto en un catálogo. Para obtener este identificador, ve al administrador de ventas de Meta y selecciona tu cuenta comercial de Meta. Verás una lista de las tiendas conectadas a tu cuenta. Haz clic en la tienda que deseas usar. En el panel izquierdo, haz clic en Catálogo > Artículos y busca el artículo que deseas mencionar. El identificador de ese artículo se muestra en el nombre del mismo. |
| Obligatorio en el caso de mensajes de listas y mensajes de productos múltiples. Matriz de objetos |
| Opcional en el caso de los mensajes de procesos. El modo actual del proceso, ya sea Predeterminado: |
| Obligatorio en el caso de los mensajes de procesos. Debe ser |
| Obligatorio en el caso de los mensajes de procesos. Un token que genera el negocio y sirve como identificador. |
| Obligatorio en el caso de los mensajes de procesos. Identificador único del proceso proporcionado por WhatsApp. |
| Obligatorio en el caso de los mensajes de procesos. Texto del botón de llamada a la acción, por ejemplo. "Registrarse". Longitud máxima: 20 caracteres (no se admiten emojis). |
| Opcional en el caso de los mensajes de procesos.
Valor predeterminado: |
| Opcional en el caso de los mensajes de procesos. Obligatorio solo si
|
Nombre | Descripción |
---|---|
| Es obligatorio si Contiene el objeto "Media" de este documento. |
| Se requiere cuando Contiene el objeto "Media" de esta imagen. |
| Es obligatorio si Texto del encabezado. El formato admite emojis, pero no Markdown. Longitud máxima: 60 caracteres. |
| Opcional. Texto del encabezado. El formato admite emojis, pero no Markdown. Longitud máxima: 60 caracteres. |
| Obligatorio. El tipo de encabezado que deseas que se utilice. Valores admitidos:
|
| Es obligatorio cuando Contiene el objeto "Media" de este vídeo. |
Nombre | Descripción |
---|---|
| Es obligatorio en el caso de los mensajes de productos múltiples. Matriz de objetos Cada objeto
|
| Se requiere para los mensajes de lista. Contiene una lista de filas. Puedes tener un total de 10 filas en tus secciones. Cada fila debe tener un título (longitud máxima: 24 caracteres) y un identificador (longitud máxima: 200 caracteres). Puedes agregar una descripción (longitud máxima: 72 caracteres), pero es opcional. Ejemplo: "rows": [ { "id":"unique-row-identifier-here", "title": "row-title-content-here", "description": "row-description-content-here", } ] |
| Obligatorio si el mensaje tiene más de una sección. Título de la sección. Longitud máxima: 24 caracteres. |
Name | Description |
---|---|
| Required. Location latitude in decimal degrees. |
| Required. Location longitude in decimal degrees. |
| Required. Name of the location. |
| Required. Address of the location. |
Consulta Obtener el identificador del contenido multimedia para descubrir cómo puedes obtener el identificador de tu objeto "Media". Para obtener información sobre los tipos de contenido multimedia admitidos en la API de la nube, consulta Tipos de contenido multimedia admitidos.
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 |
Nombre | Descripción |
---|---|
| Obligatorio. Espacio de nombres de la plantilla. A partir de la versión |
| Obligatorio. Nombre de la plantilla. |
| Obligatorio. Especifica el lenguaje en que se puede representar la plantilla. Solo funciona la política de lenguaje |
| Opcional. Matriz que incluye los parámetros del mensaje. |
Los siguientes objetos se anidan dentro del objeto template
:
Nombre | Descripción (haz clic en la flecha de la columna izquierda para ver las opciones compatibles) |
---|---|
| Obligatorio. Indica el tipo de parámetro del botón. |
| Obligatorio en el caso de los botones Carga útil definida por el desarrollador que se devolverá cuando se haga clic en el botón junto con el texto en pantalla del botón. Para ver un ejemplo, consulta Devolución de llamada de un clic en el botón de respuesta rápida. |
| Obligatorio en el caso de los botones de URL. Sufijo proporcionado por el desarrollador que se agrega a la URL predefinida del prefijo en la plantilla. |
Nombre | Descripción |
---|---|
| Obligatorio. Describe el tipo |
| Opcional. Matriz que incluye el contenido del mensaje. |
Nombre | Descripción |
---|---|
| Obligatorio. El texto predeterminado si no funciona la localización. |
| Obligatorio. El código de la divisa, como se define en la norma |
| Obligatorio. Importe multiplicado por 1.000. |
Nombre | Descripción |
---|---|
| Obligatorio. Texto predeterminado. En la API de la nube, siempre usamos el valor alternativo y no intentamos localizar usando otros campos opcionales. |
Nombre | Descripción |
---|---|
| Obligatorio. Describe el tipo de parámetro. Valores admitidos:
En las plantillas basadas en texto, los únicos tipos de parámetros admitidos son |
| Obligatorio si El texto del mensaje. El límite de caracteres varía en función del tipo del siguiente componente incluido. En el caso del tipo de componente
En el caso del tipo de componente
|
| Obligatorio si Un objeto |
| Obligatorio si Un objeto |
| Obligatorio si Un objeto |
| Obligatorio si Un objeto |
| Obligatorio si Un objeto |
Nombre | Descripción |
---|---|
| Obligatorio en el caso de los mensajes de texto. El texto del mensaje de texto que puede contener URL que comienzan con http:// o https:// y formato. Consulta aquí las opciones de formatos disponibles. Si incluyes URL en tu texto y quieres incluir un cuadro de vista previa en los mensajes de texto ( Longitud máxima: 4.096 caracteres |
| Opcional. Solo en el caso de la API de la nube. Configúralo en Si Los usuarios de la API de instalaciones locales deben utilizar |
Nombre | Descripción |
---|---|
| Obligatoria. El identificador de mensajes de WhatsApp (wamid) del mensaje en el que debería aparecer la reacción. La reacción no se enviará en los siguientes casos:
Si el identificador es de un mensaje que se eliminó, este no se entregará. |
| Obligatoria. Emoji que aparecerá en el mensaje.
|
Consulta las siguientes guías para obtener información completa sobre cómo usar el punto final /messages
para enviar mensajes:
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", } ] }