Documentation Index
Fetch the complete documentation index at: https://docs.hadem.chat/llms.txt
Use this file to discover all available pages before exploring further.
POST https://api.hadem.com.br/v1/channels/:channelId/messages
Autenticação
Authorization: Bearer hm_live_xxxxxxxxxxxx
Não sabe onde gerar o token? Veja Getting Started.
Exemplos
curl -X POST "https://api.hadem.com.br/v1/channels/ch_123/messages" \
-H "Authorization: Bearer hm_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"contact": { "value": "5511999999999", "type": "phone" },
"message": {
"type": "text",
"text": { "value": "Olá! Como posso ajudar?" }
}
}'
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|
value | string | ✓ | Número de telefone ou e-mail do contato |
type | "phone" | "email" | — | Tipo do identificador. Padrão: "phone" |
name | string | — | Nome do contato |
message
| Campo | Tipo | Obrigatório | Descrição |
|---|
type | "text" | "template" | "media" | ✓ | Tipo da mensagem |
flowId | string | — | Associa o envio a um flow existente na conta |
closeConversation | boolean | — | Encerra a conversa aberta antes de enviar |
Tipos de mensagem
Texto
{
"contact": { "value": "5511999999999", "type": "phone" },
"message": {
"type": "text",
"text": { "value": "Sua mensagem aqui." }
}
}
Template
{
"contact": { "value": "5511999999999", "type": "phone" },
"message": {
"type": "template",
"template": {
"name": "nome_do_template",
"variables": [
{ "key": "name", "value": "Maria" }
]
}
}
}
Mídia
{
"contact": { "value": "5511999999999", "type": "phone" },
"message": {
"type": "media",
"media": {
"mediaType": "image",
"mimetype": "image/png",
"filename": "imagem.png",
"caption": "Legenda opcional",
"base64": "<conteúdo em base64>"
}
}
}
base64 e mediaUrl são alternativos — envie pelo menos um dos dois.
Valores aceitos em mediaType: image, video, document, audio.
Resposta
{
"requestId": "7ce15b8a-76ec-4acd-b5d5-0b0f9a6ce8f4"
}
| Campo | Tipo | Descrição |
|---|
requestId | string | Identificador do envio. Use nos logs para rastrear a entrega. |
Erros
| Status | Descrição |
|---|
400 Bad Request | Body inválido ou campos incompatíveis |
401 Unauthorized | Token ausente ou inválido |
403 Forbidden | Token sem permissão para enviar mensagens |
404 Not Found | Canal não encontrado ou não pertence à conta |
429 Too Many Requests | Limite de requisições atingido |
5xx | Erro interno |
{
"statusCode": 404,
"error": "Not Found",
"message": "Channel not found",
"requestId": "7ce15b8a-76ec-4acd-b5d5-0b0f9a6ce8f4"
}