Crie uma chave
Abra Canais → API para desenvolvedores e crie uma credencial identificada para o seu servidor.
Envie mensagens, sincronize conversas e receba eventos dos canais usando o mesmo motor de mensagens da ConvoClerk.
https://app.convoclerk.com/apiAbra Canais → API para desenvolvedores e crie uma credencial identificada para o seu servidor.
Chame GET /v1/channels e escolha o ID do canal usado pela integração.
Envie com uma chave idempotente, consulte cursores ou configure webhooks assinados por canal.
Escolha um canal para ver apenas as ações compatíveis. O explorador vem do contrato do backend, então requisições, exemplos de mídia e limitações permanecem alinhados com a API.
Mensagens oficiais do WhatsApp Business pela Cloud API da Meta.
/v1/channel-typesRetorna a matriz de recursos usada para validar ações específicas de cada canal.
channels:readA chave fica apenas na memória desta página. O explorador envia credenciais somente para a origem publicada acima.
curl --request GET \ --url 'https://app.convoclerk.com/api/v1/channel-types' \ --header 'Authorization: Bearer cc_your_api_key'
Execute a requisição para ver status, duração e corpo da resposta.
Envie Authorization: Bearer cc_… em todas as requisições. Escolha apenas os escopos necessários, mantenha as chaves no servidor e visualize ou revogue chaves ativas como administrador da empresa.
Informe client_message_id no envio. Repetir a mesma conversa e UUID devolve a mensagem original sem enviar uma duplicata.
Use after com poll_cursor para sincronização ativa ou configure webhooks message.received e message.sent em cada canal.
Cada canal entrega eventos separadamente. As requisições têm timeout curto, novas tentativas com espera exponencial e nunca bloqueiam o processamento das mensagens.
Calcule HMAC-SHA256 de <timestamp>.<corpo bruto> com o segredo do canal e compare com x-convoclerk-signature.
const expected = hmacSha256(secret, timestamp + "." + rawBody);
timingSafeEqual("v1=" + expected, signatureHeader);Use o ID do evento para evitar duplicatas. Os tipos são message.received, message.sent e webhook.test.
{
"id": "evt_uuid",
"type": "message.received",
"api_version": "2026-08-14",
"created_at": "2026-08-14T12:00:00Z",
"data": { "channel": {}, "conversation": {}, "message": {} }
}