Desenvolva a partir do Flowella, com o seu próprio código.
Quando as ferramentas «no-code» não cobrem determinada funcionalidade, a API REST da Flowella e os webhooks de saída tratam disso. Recorra à API para enviar mensagens pelo WhatsApp, gerir contactos e cancelamentos de subscrição, e obter dados analíticos. Subscreva os webhooks para reagir a mensagens, entregas, cancelamentos de subscrição, contactos e alterações de modelos à medida que ocorrem, sem necessidade de sondagem.
Classificado com 5/5 no HubSpot Marketplace (abre num novo separador)
- URL de base
- api.flowella.io/v1
- Autenticação
- Uma chave de portador que começa por «flo_»
- Eventos de webhook
- 12, cada um assinado com HMAC-SHA256
- Entrega
- 3 tentativas, um intervalo de 10 segundos
Liga-lhe e deixa que ele te ligue de volta.
Duas direções, um motor. A tua aplicação recorre à API REST para executar as tarefas, e a Flowella envia eventos de webhook assinados para o teu ponto de extremidade assim que algo acontece, para que possas reagir em vez de teres de fazer consultas contínuas. Envia um modelo e, em seguida, acompanha os eventos.
Colocado na fila num piscar de olhos. Seguem-se os eventos.
Envie o pedido e, em seguida, veja os eventos a serem devolvidos. Colocado na fila num piscar de olhos. Seguem-se os eventos. A mesma chave, o mesmo trabalho. Ninguém a recebe duas vezes. Uma resposta apresenta os IDs, não as palavras. Não há resposta? Três tentativas no total e depois desisto.
POSThttps://api.flowella.io/v1/templates/send
Cabeçalhos
- Authorization
Bearer flo_••••••••••••A sua chave de API, oculta- Content-Type
application/json- Idempotency-Key
renewal-2026-10-16-1Repetir esta chave no prazo de sete dias devolve o mesmo trabalho.
Corpo
{
"templateId": "cltemplate00000001",
"whatsappChannelId": "clchannel000000001",
"recipients": [
{
"phone": "+447700900123",
"bodyParameters": ["Sam"]
}
]
}
{
"templateId": "cltemplate00000001",
"whatsappChannelId": "clchannel000000001",
"recipients": [
{
"phone": "+447700900123",
"bodyParameters": ["Maximiliana-Wolfgang"]
}
]
}
{
"id": "v1ts-3f9a07c2b1d4e6a8",
"status": "accepted"
}
{
"id": "v1ts-3f9a07c2b1d4e6a8",
"status": "accepted"
}
Em fila. O Flowella envia-o em segundo plano.
Em fila. O Flowella envia-o em segundo plano. A mesma chave, o mesmo trabalho: nada foi enviado duas vezes. Aceite, mas Maximiliana-Wolfgang cancelou a subscrição neste canal, por isso o Flowella não o envia.Hoje
Entregas
POSThttps://example.com/webhooks/flowella
- Content-Type
application/json- X-Flowella-Signature
5c2e91…a07f3bVálida
{
"id": "evt_9a4f1d06c3e84b27a5d9e2b70c6f8d14",
"type": "message.read",
"created_at": "2026-10-16T09:14:21.000Z",
"payload_version": "1",
"data": { … }
}
{
"id": "evt_5b0e2c7d91f64a38b2c6d0e4f7a19c53",
"type": "message.delivered",
"created_at": "2026-10-16T09:14:03.000Z",
"payload_version": "1",
"data": { … }
}
Em data: o messageId da mensagem.
Fora de data: o número de telefone e o texto da mensagem.
Em data: messageId, conversationId, contactId, direction, type e metaMessageId.
Fora de data: o número de telefone e o texto da mensagem.
Em data: o messageId da mensagem.
Em data: o número de telefone e o motivo.
Flowella aguarda até 10 segundos por um código 2xx e tenta cada envio, no máximo, 3 vezes, com intervalos de 1 e 2 segundos.
message.sent, message.delivered e message.read chegaram ao seu endpoint, todos assinados.
Altere o nome se quiser e depois envie o pedido. A enviar o pedido. 202 Accepted: o Flowella colocou o envio em fila e devolveu logo um ID de trabalho. message.sent, message.delivered e message.read chegaram ao seu endpoint, todos assinados. A mesma Idempotency-Key, por isso o Flowella devolveu o mesmo trabalho e não enviou nada duas vezes. A resposta de Maximiliana-Wolfgang chegou como message.received: identificadores, direção e tipo, não as palavras. STOP cancelou a subscrição de Maximiliana-Wolfgang: chegou message.received e depois optout.created com o número de telefone e o motivo. O seu endpoint não responde, por isso o Flowella tenta de novo após 1 segundo e depois após 2. O Flowella parou após 3 tentativas. Volte a ligar o endpoint e envie com uma chave nova. O seu endpoint respondeu, por isso a entrega chegou numa nova tentativa. 202 Accepted, mas Maximiliana-Wolfgang cancelou a subscrição com STOP, por isso o Flowella não envia o template.Inscreva-se em qualquer um dos 12 eventos.
Selecione os eventos de que necessita em «Definições», «Webhooks». Cada um deles é enviado como um pedido POST assinado, com o seu próprio ID, o seu tipo, a data e hora em que ocorreu e os respetivos dados.
Mensagens
message.received- Chega uma mensagem do WhatsApp de um contacto
message.sent- Flowella aceitou a tua mensagem e enviou-a à Meta
message.delivered- A Meta confirmou a entrega no dispositivo do destinatário
message.read- O destinatário abriu a mensagem
message.failed- O Meta devolveu um erro para a mensagem
Conversas
conversation.opened- Uma conversa passou para o estado «aberta»
conversation.closed- Foi encerrada uma conversa
Exclusões
optout.created- Um contacto cancelou a subscrição de um canal
Modelos
template.status_updated- A Meta alterou o estado de um modelo: aprovado, rejeitado, suspenso ou desativado
Contactos
contact.created- Foi criado um contacto
contact.updated- Um contacto foi atualizado
contact.deleted- Foi eliminado um contacto
Além disso, o webhook.test, enviado apenas quando clicar em «Enviar teste».
Enviar, gerir e elaborar relatórios.
Uma API REST v1 simples, disponível em api.flowella.io/v1, com autenticação por chave de portador e comportamento previsível.
-
Enviar mensagens e modelos
Envie uma mensagem de texto pelo WhatsApp ou coloque um modelo na fila para vários destinatários numa única solicitação. Adicione o parâmetro «throttlePerHour» e a Flowella irá regular o envio em massa por si.
-
Contactos e exclusão de listas de distribuição
Criar ou atualizar contactos, percorrê-los e definir ou anular a opção de exclusão do WhatsApp de um contacto num canal.
-
Conversas e análises
Enumere as conversas e os modelos e inclua as análises das mensagens enviadas nos seus próprios relatórios.
-
Teclas que controlas
Os proprietários e administradores criam chaves em «Definições», «Chaves API». Cada uma começa por «flo_», é apresentada uma única vez e pode ser limitada aos âmbitos necessários.
-
Pode tentar novamente sem problemas
O envio de uma chave de idempotência com um envio de modelo e uma repetição no prazo de sete dias devolve o mesmo trabalho, pelo que o tempo limite nunca faz com que uma mensagem seja enviada duas vezes a ninguém.
-
Primeiro, sem código; código quando for necessário
Os fluxos de trabalho da HubSpot já enviam modelos com até 20 variáveis por contacto, sem necessidade de código. Recorra à API para o que não é possível enviar, como códigos de uso único e botões de link específicos para cada contacto.
Nas palavras dos nossos clientes.
Uma plataforma de interação excecional que transformou a nossa taxa de conversão de alunos, com um aumento de 160% nas candidaturas no próprio dia e taxas de resposta no WhatsApp de 90%.
Peter HudsonDiretor de Admissões, Marca e Inovação do Cliente
Uma ferramenta revolucionária para campanhas de doação que permite uma interação personalizada no WhatsApp, com automação integrada e taxas de conclusão significativamente superiores.
Lawrence Tribe-EndtDiretor Comercial, Countryside Alliance
Respostas diretas.
As perguntas que os programadores fazem. Se a sua não estiver aqui, entre em contacto connosco.
Ler a referência da APIAPI e webhooks
Como é que me autentico?
Com uma chave de portador válida para toda a organização no cabeçalho «Authorization». Os proprietários e administradores criam as chaves em «Definições», «Chaves API». Cada uma começa por «flo_» e é apresentada apenas uma vez; por isso, guarde-a em segurança e substitua-a quando os colegas de equipa saírem da organização.
O que é que a API pode fazer?
Envie mensagens e modelos do WhatsApp, incluindo códigos de uso único e botões de ligação específicos para cada contacto, crie e atualize contactos, defina ou anule opções de exclusão, visualize uma lista de conversas e modelos e obtenha análises das mensagens enviadas. A lista de pontos de extremidade provém da especificação OpenAPI, que pode ser importada diretamente para o Postman ou para um gerador de código.
Posso enviar códigos únicos ou botões com links específicos para cada contacto?
Sim, através da API, e apenas por essa via. Um botão de «copiar código» necessita do seu código em cada envio, e apenas a API define um botão de ligação por pessoa: a partir de um fluxo de trabalho do HubSpot, todos recebem o único link de recurso do modelo. Para enviar um link específico por contacto a partir da HubSpot, coloque-o numa variável de corpo, onde o WhatsApp o torna clicável. Os códigos podem ter até 15 caracteres, e o envio do mesmo modelo para o mesmo número num intervalo de 15 segundos é ignorado. A API responde com o código 202 e envia de imediato, a menos que defina o parâmetro «scheduledAt».
O que devo saber antes da minha primeira chamada?
O URL base é https://api.flowella.io/v1. As listas utilizam paginação por cursor com um limite de 1 a 100, os erros partilham um único envelope com um código estável e cada organização está sujeita a um limite de requisições, com um código de erro 429 e um cabeçalho «Retry-After» caso a velocidade de requisição seja excessiva. Introduza os números de telefone no formato E.164.
Posso efetuar grandes envios em massa?
Sim. O POST /v1/templates/send coloca o envio em fila e responde com o código de estado 202 Accepted, acompanhado de um ID de tarefa. Adicione o parâmetro throttlePerHour e o Flowella regula o ritmo de entrega do lado do servidor. Adicione uma Idempotency-Key e, se a operação for repetida no prazo de sete dias, será devolvida a mesma tarefa, em vez de ser enviada novamente.
Como é que verifico se um webhook é genuíno?
Cada entrega inclui o X-Flowella-Signature, um resumo hexadecimal HMAC-SHA256 do corpo bruto, gerado com o seu segredo de assinatura. Calcule o mesmo resumo a partir dos bytes brutos, antes de qualquer análise JSON, e compare. Durante uma rotação de segredos, o X-Flowella-Signature-Previous inclui o resumo gerado com o segredo antigo.
E se o meu ponto final estiver em baixo?
O Flowella aguarda até 10 segundos por um código de resposta 2xx e tenta cada envio, no máximo, 3 vezes, com intervalos de 1 e 2 segundos; por isso, responda rapidamente e trate do resto depois. Em «Definições», a secção «Webhooks» apresenta uma lista dos envios recentes de cada ponto de extremidade.
Como é que evito processar duplicados?
Uma nova tentativa pode entregar o mesmo evento duas vezes. Cada entrega inclui o ID do evento no nível superior, que é o mesmo em cada nova tentativa; por isso, mantenha um registo temporário dos IDs que já tratou e considere as repetições como operações sem efeito.
A função `message.received` inclui o texto da mensagem?
Não. Contém os identificadores da mensagem, da conversa e do contacto, juntamente com a direção e o tipo, mas não o número de telefone nem o conteúdo da mensagem, e a API não dispõe de nenhuma chamada para ler uma única mensagem. O «optout.created» contém, sim, o número de telefone e o motivo.
Desenvolva a partir do mesmo motor, à sua maneira.
Comece pelas ferramentas sem código e, depois, recorra à API e aos webhooks quando a sua pilha de tecnologias precisar de mais funcionalidades. A configuração do Flowella demora cerca de 30 minutos, com um período de teste gratuito de 14 dias e sem necessidade de cartão de crédito.
Marque uma demonstração do Flowella · 30 minutos no Teams