API FlashChat
Use a API FlashChat para integrações server-to-server, envio de mensagens, mídia, templates Meta e faturas interativas por canais configurados na plataforma.
Endpoint principal
POST /api/chat/sms/add/{webhook_token}
webhook_token é o UUID do canal que será usado para o envio.
Autenticação
A API usa credenciais client_id e client_secret.
As credenciais podem ser enviadas no corpo da requisição, query string ou headers:
client_id: flash_xxxxxxxxx
client_secret: secret_xxxxxxxxx
Exemplo com headers:
curl -X POST "https://seudominio.com/api/chat/sms/add/00000000-0000-0000-0000-000000000000" \
-H "Content-Type: application/json" \
-H "client_id: flash_xxxxxxxxx" \
-H "client_secret: secret_xxxxxxxxx" \
-d '{"to":"558288094777","message":"Olá!"}'
Segurança e ACL
Em Configurações > API Credentials, cada credencial pode ter controle por:
- Domínios permitidos.
- IPs ou CIDRs permitidos.
- Status ativo/inativo.
Listas vazias significam que não existe restrição naquele critério.
Para chamadas server-to-server, como SGP, prefira ACL por IP/CIDR. Essas chamadas normalmente não enviam Origin ou Referer.
Envio de mensagem simples
{
"to": "558288094777",
"message": "Olá! Esta é uma mensagem enviada pela API."
}
Quebra de mensagem
Use {{ quebra_de_linha }} para dividir um conteúdo em mensagens separadas:
{
"to": "558288094777",
"message": "Olá!{{ quebra_de_linha }}Segue sua segunda mensagem."
}
Envio de mídia
A API aceita mídia por URL pública quando o canal suporta esse formato.
Exemplo usando marcador de arquivo no texto:
{
"to": "558288094777",
"message": "Segue o arquivo solicitado:{{ quebra_de_linha }}{file=https://seudominio.com/arquivos/manual.pdf}"
}
Quando o campo da integração aceitar URL direta de mídia, também é possível informar apenas a URL pública:
https://seudominio.com/arquivos/manual.pdf
A URL precisa ser pública e acessível pelo servidor/canal de envio.
Templates Meta
Para WhatsApp Cloud API, envie templates aprovados pela Meta com nome, idioma e parâmetros já resolvidos.
{
"to": "558288094777",
"type": "template",
"template": {
"name": "invoice_request_user",
"language": "pt_BR",
"parameters": ["Cliente Nome", "31/05/2026", "R$ 93,79"]
}
}
Template com header de mídia
{
"to": "558288094777",
"type": "template",
"template": {
"name": "congrulations_user",
"language": "pt_BR",
"header": {
"type": "image",
"link": "https://seudominio.com/imagem.jpg"
},
"parameters": ["Cliente Nome"]
}
}
Fatura interativa Meta Payments BR
Quando o canal e o template suportam fatura interativa, envie um contrato de cobrança já resolvido.
Campos principais:
typetotemplate.nametemplate.languageinvoice.customer_nameinvoice.due_dateinvoice.amountinvoice.contract_idinvoice.pdf_url
Pelo menos um destes campos deve existir:
invoice.pix_codeinvoice.digitable_line
O contrato é estrito. Placeholders não resolvidos, como {fatura_id} ou {cliente}, geram erro e não são enviados ao cliente.
Respostas assíncronas
O endpoint valida o payload, registra a solicitação e enfileira o envio quando aplicável. Falhas de validação retornam erro antes do envio para o canal.
Erros comuns
Parameter format does not match format in the created template
Ocorre quando o template aprovado na Meta possui header, mas o payload não informa o header esperado.
Parameter value is not valid
Normalmente ocorre quando algum campo enviado à Meta contém valor inválido, vazio ou placeholder não resolvido.
Checklist para produção
- Criar credencial em Configurações > API Credentials.
- Configurar ACL por IP/CIDR quando a origem for server-to-server.
- Confirmar que o canal usado suporta o tipo de envio desejado.
- Confirmar que templates Meta estão aprovados.
- Enviar parâmetros já resolvidos.
- Usar URLs públicas para PDF, imagem, vídeo ou documento.