TalkMi
TalkMiCentral de Ajuda
TalkMi
TalkMiCentral de Ajuda
Recursos Trilha Referência APIs

Nada encontrado por aqui.

Webhooks ▸
Webhook x API Webhook da Conexão Webhook de Filas Webhook Eventos Webhook Triggers Arquivos no Webhook
APIs ▾
Pré-Requisitos das APIs Conteúdos sobre APIs ▸
API x Webhook Estrutura de API Bibliotecas
Mensagem ▾
API Digitando… Básica API Digitando…. Pro API Gravando… Básica API Gravando…. Pro API Mensagem de Texto Básica | Pro API Mensagem de Texto via LID Pro API Web Mensagem de Texto Webchat API Oficial Mensagem Oficial API Oficial Mensagem Template Oficial API Oficial Mensagem Template sem variável Oficial API Oficial Template sem variável (Hub) Oficial Hub API Oficial Template com variável (Hub) Oficial Hub API Oficial Template Customizado (Hub) Oficial Hub API Mensagem Interna Todas API Mensagem para Grupos Básica API Mensagem para Grupos Pro API Mensagem de Lista Básica API Mensagem de Lista Pro API Oficial Mensagem de Lista Oficial API Mensagem via Flowbuilder Todas API Mensagem via Typebot Todas API Criar Agendamento Todas API Deletar Agendamento Todas API Enviar Contato Básica API Obter Mensagens por Protocolo Todas API Obter Mensagens Template Meta Oficial
Mídias ▸
API Enviar Imagem por URL Básica API Enviar Imagem por URL Pro API Oficial Enviar Imagem por URL Oficial API Enviar Áudio por URL Básica API Enviar Áudio por URL Pro API Oficial Enviar Áudio por URL Oficial API Enviar Áudio Base64 Pro API Enviar Vídeo por URL Básica API Enviar Vídeo por URL Pro API Oficial Enviar Vídeo por URL Oficial API Enviar Documento por URL Básica API Enviar Documento por URL Pro API Oficial Enviar Documento por URL Oficial API Enviar Arquivos Básica | Pro API Web Enviar Arquivos Webchat API Enviar Imagem por URL para Grupos Pro API Enviar Áudio por URL para Grupos Pro API Enviar Vídeo por URL para Grupos Pro API Enviar Documento por URL para Grupos Pro API Enviar Arquivos por URL para Grupos Pro
Ticket ▸
API Criar Ticket Todas API Obter um Ticket Todas API Obter Tickets Todas API Obter Tickets do Contato Todas API Obter Protocolos de um Ticket Todas API Atualizar Ticket Todas API Atualizar Tags Todas API Encerrar Ticket Todas API Encerrar Ticket em Massa Todas API Encerrar Tickets por "Dias de Inatividade" Todas API Transferir Tickets para um Setor Todas API Transferir Tickets entre Conexões Todas
Contatos ▸
API Criar Contato Todas API Criar Contato (com validação) Básica | Pro API Validar Contato Básica | Pro API Obter um Contato Todas API Obter Contatos Todas API Obter Contatos por Tag Todas API Atualizar Contato Todas API Deletar TODOS os Contatos Todas
Conexões ▸
API Criar Conexão Pro API Obter QR Code Pro API Status das Conexões Todas API Reiniciar Conexões Todas
Setores ▸
API Obter Filas da Empresa Todas
Equipe ▸
API Obter Usuários da Empresa Todas API Transferir Carteira de Clientes Todas
CRM ▸
API Criar Oportunidade Todas API Atualizar Oportunidade Todas API Deletar Oportunidade Todas API Criar Produto Todas API Obter Produtos Todas API Obter Produto por ID Todas API Atualizar Produto Todas API Deletar Produto Todas
Tags ▸
API Obter Tags da Empresa Todas
Tarefas ▸
API Criar Tarefa Todas API Obter Tarefas Todas
Botões no WhatsApp ▸
Pré-Requisitos dos Botões API Botão Carrossel Pro API Botão Copia e Cola Básica API Botão Copia e Cola Pro API Botão URL Básica API Botão URL Pro API Oficial Botão URL Oficial API Botão Quick Reply Básica API Botão Quick Reply Pro API Oficial Botão Quick Reply Oficial API Botão Ligação Pro API Botão Pix Pro
Extras ▸
API Enviar Status de Texto Pro API Enviar Status de Imagem Pro API Enviar Status de Vídeo Pro API Horário de Expediente Todas API Ligação (Somente Chamar) Básica
Precisa de ajuda?
(11) 5026-2713
APIs › Mensagem › API Oficial Mensagem Template

API Oficial Mensagem Template

Oficial
🔍

🧩 Envia uma mensagem template pela API oficial, estando previamente aprovada.

API: Oficial

Endpoint
https://{BACKEND_URL}/api/messages/sendMetaCustom
Método
POST
Autenticação
Bearer {seutokenaqui}
Payload
{
    "number": "551150262713",
    "name": "vars_001", 
    "language": "pt_BR",
    "openTicket": 1,
    "queueId": 100,
    "template": [
        {
            "type": "header",
            "parameters": [
                {
                    "type": "text",
                    "text": "Texto cabeçalho"
                }
            ]
        },
        {
            "type": "body",
            "parameters": [
                {
                    "type": "text",
                    "text": "Maria"
                },
                {
                    "type": "text",
                    "text": "Festa do Peão"
                },
                {
                    "type": "text",
                    "text": "15/01/2028"
                }
            ]
        },
        {
          "type": "button",
          "sub_type": "quick_reply",
          "index": "0",
          "parameters": [
            {
              "type": "payload",
              "payload": "Contato"
            }
          ]
        }
    ]
}

➡️ “number”: telefone do destinatário no formato ddi ddd numero (somente números).

➡️ “name”: nome do template, idêntico ao aprovado na Meta.

➡️ “language”: idioma, idêntico ao aprovado na Meta.

➡️ “openTicket”: decide o que acontece com o ticket:

◽ 0 — o ticket é encerrado.

◽ 1 com "queueId": 0 — o status do ticket permanece como estava.

◽ 1 com um Setor em queueId — o status muda para Aguardando.

➡️ “queueId”: ID do Setor desejado (só funciona quando "openTicket": "1").

➡️ “template”: os componentes do template, um por entrada. Cada entrada tem um type — header, body ou button — e você adiciona os que existirem no template aprovado na Meta.

O componente header

Dentro de parameters, o type pode ser text, image, video, document ou location. A Meta não tem suporte a áudio no cabeçalho.

// texto
{
  "type": "header",
  "parameters": [ { "type": "text", "text": "Meu cabeçalho" } ]
}

// imagem
{
  "type": "header",
  "parameters": [ { "type": "image", "image": { "link": "https://..." } } ]
}

// vídeo
{
  "type": "header",
  "parameters": [ { "type": "video", "video": { "link": "https://..." } } ]
}

// documento
{
  "type": "header",
  "parameters": [ { "type": "document", "document": { "link": "https://...", "filename": "livro.pdf" } } ]
}

// localização
{
  "type": "header",
  "parameters": [ { "type": "location", "location": { "latitude": -22.950762, "longitude": -43.2135083, "name": "Cristo Redentor", "address": "texto do endereço" } } ]
}

🚨 Adicione o parâmetro exato do seu template cadastrado na Meta, lembrando que ela só permite um header por template.

O componente body

Dentro de parameters, o type é sempre text.

{
  "type": "body",
  "parameters": [ { "type": "text", "text": "O valor da sua variável aqui" } ]
}

🚨 Adicione mais parâmetros de texto conforme cadastrado no seu template da Meta, seguindo exatamente a ordem das variáveis.

O componente button

🔘 sub_type: pode ser quick_reply, url, copy_code ou flow.

🔘 index: número que representa a ordem do botão. Começa em 0, o próximo é 1, e assim por diante. O número tem de ser exatamente a ordem cadastrada no template.

🔘 parameters: dentro do botão, o type pode ser payload, text, coupon_code ou action.

// quick_reply
{ "type": "payload", "payload": "Texto invisível de retorno para o webhook" }

// url dinâmica — o text é a parte dinâmica da URL: site.com/{{1}}
{ "type": "text", "text": "pagina-de-vendas" }

// copy_code
{ "type": "coupon_code", "coupon_code": "texto a ser copiado aqui" }

// flow
{ "type": "action", "action": { "flow_token": "id_da_sessao", "flow_action_data": { "chave": "valor" } } }

🚨 Botões sem variável, como o URL Estático e o Ligação (Call), não precisam entrar no payload. Coloque apenas os botões que têm variável, e mantenha o index na ordem correta do template cadastrado na Meta.

🚨 Botões Quick Reply só podem ser usados junto com outros Quick Reply. Não podem ser combinados com URL, Copy Code ou outros.

Utilize o código em requisições HTTPS com ferramentas como cURL ou bibliotecas de integração.
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://{BACKEND_URL}/api/messages/sendMetaCustom',
  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": "551150262713",
    "name": "vars_001", 
    "language": "pt_BR",
    "openTicket": 1,
    "queueId": 100,
    "template": [
        {
            "type": "header",
            "parameters": [
                {
                    "type": "text",
                    "text": "Texto cabeçalho"
                }
            ]
        },
        {
            "type": "body",
            "parameters": [
                {
                    "type": "text",
                    "text": "Maria"
                },
                {
                    "type": "text",
                    "text": "Festa do Peão"
                },
                {
                    "type": "text",
                    "text": "15/01/2028"
                }
            ]
        },
        {
          "type": "button",
          "sub_type": "quick_reply",
          "index": "0",
          "parameters": [
            {
              "type": "payload",
              "payload": "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;
← AnteriorAPI Oficial Mensagem Próximo →API Oficial Mensagem Template sem variável