Usa el extremo /PHONE_NUMBER_ID/messages
para enviar texto, contenido multimedia, contactos, ubicaciones y mensajes interactivos, así como plantillas de mensajes, a tus clientes. Obtén más información sobre los mensajes que puedes enviar.
Extremo | 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 |
Los mensajes se identifican con un identificador único (WAMID). Puedes hacer un seguimiento del estado de los mensajes en los webhooks mediante su WAMID. También puedes marcar un mensaje entrante como leído mediante el extremo de mensajes. Este WAMID puede tener una longitud máxima de hasta 128 caracteres.
Con la API de la nube, ya no es posible comprobar de forma explícita si un número de teléfono tiene un identificador de WhatsApp. Para enviar un mensaje mediante la API de la nube, envíalo directamente al número de teléfono del cliente una vez que haya otorgado su consentimiento. Consulta Referencia, Mensajes para obtener ejemplos.
Para enviar un mensaje, primero debes montar un objeto de mensaje con el contenido que quieras enviar. Estos son los parámetros que se utilizan en un objeto message
:
Nombre | Descripción (Haz clic en la flecha de la columna de la izquierda para consultar las opciones admitidas). |
---|---|
| Obligatorio cuando Un objeto |
| Opcional. Cadena aleatoria útil para hacer un seguimiento. Por ejemplo, podrías pasar el identificador de la plantilla de mensaje en este campo para hacer un seguimiento del recorrido del cliente desde el primer mensaje que envíes. Después, podrías hacer un seguimiento del ROI de diferentes tipos de plantillas de mensajes para determinar el más efectivo. Las aplicaciones suscritas al campo del webhook La API de nube no procesa este campo, solo lo devuelve como parte de los webhooks de mensaje enviado, entregado o leído. Máximo 512 caracteres. Solo en la API de nube. |
| Obligatorio cuando 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:
Solo en la API de nube. |
| Obligatorio cuando Un objeto |
| Contiene un objeto Solo en la API local. |
| Obligatorio cuando Un objeto |
| Obligatorio cuando Un objeto |
| Obligatorio cuando Un objeto |
| Obligatorio. Servicio de mensajes que se usa para la solicitud. Usa Solo en la API de nube. |
| Obligatorio si Permite obtener la vista previa de las URL de mensajes de texto. Consulta Enviar direcciones URL en los mensajes de texto. Este campo es opcional si no incluye una URL en el mensaje. Valores: Solo en la API local. Los usuarios de la API de nube pueden utilizar la misma funcionalidad con el campo |
| Opcional. Actualmente solo puedes enviar mensajes a personas. Establécelo como Valor predeterminado: |
| El estado de un mensaje. Puedes utilizar este campo para marcar un mensaje como
|
| Obligatorio cuando Un objeto API de nube: se admiten los stickers de salida de terceros estáticos y animados, así como todos los tipos de stickers de entrada. Un sticker estático debe ser de 512 × 512 píxeles y no puede superar los 100 KB. Un sticker animado debe ser de 512 × 512 píxeles y no puede superar los 500 KB. API local: solo se admiten los stickers de salida de terceros estáticos, así como todos los tipos de stickers de entrada. Un sticker estático debe ser de 512 × 512 píxeles y no puede superar los 100 KB. Los stickers animados no se admiten. |
| Obligatorio cuando Un objeto |
| Obligatorio para mensajes de texto. Un objeto |
| Obligatorio. Identificador de WhatsApp o número de teléfono del cliente al que quieres enviar un mensaje. Consulta Formatos de número de teléfono. Si es necesario, los usuarios de la API local pueden obtener este número con una llamada al extremo |
| Opcional. El tipo de mensaje que quieres enviar. Si se omite, se establece en |
Los siguientes objetos están anidados en el objeto de mensaje:
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. Acción que quieres que haga el usuario después de leer el mensaje. |
| Opcional para el tipo Objeto con el cuerpo del mensaje. El objeto Cadena de |
| Opcional. Objeto con el pie de página del mensaje. El objeto Cadena de |
| Obligatorio para el tipo Contenido de encabezado que se muestra en la parte superior de un mensaje. No puedes establecer un encabezado si el objeto interactivo es de tipo |
| Obligatorio. El tipo de mensaje interactivo que quieres enviar. Valores admitidos:
|
Los siguientes objetos están anidados en el objeto interactive
:
Nombre | Descripción |
---|---|
| Obligatorio para los mensajes de lista. Contenido del botón. No puede ser una cadena vacía y debe ser único en el mensaje. Se admiten los emoticonos, pero no el marcado. Longitud máxima: 20 caracteres. |
| Obligatorio para los botones de respuesta. Un objeto de botón puede contener los parámetros siguientes:
Puedes tener hasta tres botones. No puedes tener espacios iniciales ni finales al establecer el identificador. |
| Obligatorio para los mensajes sobre un solo producto y los mensajes sobre varios productos. Identificador único del catálogo de Facebook vinculado a tu cuenta de WhatsApp Business. Este identificador se puede recuperar mediante Meta Commerce Manager. |
| Obligatorio para los mensajes sobre un solo producto y los mensajes sobre varios productos. Identificador único del producto en un catálogo. Para obtener este identificador, accede a Meta Commerce Manager y selecciona tu cuenta de Meta Business. Verás una lista de las tiendas conectadas a tu cuenta. Haz clic en la tienda que quieras usar. En el panel lateral de la izquierda, haz clic en Catálogo > Artículos y busca el artículo que quieras mencionar. El identificador de dicho artículo se muestra debajo del nombre. |
| Obligatorio para los mensajes de lista y los mensajes sobre varios productos. Matriz de objetos |
| Opcional para los mensajes de Flows. Modo actual del Flow: El valor predeterminado es |
| Obligatorio para los mensajes de Flows. Debe ser |
| Obligatorio para los mensajes de Flows. Identificador que genera la empresa para servir de identificador. |
| Obligatorio para los mensajes de Flows. Identificador único del Flow que proporciona WhatsApp. |
| Obligatorio para los mensajes de Flows. Texto del botón de llamada a la acción (por ejemplo, “Registro”). Longitud máxima: 20 caracteres (sin emoticonos). |
| Opcional para los mensajes de Flows.
El valor predeterminado es |
| Opcional para los mensajes de Flows. Obligatorio solo si el valor de Cadena de Objeto |
Nombre | Descripción |
---|---|
| Obligatorio si Contiene el objeto multimedia para este documento. |
| Obligatorio si Contiene el objeto multimedia para esta imagen. |
| Obligatorio si Texto del encabezado. El formato admite los emoticonos, pero no el marcado. Longitud máxima: 60 caracteres. |
| Obligatorio. Tipo de encabezado que te gustaría utilizar. Valores admitidos:
|
| Obligatorio si Contiene el objeto multimedia para este vídeo. |
Nombre | Descripción |
---|---|
| Obligatorio para los mensajes sobre varios productos. Matriz de objetos Cada objeto
|
| Obligatorio para los mensajes de lista. Contiene una lista de filas. Puedes tener un total de diez filas en las secciones. Cada fila debe tener un título (longitud máxima: 24 caracteres) y un identificador (longitud máxima: 200 caracteres). Puedes añadir 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 obtener información sobre cómo obtener el identificador del objeto multimedia. Para obtener información sobre los tipos de contenido multimedia admitidos para la API de 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 |
Los precios basados en conversaciones han cambiado. Consulta Precios para obtener información sobre el funcionamiento del nuevo modelo de precios basados en conversaciones.
Además, la visibilidad de metric_types
ha cambiado el 1 de julio de 2023. Consulta la tabla de análisis de conversaciones para obtener más información.
Name | Description |
---|---|
| Required. Name of the template. |
| Required. Contains a The
|
| Optional. Array of |
| Optional. Only used for On-Premises API. Namespace of the template. |
Los siguientes objetos están anidados en el objeto template
:
Nombre | Descripción (Haz clic en la flecha de la columna de la izquierda para consultar las opciones admitidas). |
---|---|
| Obligatorio. Indica el tipo de parámetro para el botón. |
| Obligatorio para los botones Carga útil definida por el desarrollador que se devuelve cuando se hace clic en el botón, además del texto para mostrar del botón. Consulta un ejemplo en Devolución de llamada con un clic del botón de respuesta rápida. |
| Obligatorio para botones de URL. Sufijo proporcionado por el desarrollador que se añade a la URL del prefijo predefinida en la plantilla. |
Name | Description (Click the arrow in the left column for supported options.) |
---|---|
| Required. Describes the Example of a "components": [{ "type": "body", "parameters": [{ "type": "text", "text": "name" }, { "type": "text", "text": "Hi there" }] }] |
| Required when Type of button to create. |
| Required when Array of For components of type=button, see the |
| Required when Position index of the button. You can have up to 10 buttons using index values of 0 to 9. |
Nombre | Descripción |
---|---|
| Obligatorio. Texto predeterminado si se produce un error de localización. |
| Obligatorio. Código de divisa según se define en la |
| Obligatorio. Importe multiplicado por 1000. |
Nombre | Descripción |
---|---|
| Obligatorio. Texto predeterminado. En el caso de la API de nube, siempre usamos el valor alternativo y no intentamos localizar con otros campos opcionales. |
Nombre | Descripción |
---|---|
| Obligatorio. Describe el tipo de parámetro. Valores admitidos:
En el caso de las plantillas basadas en texto, los únicos tipos de parámetros admitidos son |
| Obligatorio cuando Texto del mensaje. El límite de caracteres varía en función del siguiente tipo de componente incluido. Para el tipo de componente
Para el tipo de componente
|
| Obligatorio cuando |
| Obligatorio cuando |
| Obligatorio cuando Objeto |
| Obligatorio cuando Objeto |
| Obligatorio cuando Objeto |
Nombre | Descripción |
---|---|
| Obligatorio para los mensajes de texto. Texto del mensaje de texto que puede contener URL que comienzan por http:// o https:// y formato. Consulta las opciones de formato disponibles aquí. Si incluyes URL en el texto y quieres incluir un cuadro de vista previa en los mensajes de texto ( Longitud máxima: 4096 caracteres |
| Opcional. Solo en la API de nube. Se establece en Si se omite Los usuarios de la API local deben usar |
Nombre | Descripción |
---|---|
| Obligatorio. Identificador del mensaje de WhatsApp (wamid) en el que debería aparecer la reacción. La reacción no se enviará si:
Si el identificador pertenece a un mensaje que se ha eliminado, el mensaje no se entregará. |
| Obligatorio. Emoticono que aparecerá en el mensaje.
|
Consulta las siguientes guías para obtener información completa sobre cómo usar el extremo /messages
para enviar mensajes:
curl -X POST \
'https://graph.facebook.com/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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/v19.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"
}
}
]
}
}
}'
Los precios basados en conversaciones han cambiado. Consulta Precios para obtener información sobre el funcionamiento del nuevo modelo de precios basados en conversaciones.
Además, la visibilidad de metric_types
ha cambiado el 1 de julio de 2023. Consulta la tabla de análisis de conversaciones para obtener más información.
curl -X POST \
'https://graph.facebook.com/v19.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/v19.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", } ] }