Implementação

Como a Datafy API funciona: um espelho da Cloud API do WhatsApp

Os papéis de parceiro entre a empresa e a Meta Ilustração em camadas mostrando a empresa, o provedor intermediário e a Meta. Meta Tech Provider permissões já aprovadas sua empresa

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."

2coisas que mudam no código: URL e token
/mea chamada que devolve os seus identificadores
500 req/mino limite de envio de mensagens da Datafy
403a resposta dos endpoints bloqueados por segurança

Principais pontos

Dois caminhos para a API oficial do WhatsApp Indo direto na Meta, você cria conta de desenvolvedor, cria um aplicativo, monta a infraestrutura de webhooks, envia para aprovação e, para usar o aplicativo do celular junto, precisa virar Tech Provider. Indo pela Datafy API, você escaneia um QR code, recebe um token e chama os mesmos endpoints trocando só o domínio e o token. DIRETO NA META Criar app Infra de webhook Aprovação Tech Provider para usar com o celular graph.facebook.com, com o token da Meta. PELA DATAFY API QR code conexão oficial da Meta Token sk_live_xxx sempre no header Mesmos endpoints cloud.datafyapi.com.br/v1 Muda o domínio e o token. Corpo, payload e webhook continuam iguais aos da Meta.
As duas arquiteturas. A não oficial põe um intermediário frágil no meio do caminho. É ele que quebra e é ele que a Meta detecta. A oficial fala direto com um endpoint autorizado.

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.

Miniatura do vídeo: Como funciona a Datafy API Como funciona a Datafy APICanal DATA7 · 14 min · assistir no YouTube
Três envios pelo mesmo endpoint: texto, botões pelo exemplo pronto e um botão de link montado a partir da documentação da Meta, além da chamada /me devolvendo os identificadores.

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.

Começar 7 dias grátis, sem cartão

Sem taxa de setup · Cancele quando quiser · Suporte por WhatsApp

Leia também

Continue por aqui