CRPRO HubEntrar no painel

Mensagens

GET
/api/v1/channels/{id}/messages

Lista 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âmetroTipoObrigatórioDescrição
idUUIDSimIdentificador do canal.

Parâmetros de consulta

ParâmetroTipoObrigatórioDescrição
limitnúmero inteiroNãoQuantidade de mensagens por página, de 1 a 100. Padrão 50.
cursorstringNãoCursor opaco devolvido como next_cursor na página anterior. Cursor inválido responde 400 INVALID_CURSOR.
directionenumNãoinbound ou outbound. Omitido, traz as duas direções.
statusstringNãoFiltra pelo status bruto da mensagem (ex.: sent, delivered, read, failed), até 80 caracteres.
Requisição
curl "https://crprohub.com/api/v1/channels/CHANNEL_UUID/messages?limit=20&direction=outbound" \
  -H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL"
Resposta
{
  "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
  }
}
POST
/api/v1/channels/{id}/messages
Idempotency-Key obrigatória

Envia 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âmetroTipoObrigatórioDescrição
idUUIDSimIdentificador do canal. Um id de outra organização responde 404.

Corpo

ParâmetroTipoObrigatórioDescrição
tostringSimNúmero do destinatário com código do país, apenas dígitos.
typeenumSimtext, image, audio, video, document, sticker, location, contacts, reaction, interactive ou template.
textobjetoNãoObrigatório quando type é text. Formato { "body": "..." }.
Requisição
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á"}}'
Resposta
{
  "data": {
    "message_id": "wamid.EXEMPLO123",
    "status": "accepted"
  }
}