Envie mensagens com facilidade
A API ZionTalk permite enviar mensagens de texto e arquivos de forma programática. Integre em minutos e comece a se comunicar com seus clientes.
Primeiros Passos
Siga estes 3 passos simples para enviar sua primeira mensagem:
Obtenha sua API Key
Acesse o ZionTalk, vá até a lista de canais e clique para editar o canal que será usado para disparar as mensagens. No campo API Key, clique no botão para gerar uma nova chave, copie e salve.
Configure a Autenticação
Use Basic Auth com sua API Key como username e uma senha vazia. O header de autenticação será gerado automaticamente pelo seu cliente HTTP.
Envie sua Primeira Mensagem
Faça uma requisição POST para o endpoint com os dados da mensagem. Veja o exemplo abaixo:
curl -X POST 'https://app.ziontalk.com/api/send_message/' \ -u 'sua_api_key:' \ -F 'msg=Olá! Esta é minha primeira mensagem.' \ -F 'mobile_phone=+5511999999999'
Autenticação
A API utiliza Basic Authentication. Você deve enviar suas credenciais em todas as requisições.
Como funciona
A maioria das bibliotecas HTTP e ferramentas como cURL geram automaticamente
o header Authorization quando você fornece username e password.
Enviar Mensagem
Utilize este endpoint para enviar mensagens de texto e arquivos para seus destinatários.
https://app.ziontalk.com/api/send_message/
Envia uma mensagem de texto e/ou arquivos para o número de telefone especificado.
Content-Type
As requisições aceitam multipart/form-data ou application/x-www-form-urlencoded.
Se houver anexos, é obrigatório usar multipart/form-data.
Parâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| msg | string | Sim | A mensagem de texto que será enviada ao destinatário. |
| mobile_phone | string | Sim | Número do destinatário. Ex: +5511999999999 ou 11999999999 (usando cd). |
| cd | string | Não | Código do país como prefixo. Ex: +55, +54. Opcional se o número já estiver no formato internacional (E.164). |
| attachments | file | Não | Arquivo(s) a serem enviados como anexo. Você pode enviar múltiplos arquivos. |
Formato do número
Você pode enviar o número completo no formato E.164 (ex: +5511999999999) ou
usar o parâmetro cd para definir o código do país separadamente.
Exemplo de Requisição
# Enviar mensagem de texto curl -X POST 'https://app.ziontalk.com/api/send_message/' \ -u 'sua_api_key:' \ -F 'msg=Olá! Como posso ajudar?' \ -F 'mobile_phone=+5511999999999'
# pip install requests import requests url = "https://app.ziontalk.com/api/send_message/" data = { "msg": "Olá! Como posso ajudar?", "mobile_phone": "+5511999999999" } response = requests.post( url, data=data, auth=("sua_api_key", "") ) print(response.status_code)
// Usando fetch const formData = new FormData(); formData.append('msg', 'Olá! Como posso ajudar?'); formData.append('mobile_phone', '+5511999999999'); const response = await fetch( 'https://app.ziontalk.com/api/send_message/', { method: 'POST', headers: { 'Authorization': 'Basic ' + btoa('sua_api_key:') }, body: formData } ); console.log(response.status);
<?php $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => "https://app.ziontalk.com/api/send_message/", CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_USERPWD => "sua_api_key:", CURLOPT_POSTFIELDS => [ "msg" => "Olá! Como posso ajudar?", "mobile_phone" => "+5511999999999" ] ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $httpCode;
Exemplo com Anexos
# Enviar mensagem com arquivos anexos curl -X POST 'https://app.ziontalk.com/api/send_message/' \ -u 'sua_api_key:' \ -F 'msg=Segue os documentos.' \ -F 'mobile_phone=+5511999999999' \ -F 'attachments=@/caminho/para/documento.pdf' \ -F 'attachments=@/caminho/para/imagem.jpg'
# pip install requests import requests url = "https://app.ziontalk.com/api/send_message/" data = { "msg": "Segue os documentos.", "mobile_phone": "+5511999999999" } files = [ ("attachments", open("documento.pdf", "rb")), ("attachments", open("imagem.jpg", "rb")) ] response = requests.post( url, data=data, files=files, auth=("sua_api_key", "") ) print(response.status_code)
// Usando fetch com arquivos const formData = new FormData(); formData.append('msg', 'Segue os documentos.'); formData.append('mobile_phone', '+5511999999999'); // Adicionar arquivos const fileInput = document.querySelector('input[type="file"]'); for (const file of fileInput.files) { formData.append('attachments', file); } const response = await fetch( 'https://app.ziontalk.com/api/send_message/', { method: 'POST', headers: { 'Authorization': 'Basic ' + btoa('sua_api_key:') }, body: formData } ); console.log(response.status);
<?php $ch = curl_init(); $postFields = [ "msg" => "Segue os documentos.", "mobile_phone" => "+5511999999999", "attachments[0]" => new CURLFile("/caminho/documento.pdf"), "attachments[1]" => new CURLFile("/caminho/imagem.jpg") ]; curl_setopt_array($ch, [ CURLOPT_URL => "https://app.ziontalk.com/api/send_message/", CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_USERPWD => "sua_api_key:", CURLOPT_POSTFIELDS => $postFields ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $httpCode;
Enviar Template
Utilize este endpoint para enviar mensagens baseadas em templates aprovados no painel da Meta através da API Oficial do WhatsApp Business.
API Oficial do WhatsApp
Este endpoint utiliza a API oficial da Meta. Os templates devem estar previamente aprovados no Gerenciador de Negócios da Meta antes de serem utilizados.
https://app.ziontalk.com/api/send_template_message/
Envia uma mensagem utilizando um template pré-aprovado pela Meta, com suporte a parâmetros dinâmicos no cabeçalho e corpo.
Parâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| mobile_phone | string | Sim | Número do destinatário. Ex: +5511999999999 ou 11999999999 (usando cd). |
| cd | string | Não | Código do país como prefixo. Ex: +55, +54. Opcional se o número já estiver no formato internacional (E.164). |
| template_identifier | string | Sim | Nome do template cadastrado no painel da Meta. Ex: voce_esta_perdendo_vendas_no_whatsapp |
| language | string | Não | Código do idioma do template. Ex: pt_BR, es. Se não informado, usa o valor padrão configurado. |
| headerParams[{nome}] | string | Não | Parâmetros dinâmicos do cabeçalho do template. Substitua {nome} pelo nome da variável. |
| bodyParams[{nome}] | string | Não | Parâmetros dinâmicos do corpo do template. Substitua {nome} pelo nome da variável. |
Identificando o template
O template é identificado pela combinação de template_identifier + language.
Certifique-se de que o template está aprovado no painel da Meta antes de utilizá-lo.
Exemplo de Requisição
# Enviar template com parâmetros curl -X POST 'https://app.ziontalk.com/api/send_template_message/' \ -u 'sua_api_key:' \ -F 'mobile_phone=+5511999999999' \ -F 'template_identifier=voce_esta_perdendo_vendas_no_whatsapp' \ -F 'language=pt_BR' \ -F 'headerParams[nome_empresa]=Minha Loja' \ -F 'bodyParams[nome_cliente]=João' \ -F 'bodyParams[desconto]=20%'
# pip install requests import requests url = "https://app.ziontalk.com/api/send_template_message/" data = { "mobile_phone": "+5511999999999", "template_identifier": "voce_esta_perdendo_vendas_no_whatsapp", "language": "pt_BR", "headerParams[nome_empresa]": "Minha Loja", "bodyParams[nome_cliente]": "João", "bodyParams[desconto]": "20%" } response = requests.post( url, data=data, auth=("sua_api_key", "") ) print(response.json())
// Usando fetch const formData = new FormData(); formData.append('mobile_phone', '+5511999999999'); formData.append('template_identifier', 'voce_esta_perdendo_vendas_no_whatsapp'); formData.append('language', 'pt_BR'); formData.append('headerParams[nome_empresa]', 'Minha Loja'); formData.append('bodyParams[nome_cliente]', 'João'); formData.append('bodyParams[desconto]', '20%'); const response = await fetch( 'https://app.ziontalk.com/api/send_template_message/', { method: 'POST', headers: { 'Authorization': 'Basic ' + btoa('sua_api_key:') }, body: formData } ); const data = await response.json(); console.log(data);
Respostas da API
Veja abaixo o formato de resposta da API.
# Resposta sem corpo, apenas o status HTTP 201
Tratamento de Erros
Quando ocorre um erro, a API retorna uma string de texto simples descrevendo o problema.
Importante
Sempre verifique o código de status HTTP da resposta. Se for diferente de 201,
trate o corpo da resposta como texto simples, não como JSON.
Suporte
Precisa de ajuda com a integração? Nossa equipe está pronta para auxiliar você.
Entre em contato
Para tirar dúvidas técnicas sobre a integração, entre em contato com nossa equipe de suporte.