Primeiro Envio

Três chamadas: obter o token, descobrir os IDs e enviar.

Antes de começar

Estes itens são feitos na interface por um administrador da empresa:

  • Uma aplicação criada, com o client_id e o client_secret guardados.
  • Um template ativo no canal que você vai usar.
  • Para e-mail: um domínio verificado e um remetente.

Ambientes

Faça a integração e os testes em homologação. Em produção todo envio é real e cobrado.

AmbienteURL base ($NOTIFICA_URL)
Homologaçãohttps://notifica.hom.bry.com.br/api/v1
Produçãohttps://notifica.bry.com.br/api/v1
export NOTIFICA_URL="https://notifica.hom.bry.com.br/api/v1"

1. Obter o token

curl -X POST "$NOTIFICA_URL/auth/token" \
  -H "Content-Type: application/json" \
  -d '{"client_id": "SEU_CLIENT_ID", "client_secret": "SEU_CLIENT_SECRET"}'
{
  "access_token": "eyJhbGciOi...",
  "refresh_token": "eyJhbGciOi...",
  "token_type": "Bearer",
  "expires_in": 300
}

Guarde o token e reutilize até perto de expires_in. Não peça um token por envio: a rota de token aceita 10 pedidos por minuto.

2. Descobrir os IDs

curl "$NOTIFICA_URL/templates?channel=email&status=active" \
  -H "Authorization: Bearer $TOKEN"

curl "$NOTIFICA_URL/senders" \
  -H "Authorization: Bearer $TOKEN"

Anote o id do template e o id do remetente. Eles mudam pouco: seu sistema pode guardá-los em configuração.

3. Enviar

curl -X POST "$NOTIFICA_URL/notifications" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: contrato-2024-118-aviso-1" \
  -d '{
    "name": "Aviso de vencimento",
    "contacts": [
      { "name": "Maria Souza", "email": "[email protected]",
        "variables": { "contrato": "2024-118" } }
    ],
    "channels": [
      { "channel": "email", "template_id": 7, "sender_id": 3 }
    ]
  }'
{
  "batch_id": "01J9Z3K7Q8...",
  "total": 1,
  "charged": 1,
  "rejected": 0,
  "status": "processing"
}
CampoSignificado
batch_idIdentificador do lote. Guarde para localizar o envio na interface.
totalContatos recebidos: os informados em contacts mais os membros dos grupos.
chargedMensagens cobradas, contadas por canal e destino. Um contato num envio por e-mail conta 2.
rejectedContatos repetidos (mesmo telefone e mesmo e-mail) que ficaram fora do lote.
statusNo aceite é sempre processing.

Por isso total - rejected nem sempre é igual a charged.

📘

202 quer dizer aceito, não entregue

A entrega acontece em seguida, de forma assíncrona. Acompanhe o envio pela interface usando o batch_id.

🚧

Repetindo um envio

Sempre envie Idempotency-Key. Se a requisição falhar no meio (timeout, 500), repita com a mesma chave: em até 24 horas, a API devolve a resposta original em vez de criar e cobrar outro lote.