Mensagens
/api/v1/channels/{id}/messagesLista o histórico de mensagens do canal, com paginação por cursor
A paginação é por cursor opaco, não por offset: passe o next_cursor da página anterior em cursor para avançar. next_cursor vem null quando não há mais páginas. Diferente do POST desta mesma rota, o token de canal (hub_ch_...) não funciona aqui — só sessão ou chave de API.
- Autenticação
- Sessão do painel, Chave de API
- Escopo
- logs:read
- Limite
- 120 requisições por minuto por organização e credencial
Parâmetros de caminho
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | UUID | Sim | Identificador do canal. |
Parâmetros de consulta
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| limit | número inteiro | Não | Quantidade de mensagens por página, de 1 a 100. Padrão 50. |
| cursor | string | Não | Cursor opaco devolvido como next_cursor na página anterior. Cursor inválido responde 400 INVALID_CURSOR. |
| direction | enum | Não | inbound ou outbound. Omitido, traz as duas direções. |
| status | string | Não | Filtra pelo status bruto da mensagem (ex.: sent, delivered, read, failed), até 80 caracteres. |
curl "https://crprohub.com/api/v1/channels/CHANNEL_UUID/messages?limit=20&direction=outbound" \ -H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL"
{
"data": {
"channel": {
"id": "9f6a9c1e-2f3d-4a5b-8c7d-1e2f3a4b5c6d",
"name": "Atendimento",
"display_phone_number": "+55 21 99999-9999"
},
"messages": [
{
"id": "1a2b3c4d-5e6f-4708-9abc-1234567890ab",
"wa_message_id": "wamid.EXEMPLO123",
"direction": "outbound",
"is_echo": false,
"peer_phone": "5521999999999",
"message_type": "text",
"body": "Olá",
"status": "delivered",
"error_code": null,
"created_at": "2026-08-21T12:00:00.000Z",
"updated_at": "2026-08-21T12:00:05.000Z"
}
],
"next_cursor": null
}
}/api/v1/channels/{id}/messagesEnvia uma mensagem pelo canal
A resposta é 202: a mensagem foi aceita e enfileirada para a Meta, não entregue. O estado final chega pelo webhook e pelo histórico do canal. O header Idempotency-Key é obrigatório — reenviar a mesma chave com o mesmo corpo devolve a resposta original em vez de enviar de novo; reenviar a mesma chave com um corpo diferente responde 409 IDEMPOTENCY_KEY_REUSED. O token hub_ch_... do canal também autentica esta chamada, mas nunca autoriza enviar por outro canal.
- Autenticação
- Sessão do painel, Chave de API, Token do canal
- Escopo
- messages:send
- Limite
- 60 por minuto por canal
Parâmetros de caminho
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | UUID | Sim | Identificador do canal. Um id de outra organização responde 404. |
Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| to | string | Sim | Número do destinatário com código do país, apenas dígitos. |
| type | enum | Sim | text, image, audio, video, document, sticker, location, contacts, reaction, interactive ou template. |
| text | objeto | Não | Obrigatório quando type é text. Formato { "body": "..." }. |
curl -X POST https://crprohub.com/api/v1/channels/CHANNEL_UUID/messages \
-H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL" \
-H "Idempotency-Key: 4a50df76-d6c5-49f3-90a4-13907579d924" \
-H "Content-Type: application/json" \
-d '{"to":"5521999999999","type":"text","text":{"body":"Olá"}}'{
"data": {
"message_id": "wamid.EXEMPLO123",
"status": "accepted"
}
}