We are making changes to the WhatsApp Business Platform pricing model. See Pricing Updates on the WhatsApp Business Platform.
Use o ponto de extremidade /PHONE_NUMBER_ID/messages
para enviar texto, mídia, contatos, localização e mensagens interativas, bem como modelos de mensagem para seus clientes. Saiba mais sobre as mensagens que podem ser enviadas.
Ponto de extremidade | Autenticação |
---|---|
(consulte Get Phone Number ID) | 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 |
As mensagens são identificadas por uma identificação única (WAMID). É possível rastrear o status da mensagem nos webhooks por meio do seu WAMID. Também é possível marcar uma mensagem recebida como lida por meio do ponto de extremidade das mensagens. Essa WAMID pode ter um tamanho máximo de até 128 caracteres.
Com a API de Nuvem, não há uma forma de verificar de forma explícita se um número de telefone tem um ID do WhatsApp. Para enviar uma mensagem usando essa API, envie-a diretamente para o número de telefone do cliente, depois que você obter aceitação para o WhatsApp. Consulte Reference, Messages para ver exemplos.
Para enviar uma mensagem, primeiro é preciso montar um objeto de mensagem com o conteúdo que deseja enviar. Estes são os parâmetros usados em um objeto message
:
Nome | Descrição (clique na seta da coluna à esquerda para ver as opções compatíveis) |
---|---|
| Obrigatório quando Um objeto |
| Opcional. Uma string aleatória, útil para rastreamento. Por exemplo, é possível passar a identificação do modelo de mensagem neste campo para rastrear a jornada do seu cliente a partir da primeira mensagem enviada. Depois, será possível rastrear o ROI de diferentes tipos de modelos de mensagens para determinar o mais eficaz. Qualquer app inscrito no campo de webhook A API de Nuvem não processa esse campo; ela apenas o retorna como parte dos webhooks de mensagem enviada/entregue/lida. Máximo de 512 caracteres. Somente a API de Nuvem. |
| Obrigatório quando Um objeto |
| Obrigatório se responder para qualquer mensagem na conversa. Um objeto que contém a identificação de uma mensagem anterior que você está respondendo. Por exemplo:
Somente a API de Nuvem. |
| Obrigatório quando Um objeto |
| Contém um objeto |
| Obrigatório quando Um objeto |
| Obrigatório quando Um objeto |
| Obrigatório quando Um objeto |
| Obrigatório Serviço de mensagens usado para a solicitação. Use Somente a API de Nuvem. |
| Obrigatório se Permite visualização de URLs em mensagens de texto — consulte Sending URLs in Text Messages. Este campo é opcional se uma URL não for incluída na mensagem. Valores: Somente API Local. Os usuários da API de Nuvem podem usar a mesma funcionalidade com o campo |
| Opcional. Atualmente, somente é possível enviar mensagens para pessoas. Defina-o como Padrão: |
| O status de uma mensagem. Use este campo para marcar uma mensagem como
|
| Obrigatório quando Um objeto API de Nuvem: suporte a figurinhas enviadas estáticas e animadas de terceiros, além de todos os tipos de figurinhas recebidas. Uma figurinha estática precisa ter 512x512 pixels e não ultrapassar 100 KB. Uma figurinha animada deve ter 512x512 pixels e não ultrapassar 500 KB. API Local: somente figurinhas enviadas estáticas de terceiros têm suporte, além de todos os tipos de figurinhas recebidas. Uma figurinha estática precisa ter 512x512 pixels e não ultrapassar 100 KB. Figurinhas animadas não são aceitas. |
| Obrigatório quando Um objeto |
| Obrigatório para mensagens de texto. Um objeto |
| Obrigatório. O número de telefone ou a identificação do WhatsApp do cliente para quem você deseja enviar uma mensagem. Consulte Phone Number Formats. Se necessário, os usuários da API Local podem obter este número chamando o ponto de extremidade |
| Opcional. O tipo de mensagem que você deseja enviar. Se for omitido, o padrão será |
Os seguintes objetos estão aninhados dentro do objeto da mensagem:
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
|
Nome | Descrição |
---|---|
| Obrigatório. A ação desejada do usuário após a leitura da mensagem. |
| Opcional para o tipo Um objeto com o corpo da mensagem. O objeto
|
| Opcional. Um objeto com o rodapé da mensagem. O objeto
|
| Obrigatório para o tipo O conteúdo do cabeçalho exibido na parte superior da mensagem. Não será possível definir um cabeçalho caso seu objeto interativo seja do tipo |
| Obrigatório. O tipo de mensagem interativa que você quer enviar. Valores compatíveis:
|
Os seguintes objetos estão aninhados dentro do objeto interactive
:
Nome | Descrição |
---|---|
| Obrigatório para mensagens de lista. O conteúdo do botão. A string não pode estar vazia e deve ser única na mensagem. É compatível com emojis, mas não com Markdown. Tamanho máximo: 20 caracteres. |
| Obrigatório para botões de resposta. Um objeto de botão pode conter os seguintes parâmetros:
Você pode ter até 3 botões. Não deixe espaços no início ou no fim ao definir a identificação. |
| Obrigatório para mensagens de produto único e multiproduto. Identificador único do catálogo do Facebook vinculado à sua conta do WhatsApp Business. Esta identificação pode ser recuperada por meio do Gerenciador de Comércio da Meta. |
| Obrigatório para mensagens de produto único e multiproduto. Identificador único do produto em um catálogo. Para obter esta identificação, acesse o Gerenciador de Comércio da Meta e selecione sua conta empresarial da Meta. Será exibida uma lista de lojas associadas à sua conta. Clique na loja que deseja usar. No painel esquerdo, clique em Catálogo > Itens e busque o item que deseja mencionar. A identificação fica abaixo do nome do item. |
| Obrigatório para mensagens de lista e multiproduto. Matriz de objetos |
| Opcional para mensagens de fluxos. O modo atual do fluxo, Padrão: |
| Obrigatório para mensagens de fluxos. Deve ser |
| Obrigatório para mensagens de fluxos. Um token que é gerado pela empresa para servir de identificador. |
| Obrigatório para mensagens de fluxos. Identificador único do fluxo fornecido pelo WhatsApp. |
| Obrigatório para mensagens de fluxos. Texto no botão CTA, por exemplo. "Inscreva-se". Comprimento máximo: 20 caracteres (sem emoji). |
| Opcional para mensagens de fluxos.
Padrão: |
| Opcional para mensagens de fluxos. Obrigatório somente se String Objeto |
Nome | Descrição |
---|---|
| Obrigatório caso Contém o objeto media para este documento. |
| Obrigatório caso Contém o objeto media para esta imagem. |
| Obrigatório caso O texto do cabeçalho. A formatação é compatível com emojis, mas não com Markdown. Tamanho máximo: 60 caracteres. |
| Opcional. O texto do cabeçalho. A formatação é compatível com emojis, mas não com Markdown. Tamanho máximo: 60 caracteres. |
| Obrigatório. O tipo de cabeçalho que você quer usar. Valores compatíveis:
|
| Obrigatório caso Contém o objeto media para este vídeo. |
Nome | Descrição |
---|---|
| Obrigatório para mensagens multiproduto. Matriz de objetos Cada objeto
|
| Obrigatório para mensagens de lista. Contém uma lista de linhas. É possível ter um total de 10 linhas nas seções. Cada linha deve ter um título (tamanho máximo: 24 caracteres) e uma identificação ID (tamanho máximo: 200 caracteres). É possível adicionar uma descrição (tamanho máximo: 72 caracteres), mas é opcional. Exemplo: "rows": [ { "id":"unique-row-identifier-here", "title": "row-title-content-here", "description": "row-description-content-here", } ] |
| Obrigatório se a mensagem tiver mais de uma seção. O título da seção. Tamanho máximo: 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. |
Consulte Get Media ID para obter informações sobre como obter a identificação do seu objeto media. Para obter informações sobre tipos de mídia compatíveis para a API de Nuvem, consulte Supported Media Type.
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 |
Nome | Descrição |
---|---|
| Obrigatório. Namespace do modelo. Desde a |
| Obrigatório. Nome do modelo. |
| Obrigatório. Especifica o idioma no qual o modelo pode ser renderizado. Apenas a política de idioma |
| Opcional. Matriz contendo os parâmetros da mensagem. |
Os seguintes objetos estão aninhados dentro do objeto template
:
Nome | Descrição (clique na seta da coluna da esquerda para ver as opções compatíveis) |
---|---|
| Obrigatório. Indica o tipo de parâmetro do botão. |
| Obrigatório para botões Carga definida pelo desenvolvedor que será retornada junto com o texto de exibição no botão quando houver um clique. Para ver um exemplo, consulte Callback from a Quick Reply Button Click. |
| Obrigatório para botões de URL. Sufixo fornecido pelo desenvolvedor que é anexado à URL de prefixo predefinida no modelo. |
Nome | Descrição |
---|---|
| Obrigatório. Descreve o tipo |
| Opcional. Matriz que inclui o conteúdo da mensagem. |
Nome | Descrição |
---|---|
| Obrigatório. Texto padrão se a localização falhar. |
| Obrigatório. Código da moeda conforme a norma |
| Obrigatório. Valor multiplicado por 1.000. |
Nome | Descrição |
---|---|
| Obrigatório. Texto padrão. Para a API de Nuvem, usamos sempre o valor de fallback e não tentamos localizar usando outros campos opcionais. |
Nome | Descrição |
---|---|
| Obrigatório. Descreve o tipo de parâmetro. Valores compatíveis:
Para modelos baseados em texto, os únicos tipos de parâmetros compatíveis são |
| Obrigatório quando O texto da mensagem. O limite de caracteres varia com base no seguinte tipo de componente incluído. Para o tipo de componente
Para o tipo de componente
|
| Obrigatório quando Um objeto |
| Obrigatório quando Um objeto |
| Obrigatório quando Um objeto |
| Obrigatório quando Um objeto |
| Obrigatório quando Um objeto |
Nome | Descrição |
---|---|
| Obrigatório para mensagens de texto. O texto da mensagem de texto que pode conter URLs que começam com http:// ou https:// e formatação. Consulte as opções de formatação disponíveis aqui. Se incluir URLs no texto e quiser acrescentar uma caixa de prévia nas mensagens de texto ( Tamanho máximo: 4096 caracteres |
| Opcional. Apenas API de Nuvem. Defina para Se Usuários da API Local devem utilizar |
Nome | Descrição |
---|---|
| Obrigatório. A identificação de mensagem do WhatsApp (wamid) da mensagem na qual a reação deve aparecer. A reação não será enviada se:
Se a identificação for de uma mensagem que foi apagada, a mensagem não será entregue. |
| Obrigatório. Emoji que deverá aparecer na mensagem.
|
Consulte os seguintes guias para obter informações completas sobre como utilizar o ponto de extremidade /messages
para enviar mensagens:
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", } ] }