CRPRO HubEntrar no painel

Quickstart

Este guia leva de zero até a primeira mensagem enviada pela API: criar uma chave, fazer a primeira chamada autenticada e enviar um texto por um canal.

Crie a chave

Toda chamada à API precisa de uma credencial. Crie uma chave de API em /painel/chaves. O valor hub_pk_... aparece uma única vez, no momento da criação — se ele se perder, a única saída é revogar a chave e criar outra. Guarde-o num cofre de segredos, nunca em texto plano no repositório.

Toda requisição autenticada por chave envia esse valor no header Authorization, como Bearer hub_pk_....

Primeira requisição

Com a chave em mãos, a chamada mais simples para confirmar que tudo está funcionando é listar os canais da organização:

Requisição
curl https://crprohub.com/api/v1/channels \
  -H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL"
Resposta
{
  "data": {
    "channels": [
      {
        "id": "9f6a9c1e-2f3d-4a5b-8c7d-1e2f3a4b5c6d",
        "name": "Atendimento",
        "external_id": null,
        "type": "whatsapp",
        "status": "active",
        "waba_id": "109876543210987",
        "phone_number_id": "123456789012345",
        "display_phone_number": "+55 21 99999-9999",
        "verified_name": "Minha Empresa",
        "quality_rating": "GREEN",
        "coexistence": false,
        "subscribed_ok": true,
        "created_at": "2026-08-01T12:00:00.000Z",
        "updated_at": "2026-08-20T09:30:00.000Z"
      }
    ]
  }
}

A resposta vem envelopada em {"data": ...}. Se a organização ainda não tem nenhum canal, o array channels volta vazio — crie um canal no painel antes de seguir para o próximo passo.

Envie a primeira mensagem

Enviar uma mensagem exige um header a mais: Idempotency-Key, com um valor novo (um UUID serve bem) a cada envio distinto.

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"
  }
}

Repetir a mesma Idempotency-Key com o mesmo corpo devolve o resultado da primeira chamada, em vez de enviar a mensagem duas vezes — é seguro repetir a requisição depois de um timeout ou de uma falha de rede sem risco de duplicar o envio. A resposta é 202: a mensagem foi aceita e enfileirada para a Meta, ainda não entregue.

Receba a resposta do cliente

O estado final do envio — entregue, lida, falhou — e qualquer mensagem que o cliente responder chegam de forma assíncrona, por webhook. Configure um endpoint para recebê-los na página de webhooks.

O token do canal (hub_ch_...) também autentica o envio de mensagem, como alternativa à chave de API. Ele serve só para o mesmo canal que o emitiu e nunca autoriza enviar por outro canal da organização.