Resposta curta: a Datafy API é um proxy da API oficial da Meta. Você cria o canal no painel e recebe o token sk_live_xxx na criação do canal, antes mesmo de conectar o número. Depois, faz as requisições para a Datafy, que encaminha para a Meta. No código mudam duas coisas: onde a documentação da Meta usa o domínio dela com a versão da Graph API, você usa https://cloud.datafyapi.com.br/v1/; e o token passa a ser o seu, sempre no cabeçalho. Caminho, corpo e resposta seguem a documentação da Meta. Se você só tem o token, GET /me devolve os identificadores que faltam. Nas palavras do Israel Henrique, CTO da Datafy: "a única coisa que muda é a URL e você tem que passar o token em todas as chamadas."
Principais pontos
- É espelho, não é outra API. "Esse aqui é o endpoint da API da meta para enviar um texto. A nossa API, ele é um espelho, então ele funciona exatamente da mesma forma. A única coisa que você vai mudar é a URL que tá ali no começo, só isso. O resto é 100% igual."
- Endpoint novo da Meta já vale no espelho. "Se a meta atualizar agora nesse exato momento, qualquer endpoint, automaticamente já vai atualizar a nossa API."
- Token só no cabeçalho.
Authorization: Bearer sk_live_xxx. Passar?access_token=na URL, como aparece em exemplos da Meta, não funciona aqui. - A documentação tem dois modos de teste: endpoints prontos por tipo de mensagem e um playground genérico que aceita qualquer caminho da Cloud API.
- O espelho não muda as regras da Meta. Janela de 24 horas, template, categoria e cobrança por mensagem entregue continuam iguais, e é aí que a maior parte das integrações erra.
O que a plataforma é, em quatro passos
A documentação da Datafy descreve a arquitetura em uma frase: a infraestrutura é um proxy da API oficial da Meta, e você usa os endpoints da Meta Cloud API pela URL da Datafy, com a autenticação do painel. O mesmo painel também dá acesso à API oficial do Instagram.
| Passo no painel | O que acontece |
|---|---|
| 1. Criar a conta | O painel é onde ficam canais, tokens e a configuração da conta |
| 2. Criar o canal | O token sk_live_xxx é gerado neste momento, antes da conexão |
| 3. Conectar o número ao canal | A conexão acontece dentro do canal já criado |
| 4. Configurar os webhooks | Cadastro de URL, seleção de eventos, e entrega com assinatura HMAC |
Quem ainda não conectou um número encontra o fluxo inteiro em como conectar um número na API oficial.
A troca, lado a lado
Dentro da documentação da Datafy existe um link para a documentação oficial da Meta, e isso é proposital: é de lá que você tira o corpo das requisições que ainda não têm exemplo pronto. A troca é só esta:
| Na documentação da Meta | Na Datafy API |
|---|---|
| O domínio da Meta com a versão da Graph API, até a barra da versão | https://cloud.datafyapi.com.br/v1/ |
Bearer com o token da Meta |
Bearer sk_live_xxx |
O token da Datafy substitui completamente o token da Meta, e a credencial real nunca é exposta na sua aplicação. Se o token vazar, ele é rotacionável pelo painel.
Passo 1: descobrir os seus identificadores
Quem acabou de criar o canal tem o token e não tem o phone_number_id. É o primeiro obstáculo real de qualquer integração, e existe uma chamada só para isso. Ela "vai trazer para você as tuas informações, passando aqui apenas o token":
GET https://cloud.datafyapi.com.br/me
Authorization: Bearer sk_live_xxx
{
"cliente_id": "uuid-do-cliente",
"phone_number_id": "106540352242922",
"waba_id": "366634483210360",
"business_id": "123456789"
}
São três identificadores com usos diferentes, e confundi-los é o erro mais comum de quem está montando a integração:
| Identificador | Para que serve |
|---|---|
phone_number_id |
Enviar mensagens, subir mídia, ler e atualizar o perfil do número |
waba_id |
Tudo que é de template: listar, criar, apagar, e o cadastro por deep link |
business_id |
Bases de clientes do portfólio |
O phone_number_id também aparece na tela do número, com botão para copiar, e chega dentro de todo payload de webhook. Atenção a um detalhe que confunde muita gente: o phone_number_id é a identificação do número conectado, não o número de quem mandou mensagem para você.
Passo 2: o envio de texto, e o que a janela decide
Com o phone_number_id, o envio é o mesmo corpo da documentação da Meta:
POST https://cloud.datafyapi.com.br/v1/{phone_number_id}/messages
Authorization: Bearer sk_live_xxx
Content-Type: application/json
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "5511999999999",
"type": "text",
"text": { "preview_url": false, "body": "Teste pela Datafy API" }
}
Esse primeiro envio funciona por um motivo específico, e vale dizer qual: "esse número aqui ele já entrou em contato comigo antes, nas últimas 24 horas, por isso eu posso responder ele de graça. Caso contrário, teria que criar um template."
A resposta traz o wamid da mensagem. Segundo a documentação da Datafy, essa resposta significa que a Meta aceitou a requisição, e não que a mensagem foi entregue. Guarde o wamid no momento do envio: é ele que liga cada evento de status ao que você mandou. Para responder citando uma mensagem recebida, inclua context.message_id com o wamid dela, que é opcional.
O preview_url do exemplo acima controla se o link dentro do texto ganha pré-visualização. Deixar em false é o padrão sensato quando o texto é gerado por automação.
Passo 3: o playground, e o endpoint genérico
A aba de API do WhatsApp na documentação tem dois caminhos de teste, e eles resolvem problemas diferentes. Cole o token uma vez e ele passa a vir preenchido nos exemplos.
Endpoints prontos por tipo. No endpoint de envio de mensagem você escolhe o tipo na lateral e o payload vem montado: texto, botões, lista, template, mídia, localização e contato. No exemplo de botões, o token e o phone_number_id já vêm preenchidos e falta só o destinatário, e a mensagem chega com três botões de confirmar, cancelar e remarcar.
Playground genérico. GET, POST, PUT, DELETE e PATCH em /v1/{path}, onde o path é o restante da URL da Cloud API, sem a barra inicial:
POST https://cloud.datafyapi.com.br/v1/106540352242922/messages
Authorization: Bearer sk_live_xxx
Content-Type: application/json
É esse curinga que faz o espelho valer. A regra prática é direta: "se o endpoint não tiver aqui, você pode buscar direto na documentação" da Meta, e chamar pela URL da Datafy.
O token só funciona no cabeçalho
Esse é o tropeço mais frequente de quem copia exemplo da Meta. A documentação dela mostra chamadas com o token como parâmetro de URL. Na Datafy isso não é aceito:
GET https://cloud.datafyapi.com.br/v1/{waba_id}/message_templates?limit=20
Authorization: Bearer sk_live_xxx
Se o seu exemplo tem ?access_token=, mova o valor para o cabeçalho e apague o parâmetro. O proxy repassa o token para a Meta do jeito que cada endpoint exige.
Montar um tipo que não tem exemplo pronto
O caso que ensina mais é o botão de link, que sai pelo mesmo endpoint de sempre: muda só o payload. O corpo da Meta vem com quatro opções de cabeçalho, cada uma com a instrução de omitir se não for usar: documento, imagem, texto e vídeo. Você apaga três e deixa uma. Depois preenche o corpo, o texto e a URL do botão, e o rodapé.
E aqui está a parte honesta: apagar blocos de um JSON aninhado quebra o JSON. No envio de referência sobrou uma chave fechando no lugar errado, e foi uma IA que apontou o erro em segundos. Esse é o uso bom de IA nessa etapa: não para inventar o payload, e sim para conferir a estrutura do que você recortou. Antes de subir, valide o JSON e confira os nomes dos campos contra a documentação.
As rotas que o espelho simplifica
Algumas rotas fogem do formato da Meta de propósito, porque o token já identifica a conta e o número:
| Rota simplificada | Faz o mesmo que |
|---|---|
GET /media/{id} |
Baixar a mídia recebida, já com URL pronta e válida por 30 dias |
POST /messages/read |
Marcar uma mensagem recebida como lida |
GET /templates e DELETE /templates/{name} |
Listar e apagar templates da conta |
POST /templates/upload-header |
Gerar o handle de mídia para criar template com cabeçalho |
GET /profile e PUT /profile |
Ler e atualizar o perfil empresarial |
GET /profile/display-name |
Consultar verified_name e o status do nome de exibição |
A de mídia é a que mais muda o trabalho. A mídia chega criptografada da Meta, e a URL que vem no webhook não abre no navegador. Essa etapa a plataforma já entrega resolvida, com uma chamada que recebe o ID e devolve um link hospedado em files.datafyapi.com.br.
Três camadas de limite, e as três valem
Aqui o espelho para de ser espelho, e é importante separar o que é de quem.
| Camada | Limite | O que acontece ao estourar |
|---|---|---|
| Datafy, envio de mensagens | 500 req/min | 429 Too Many Requests, com os segundos a aguardar |
| Datafy, upload de mídia | 60 req/min | 429, idem |
| Datafy, consultas | 60 req/min | 429, idem |
| Meta, número registrado | 80 mensagens por segundo, até 1.000 para números elegíveis | Erro da Meta |
| Meta, número do WhatsApp Business App | 20 mensagens por segundo, fixo | Erro da Meta |
| Meta, par entre empresa e destinatário | Existe, e a Meta não publica o valor | Erro de par |
Três tipos de chamada são bloqueados por segurança e devolvem 403: caminhos com subscribed_apps, caminhos com deregister, e POST direto no identificador do número.
O que o espelho não muda: as regras da Meta
Trocar o domínio não troca as regras de mensageria. A documentação da Datafy é explícita nos quatro pontos, e é aqui que a maior parte dos erros de integração aparece:
| Situação | O que a API faz | O que o seu código precisa ter |
|---|---|---|
| O cliente mandou mensagem nas últimas 24 horas | Mensagem de serviço sai livre, sem template | O horário da última mensagem recebida de cada cliente, guardado |
| A empresa respondeu, o cliente não escreveu de novo | A janela não renova | Nunca contar resposta própria como renovação |
| Passou de 24 horas desde a última mensagem do cliente | A requisição pode voltar HTTP 200 com ID e falhar depois | Tratar o failed do webhook como fonte da verdade |
| O cliente nunca falou com você | Só template aprovado, e enviar template não abre a janela | Escolher entre serviço e template antes de enviar |
A cobrança segue sendo da Meta, no cartão do seu portfólio empresarial, por mensagem entregue, conforme a categoria e o país. Referências no Brasil: R$ 0,32 para marketing e R$ 0,035 para utilidade e autenticação. Até 30 de setembro de 2026, serviço e utilidade dentro da janela não são cobrados. A partir de 1º de outubro de 2026, cada número passa a ter 1.000 mensagens de serviço grátis por mês e o template de utilidade dentro da janela passa a ser cobrado.
À Datafy você paga a conexão do número: R$ 49,90 de 1 a 9 números, R$ 39,90 de 10 a 49, R$ 29,90 acima de 50, com 7 dias de teste grátis. Confira sempre a tabela publicada, porque valor de tabela muda.
Perguntas frequentes
O corpo da requisição muda em relação à documentação da Meta?
Não. Caminho, corpo e resposta são os da Cloud API. Mudam a URL e o token, e o token vai no cabeçalho. Por isso dá para estudar direto na documentação da Meta.
Quando eu recebo o token?
Na criação do canal, no painel, antes de conectar o número. Isso permite escrever a integração enquanto a conexão do número ainda não aconteceu. Se o token vazar, dá para rotacionar pelo painel.
Posso passar o token como parâmetro na URL?
Não. Na Datafy o token vai sempre em Authorization: Bearer sk_live_xxx. Exemplos da Meta com ?access_token= precisam ser ajustados.
E se o endpoint que eu preciso não estiver na documentação da Datafy?
Use o playground genérico /v1/{path} com a documentação da Meta. O path é o restante da URL da Cloud API, como 106540352242922/messages.
Quais chamadas são bloqueadas?
Caminhos com subscribed_apps ou deregister, e POST direto no identificador do número. As três devolvem 403.
O que significa a resposta com o ID da mensagem?
Que a requisição foi aceita. Não confirma entrega e não confirma cobrança: a Meta cobra por mensagem entregue. A entrega ou a falha chega pelo webhook de status, com sent, delivered, read ou failed.
O espelho me livra da janela de 24 horas?
Não, e nenhuma plataforma livra. Janela, categoria de template e entrega são regras da Meta. O que a plataforma resolve é a infraestrutura: acesso sem App Review, token pronto, webhook assinado e as rotas simplificadas.
Resumo para a sua integração
Se você já tem código falando com a Cloud API, a migração é trocar a URL base e o token, e varrer o projeto procurando token em parâmetro de URL. Se está começando agora, faça nesta ordem: GET /me para pegar os identificadores, um envio de texto para o seu próprio número dentro da janela, o cadastro do webhook para ver o status chegar, e só depois os tipos mais complexos, começando pelos exemplos prontos e indo para o playground genérico.
Guarde URL base, token e phone_number_id como variáveis de ambiente. Quando qualquer um dos três mudar, e o token muda quando você rotaciona, nada no código precisa ser reescrito.
Chame GET /me e mande um texto para você mesmo
Copie o token do canal, chame GET https://cloud.datafyapi.com.br/me com ele no cabeçalho, guarde o phone_number_id que voltar e envie uma mensagem de texto para um número que falou com você nas últimas 24 horas.
Sem taxa de setup · Cancele quando quiser · Suporte por WhatsAppLeia também
- Como conectar um número na API oficial do WhatsApp
- A primeira mensagem: webhook, envio e a falha fora da janela
- Como integrar a API oficial do WhatsApp ao n8n
- Como ver o payload das mensagens em tempo real
Continue por aqui
- ImplementaçãoComo conectar um número na API oficial do WhatsApp em 5 minutos, sem burocracia
O passo a passo completo da conexão: criar o número no painel, escolher o portfólio empresarial, chip novo ou aplicativo existente, escanear o QR code e cadastrar a forma de pagamento na BM.
Ler mais - ImplementaçãoComo criar um template de WhatsApp passo a passo, no painel da Meta
Gerenciar modelos, categoria, cabeçalho com imagem, corpo com variáveis e exemplo obrigatório, botões e envio para análise. E o que a categoria faz no seu custo.
Ler mais - ImplementaçãoComo enviar imagem, documento e áudio pela API oficial do WhatsApp
Por link ou por identificador, no mesmo endpoint de mensagens. Legenda na imagem, nome no documento, e o que faz o áudio virar bolha de voz em vez de anexo.
Ler mais