API Official do WhatsApp (Meta)

O que é a API Oficial do WhatsApp Business?

API Oficial do WhatsApp Business é uma solução robusta desenvolvida pela Meta (antigo Facebook) para permitir que empresas se comuniquem de forma automatizada, segura e escalável com seus clientes por meio do WhatsApp. Ela é voltada para empresas médias e grandes que precisam de integração com sistemas internos (CRM, ERP, Chatbots, etc.).

Essa API não possui interface gráfica própria: sua utilização é feita exclusivamente através de chamadas HTTP e integração via Webhooks. Para facilitar sua adoção, foram criados módulos práticos que ajudam a entender e aplicar os principais recursos da API.

Veja abaixo a explicação técnica para alguns endpoints.







API Oficial Envio de Mensagem Simples


API: Oficial

Envia uma mensagem de texto pela api oficial, estando dentro da janela de 24h aberta.
Verifique aqui os Pré-Requisitos para utilizar APIs

Visão Geral

Esta API permite o envio de mensagens oficiais para um número de telefone utilizando o canal homologado (conta verificada). Este recurso é essencial para garantir entregabilidade e conformidade com as políticas de mensageria (como no WhatsApp Business API).




📂 Código PHP


<?php


$curl = curl_init();


curl_setopt_array($curl, array(

  CURLOPT_URL => 'https://api.gpconnect.com.br/api/messages/sendOfficialData',

  CURLOPT_RETURNTRANSFER => true,

  CURLOPT_ENCODING => '',

  CURLOPT_MAXREDIRS => 10,

  CURLOPT_TIMEOUT => 0,

  CURLOPT_FOLLOWLOCATION => true,

  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

  CURLOPT_CUSTOMREQUEST => 'POST',

  CURLOPT_POSTFIELDS =>'{

    "number": "5511999999999",

    "text": "Olá, tudo bem?"

  }',

  CURLOPT_HTTPHEADER => array(

    'Content-Type: application/json',

    'Authorization: Bearer {seutokenaqui}' //Token cadastrado na conexão

  ),

));


$response = curl_exec($curl);


curl_close($curl);

echo $response;





📘 Detalhamento Técnico

1. Endpoint

  • https://api.gpconnect.com.br/api/messages/sendOfficialData




2. Método HTTP

  • POST




3. Cabeçalhos (Headers)

Header

Valor

Content-Type

application/json

Authorization

Bearer {seutokenaqui}




4. Corpo da Requisição (JSON)

json

CopiarEditar

{

  "number": "5511999999999",

  "text": "Olá, tudo bem?"

}


Descrição dos Campos

Campo

Tipo

Obrigatório

Descrição

number

string

Sim

Número do destinatário com DDI + DDD (ex: 5511999999999)

text

string

Sim

Conteúdo da mensagem oficial


5. Exemplo de Resposta (JSON)

{

    "response": {

        "from": "9aa5ed74-6d9c-4292-b44e-7f8ee2bfa022",

        "to": "5511989091838",

        "contents": "{\"type\":\"text\",\"text\":\"Teste\"}",

        "id": "ab019db2-4172-4eea-910c-d88fdd64f386",

        "direction": "OUT"

    }

}






📌API Oficial Template sem variável

API: Oficial

Envia uma mensagem template SEM variável pela api oficial, estando previamente aprovada.


Visão Geral

Este endpoint permite o envio de mensagens oficiais padronizadas (chamadas de "templates") para números de WhatsApp através de um canal verificado. Ele é ideal para notificações automáticas, como confirmações, alertas ou comunicados com conteúdo previamente aprovado pelo provedor.

📂 Código PHP


<?php


$curl = curl_init();


curl_setopt_array($curl, array(

  CURLOPT_URL => 'https://api.gpconnect.com.br/api/messages/sendOfficial',

  CURLOPT_RETURNTRANSFER => true,

  CURLOPT_ENCODING => '',

  CURLOPT_MAXREDIRS => 10,

  CURLOPT_TIMEOUT => 0,

  CURLOPT_FOLLOWLOCATION => true,

  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

  CURLOPT_CUSTOMREQUEST => 'POST',

  CURLOPT_POSTFIELDS =>'{

    "number": "5511999999999",

    "name": "vars_001", // nome da template

    "language": "pt_BR"

  }',

  CURLOPT_HTTPHEADER => array(

    'Content-Type: application/json',

    'Authorization: Bearer {seutokenaqui}' //Token cadastrado na conexão

  ),

));


$response = curl_exec($curl);


curl_close($curl);

echo $response;





📘 Detalhamento Técnico

1. Endpoint

  • https://api.gpconnect.com.br/api/messages/sendOfficial




2. Método HTTP

  • POST




3. Cabeçalhos (Headers)

Header

Valor

Content-Type

application/json

Authorization

Bearer {seutokenaqui}




4Corpo da Requisição (JSON)


{

  "number": "5511999999999",

  "name": "vars_001",

  "language": "pt_BR"

}


Descrição dos Campos

Campo

Tipo

Obrigatório

Descrição

number

string

Sim

Número do destinatário com DDI + DDD (ex: 5511999999999)

name

string

Sim

Nome do template homologado (precisa existir na plataforma)

language

string

Sim

Idioma do template (ex: pt_BRen_USes_MX)






API Oficial Template com variável

API: Oficial

Envia uma mensagem template COM variável pela api oficial, estando previamente aprovada.



Visão Geral

Este endpoint permite o envio de mensagens oficiais via template com variáveis dinâmicas através do WhatsApp oficial. É ideal para comunicações personalizadas e automatizadas, utilizando templates aprovados pela Meta (WhatsApp Business).

📂 Código PHP


<?php


$curl = curl_init();


curl_setopt_array($curl, array(

  CURLOPT_URL => 'https://beta-api.whaticket-saas.com/api/messages/sendOfficial',

  CURLOPT_RETURNTRANSFER => true,

  CURLOPT_ENCODING => '',

  CURLOPT_MAXREDIRS => 10,

  CURLOPT_TIMEOUT => 0,

  CURLOPT_FOLLOWLOCATION => true,

  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

  CURLOPT_CUSTOMREQUEST => 'POST',

  CURLOPT_POSTFIELDS =>'{

    "number": "5511989091838",

    "name": "vars_001", // nome da template

    "language": "pt_BR",

    "template": [

        {

            "type": "text",

            "text": "valor 1" // valor variavel 1

        },

        {

            "type": "text",

            "text": "Valor 2" // valor variavel 2

        },

        {

            "type": "text",

            "text": "Valor 3" // valor variavel 3

        }

    ]

}',

  CURLOPT_HTTPHEADER => array(

    'Content-Type: application/json',

    'Authorization: Bearer seutoken'

  ),

));


$response = curl_exec($curl);


curl_close($curl);

echo $response;





📘 Detalhamento Técnico

1. Endpoint

  • https://beta-api.whaticket-saas.com/api/messages/sendOfficial




2. Método HTTP

  • POST




3. Cabeçalhos (Headers)

Header

Valor

Content-Type

application/json

Authorization

Bearer seutoken




4. Corpo da Requisição (JSON)


{

  "number": "5511989091838",

  "name": "vars_001",

  "language": "pt_BR",

  "template": [

    {

      "type": "text",

      "text": "valor 1"

    },

    {

      "type": "text",

      "text": "Valor 2"

    },

    {

      "type": "text",

      "text": "Valor 3"

    }

  ]

}


Descrição dos Campos

Campo

Tipo

Obrigatório

Descrição

number

string

Sim

Número de WhatsApp com DDI e DDD (ex: 5511989091838)

name

string

Sim

Nome do template cadastrado e aprovado

language

string

Sim

Idioma do template (ex: pt_BRen_US)

template

array

Sim

Lista de objetos com os valores das variáveis do template

template[].type

string

Sim

Tipo da variável (atualmente apenas text é suportado)

template[].text

string

Sim

Valor da variável (na ordem esperada pelo template)




📌 API Oficial Template Customizado

API: Oficial

Envia uma mensagem, template customizado pela api oficial, estando previamente aprovada.

Visão Geral

Este endpoint permite o envio de uma mensagem oficial (HSM) com:

  • Cabeçalho contendo imagem;

  • Botões de resposta rápida (Quick Reply) com payloads personalizados.

Ideal para campanhas com maior engajamento e interatividade no WhatsApp Oficial.


📂 Código PHP


<?php


$curl = curl_init();


curl_setopt_array($curl, array(

  CURLOPT_URL => 'https://{BACKEND_URL}/api/messages/sendOfficialCustom',

  CURLOPT_RETURNTRANSFER => true,

  CURLOPT_ENCODING => '',

  CURLOPT_MAXREDIRS => 10,

  CURLOPT_TIMEOUT => 0,

  CURLOPT_FOLLOWLOCATION => true,

  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

  CURLOPT_CUSTOMREQUEST => 'POST',

  CURLOPT_POSTFIELDS =>'{

    "number": "5511999999999",

    "name": "vars_001",

    "language": "pt_BR",

    "template": [

      {

        "type": "header",

        "parameters": [

          {

            "type": "image",

            "image": {

              "link": "https://URL/wp-content/uploads/2024/03/front-view-woman-holding-smartphone-removebg-preview.png"

            }

          }

        ]

      },

      {

        "type": "button",

        "sub_type": "quick_reply",

        "index": "0",

        "parameters": [

          {

            "type": "payload",

            "payload": "Descadastrar"

          }

        ]

      },

      {

        "type": "button",

        "sub_type": "quick_reply",

        "index": "1",

        "parameters": [

          {

            "type": "payload",

            "payload": "Alterar Contato"

          }

        ]

      }

    ]

}',

  CURLOPT_HTTPHEADER => array(

    'Content-Type: application/json',

    'Authorization: Bearer {seutokenaqui}' //Token cadastrado na conexão

  ),

));


$response = curl_exec($curl);


curl_close($curl);

echo $response;





📘 Detalhamento Técnico

🔗 Endpoint


POST https://{BACKEND_URL}/api/messages/sendOfficialCustom





🔑 Headers

Header

Valor

Content-Type

application/json

Authorization

Bearer {seutokenaqui}




🧾 Corpo da Requisição (JSON)

Campos Principais

Campo

Tipo

Obrigatório

Descrição

number

string

Sim

Número com DDI/DDD (ex: 5511999999999)

name

string

Sim

Nome da template oficial

language

string

Sim

Idioma do template (ex: pt_BR)

template

array

Sim

Estrutura customizada com elementos adicionais


Estrutura do Array template[]

Header com Imagem

{

  "type": "header",

  "parameters": [

    {

      "type": "image",

      "image": {

        "link": "https://URL.com/imagem.jpg"

      }

    }

  ]

}


Botão Quick Reply (Descadastrar)


{

  "type": "button",

  "sub_type": "quick_reply",

  "index": "0",

  "parameters": [

    {

      "type": "payload",

      "payload": "Descadastrar"

    }

  ]

}


Botão Quick Reply (Alterar Contato)


{

  "type": "button",

  "sub_type": "quick_reply",

  "index": "1",

  "parameters": [

    {

      "type": "payload",

      "payload": "Alterar Contato"

    }

  ]

}


⚠️ A ordem e os índices dos botões devem seguir a ordem configurada no template oficial aprovado pela Meta.








Atualizado em 23/04/2025
Este artigo foi útil?  
Agradecemos sua avaliação.