Pular para o conteúdo principal

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.

dica

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
informação

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:

  • type
  • to
  • template.name
  • template.language
  • invoice.customer_name
  • invoice.due_date
  • invoice.amount
  • invoice.contract_id
  • invoice.pdf_url

Pelo menos um destes campos deve existir:

  • invoice.pix_code
  • invoice.digitable_line
aviso

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.