import requests
url = "https://pombo.digital/api/integrations/v1/notifications/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)curl --request GET \
--url https://pombo.digital/api/integrations/v1/notifications/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://pombo.digital/api/integrations/v1/notifications/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"notification_id": "PBD_NOT_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"organization_id": "PBD_ORG_01J8A1B2C3D4E5F6G7H8J9K0LM",
"template_id": "PBD_TPL_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"channel": "WHATSAPP",
"recipient_full_name": "Maria Silva",
"recipient_tax_id": "12345678901",
"recipient_tax_id_type": "CPF",
"recipient_phone": "+5511999998888",
"recipient_email": null,
"contact_id": "PBD_CNT_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"line_id": "PBD_WALN_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"message": "Prezada Maria, consta débito de R$ 1.200,00.",
"message_format": "TEXT",
"notification_status": "PENDING",
"notification_delivery_status": "READ",
"sender": {
"name": "Black101 Cobranças LTDA",
"tax_id": "12345678000199",
"tax_id_type": "CNPJ",
"contact_phone": null,
"contact_email": null
},
"sender_phone": "5511952134898",
"sender_email": null,
"created_by_user_id": "PBD_APIKEY_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"idempotency_key": "cobranca-2026-08-31-0002",
"created_at": "2026-08-27T14:03:11.482Z",
"attachments": [],
"events": [
{
"event_id": "PBD_EVT_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"event_type": "enqueued",
"occurred_at": "2026-08-27T14:03:11.482Z",
"received_at": "2026-08-27T14:03:11.610Z",
"delivery_decline_reason": null,
"attestation": null
},
{
"event_id": "PBD_EVT_01J9Z2Q8XK3M7WPTV6RB4CYH0P",
"event_type": "sent",
"occurred_at": "2026-08-27T14:03:13.100Z",
"received_at": "2026-08-27T14:03:13.240Z",
"delivery_decline_reason": null,
"attestation": {
"attestation_id": "PBD_ATT_01J9Z2Q8XK3M7WPTV6RB4CYH0P",
"certified_at": "2026-08-27T14:03:13.510Z",
"hash_algorithm": "SHA-256",
"hash_encoding": "hex",
"proof_hash": "7d5e3f1a8c6d2b0e9f7a5c3d1e8f6b4a2c0d9e7f5a3b1c8d6e4f2a0b9c7d5e3f"
}
},
{
"event_id": "PBD_EVT_01J9Z2Q8XK3M7WPTV6RB4CYH0Q",
"event_type": "delivered",
"occurred_at": "2026-08-27T14:03:19.870Z",
"received_at": "2026-08-27T14:03:20.010Z",
"delivery_decline_reason": null,
"attestation": {
"attestation_id": "PBD_ATT_01J9Z2Q8XK3M7WPTV6RB4CYH0Q",
"certified_at": "2026-08-27T14:03:20.330Z",
"hash_algorithm": "SHA-256",
"hash_encoding": "hex",
"proof_hash": "1c8d6e4f2a0b9c7d5e3f1a8c6d2b0e9f7a5c3d1e8f6b4a2c0d9e7f5a3b1c8d6e"
}
},
{
"event_id": "PBD_EVT_01J9Z2Q8XK3M7WPTV6RB4CYH0R",
"event_type": "read",
"occurred_at": "2026-08-27T14:07:42.115Z",
"received_at": "2026-08-27T14:07:42.260Z",
"delivery_decline_reason": null,
"attestation": {
"attestation_id": "PBD_ATT_01J9Z2Q8XK3M7WPTV6RB4CYH0R",
"certified_at": "2026-08-27T14:07:42.580Z",
"hash_algorithm": "SHA-256",
"hash_encoding": "hex",
"proof_hash": "9e7f5a3b1c8d6e4f2a0b9c7d5e3f1a8c6d2b0e9f7a5c3d1e8f6b4a2c0d9e7f5a"
}
}
]
}Consulta uma notificação.
Devolve a notificação com o status de entrega atual, os anexos e o histórico de eventos certificados.
Como não há webhooks, esta é a forma de acompanhar uma entrega.
Para saber se a mensagem chegou, leia notification_delivery_status. O campo notification_status descreve o processamento interno e não acompanha a entrega: uma mensagem já lida foi observada com notification_delivery_status igual a READ e notification_status ainda igual a PENDING. Ramificar pelo campo errado faz uma mensagem lida ser reportada como não entregue.
notification_delivery_status nunca retrocede, e FAILED é terminal.
import requests
url = "https://pombo.digital/api/integrations/v1/notifications/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)curl --request GET \
--url https://pombo.digital/api/integrations/v1/notifications/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://pombo.digital/api/integrations/v1/notifications/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"notification_id": "PBD_NOT_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"organization_id": "PBD_ORG_01J8A1B2C3D4E5F6G7H8J9K0LM",
"template_id": "PBD_TPL_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"channel": "WHATSAPP",
"recipient_full_name": "Maria Silva",
"recipient_tax_id": "12345678901",
"recipient_tax_id_type": "CPF",
"recipient_phone": "+5511999998888",
"recipient_email": null,
"contact_id": "PBD_CNT_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"line_id": "PBD_WALN_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"message": "Prezada Maria, consta débito de R$ 1.200,00.",
"message_format": "TEXT",
"notification_status": "PENDING",
"notification_delivery_status": "READ",
"sender": {
"name": "Black101 Cobranças LTDA",
"tax_id": "12345678000199",
"tax_id_type": "CNPJ",
"contact_phone": null,
"contact_email": null
},
"sender_phone": "5511952134898",
"sender_email": null,
"created_by_user_id": "PBD_APIKEY_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"idempotency_key": "cobranca-2026-08-31-0002",
"created_at": "2026-08-27T14:03:11.482Z",
"attachments": [],
"events": [
{
"event_id": "PBD_EVT_01J9Z2Q8XK3M7WPTV6RB4CYH0N",
"event_type": "enqueued",
"occurred_at": "2026-08-27T14:03:11.482Z",
"received_at": "2026-08-27T14:03:11.610Z",
"delivery_decline_reason": null,
"attestation": null
},
{
"event_id": "PBD_EVT_01J9Z2Q8XK3M7WPTV6RB4CYH0P",
"event_type": "sent",
"occurred_at": "2026-08-27T14:03:13.100Z",
"received_at": "2026-08-27T14:03:13.240Z",
"delivery_decline_reason": null,
"attestation": {
"attestation_id": "PBD_ATT_01J9Z2Q8XK3M7WPTV6RB4CYH0P",
"certified_at": "2026-08-27T14:03:13.510Z",
"hash_algorithm": "SHA-256",
"hash_encoding": "hex",
"proof_hash": "7d5e3f1a8c6d2b0e9f7a5c3d1e8f6b4a2c0d9e7f5a3b1c8d6e4f2a0b9c7d5e3f"
}
},
{
"event_id": "PBD_EVT_01J9Z2Q8XK3M7WPTV6RB4CYH0Q",
"event_type": "delivered",
"occurred_at": "2026-08-27T14:03:19.870Z",
"received_at": "2026-08-27T14:03:20.010Z",
"delivery_decline_reason": null,
"attestation": {
"attestation_id": "PBD_ATT_01J9Z2Q8XK3M7WPTV6RB4CYH0Q",
"certified_at": "2026-08-27T14:03:20.330Z",
"hash_algorithm": "SHA-256",
"hash_encoding": "hex",
"proof_hash": "1c8d6e4f2a0b9c7d5e3f1a8c6d2b0e9f7a5c3d1e8f6b4a2c0d9e7f5a3b1c8d6e"
}
},
{
"event_id": "PBD_EVT_01J9Z2Q8XK3M7WPTV6RB4CYH0R",
"event_type": "read",
"occurred_at": "2026-08-27T14:07:42.115Z",
"received_at": "2026-08-27T14:07:42.260Z",
"delivery_decline_reason": null,
"attestation": {
"attestation_id": "PBD_ATT_01J9Z2Q8XK3M7WPTV6RB4CYH0R",
"certified_at": "2026-08-27T14:07:42.580Z",
"hash_algorithm": "SHA-256",
"hash_encoding": "hex",
"proof_hash": "9e7f5a3b1c8d6e4f2a0b9c7d5e3f1a8c6d2b0e9f7a5c3d1e8f6b4a2c0d9e7f5a"
}
}
]
}Authorizations
Sua credencial de API no cabeçalho Authorization: Bearer sk_live_.... Crie e revogue credenciais no painel, em Conta → API Keys. O segredo aparece uma única vez, na criação.
A credencial identifica a organização: organization_id não é aceito em nenhuma requisição.
Path Parameters
O identificador da notificação.
^PBD_NOT_[0-9A-HJKMNP-TV-Z]{26}$"PBD_NOT_01J9Z2Q8XK3M7WPTV6RB4CYH0N"
Response
A notificação.
A notificação devolvida pela consulta, com anexos e eventos certificados.
A organização dona da conta e do saldo. Não confunda com sender, que é em nome de quem a notificação sai.
WHATSAPP, EMAIL CPF, CNPJ O contato do destinatário no Pombo. Os contatos são unificados pelo tax_id, então o mesmo CPF devolve o mesmo contact_id nos dois canais. É por isso que dados divergentes produzem 409 CONTACT_CONFLICT.
"PBD_CNT_01J9Z2Q8XK3M7WPTV6RB4CYH0N"
A linha de WhatsApp usada no envio. null em EMAIL.
"PBD_WALN_01J9Z2Q8XK3M7WPTV6RB4CYH0N"
As variáveis exatamente como você as enviou, devolvidas para que o registro se descreva sozinho.
{ "{{1}}": "Maria" }
A mensagem já renderizada, com parameters aplicados ao modelo. É o artefato que o carimbo do tempo cobre. Existe só na resposta: não há campo message de envio.
O resumo SHA-256 da mensagem renderizada, em hexadecimal. É a impressão digital do texto que consta no laudo: o equivalente, para a mensagem, do que hash é para o anexo.
"3b1c8d6e4f2a0b9c7d5e3f1a8c6d2b0e9f7a5c3d1e8f6b4a2c0d9e7f5a3b1c8d"
Se message é HTML ou texto simples.
O processamento interno no Pombo. Não indica entrega. Uma mensagem já lida foi observada aqui como PENDING. Para saber se a pessoa recebeu, use notification_delivery_status.
DRAFT, PENDING, PROCESSING, COMPLETED, FAILED O campo que responde se a mensagem chegou. Caminho normal: PENDING → ENQUEUED → SENT → DELIVERED → READ.
No envio, um EMAIL foi observado em ENQUEUED e um WHATSAPP em SENT.
Nunca retrocede, e FAILED é terminal. Você pode não observar todos os estados intermediários. Em e-mail não espere READ.
PENDING, ENQUEUED, SENT, DELIVERED, READ, FAILED Quem aparece como remetente da notificação. Permite enviar em nome próprio ou em nome de um cliente. Em ambos os casos o Pombo mantém o registro de qual credencial emitiu.
Não existe remetente padrão da organização nesta API: o sender é declarado em cada envio.
Hide child attributes
Hide child attributes
Razão social ou nome do remetente. No máximo 200 caracteres: acima disso a chamada é recusada com 400 INVALID_SENDER e a mensagem sender.name must be at most 200 characters.
Só texto simples. Os caracteres <, > e " e os caracteres de controle (quebras de linha incluídas) são recusados com 400 INVALID_SENDER e a mensagem sender.name must be plain text. O nome é reproduzido literalmente no rodapé do e-mail e no laudo, e uma quebra de linha forjaria uma segunda linha de rodapé.
1 - 200CPF (11 dígitos) ou CNPJ (14 dígitos), só dígitos.
A quantidade de dígitos não basta: o documento é conferido pelo dígito verificador (MOD-11) e precisa corresponder ao tax_id_type declarado: um CNPJ declarado como CPF é recusado. A recusa é 400 INVALID_SENDER, com a mensagem sender.tax_id must be a valid CPF ou sender.tax_id must be a valid CNPJ.
^([0-9]{11}|[0-9]{14})$CPF, CNPJ Opcional. O telefone para onde o destinatário deve responder, impresso no rodapé da mensagem. Não é o número de origem: esse é sender_phone, e o Pombo é quem o resolve.
Formato internacional, começando por +, com 10 a 15 dígitos. Fora desse formato a chamada é recusada com 400 INVALID_SENDER e a mensagem sender.contact_phone must be in format +CODE_PHONE with 10-15 digits (e.g., +5511999998888).
Ausente, a linha de contato do rodapé é omitida por inteiro: não há queda para o telefone da organização.
^\+[0-9]{10,15}$"+5511999998888"
Opcional. Devolvido na resposta da notificação.
O número de origem do WhatsApp, resolvido pelo Pombo a partir do pool de linhas. null em EMAIL. É o endereço de onde a mensagem realmente saiu, e é o que vai certificado no laudo. Não é sender.contact_phone, que é para onde o destinatário responde.
"5511952134898"
O endereço de origem do e-mail, resolvido pelo Pombo. null em WHATSAPP. É o endereço de onde a mensagem realmente saiu, e é o que vai certificado no laudo. Não é sender.contact_email, que é para onde o destinatário responde.
Se a sua organização não tem endereço próprio verificado (o caso comum), a mensagem sai do endereço compartilhado do Pombo, e é ele que aparece aqui.
"ola@pombo.digital"
O tipo de autor do envio, que qualifica created_by_user_id.
O nome engana. Quando o envio parte de uma credencial de API, este campo traz o identificador da credencial, PBD_APIKEY_..., e não um identificador de usuário.
"PBD_APIKEY_01J9Z2Q8XK3M7WPTV6RB4CYH0N"
A chave que você enviou no cabeçalho Idempotency-Key, devolvida aqui para que o registro se descreva sozinho. Só existe na resposta: no envio a chave vai no cabeçalho, nunca no corpo.
O lote a que a notificação pertence, quando veio de um envio em massa.
O item do lote correspondente a esta notificação.
Quando o Pombo entregou a mensagem ao provedor. null até o envio ocorrer.
Quando o provedor confirmou a entrega ao destinatário. null enquanto não houver confirmação.
Quando o envio falhou em definitivo. null quando não houve falha.
Sempre null quando a chamada vem de uma credencial de API.
O nome da credencial que emitiu a notificação.
Os anexos da notificação, com a impressão digital de cada arquivo. Vazio quando o envio não levou anexo. São os mesmos que o envio já devolveu.
Hide child attributes
Hide child attributes
O identificador do arquivo guardado, opaco: é o mesmo que aparece no laudo, e serve para citar um anexo específico num chamado de suporte. Não há endpoint para resolvê-lo: tudo o que você precisa conferir já está nos campos ao lado.
O nome já normalizado pelo Pombo, e o nome que o destinatário recebeu. Compare com o que você enviou: pode não ser igual.
application/pdf, image/png, image/jpeg A impressão digital do arquivo, a mesma que consta no laudo.
"9f2c1d7a4b6e8f0c2a4d6e8f0b1c3d5e7f9a1b3c5d7e9f1a3b5c7d9e1f3a5b7c"
Literalmente SHA-256, com hífen e em maiúsculas. Compare a string exata.
"SHA-256"
"hex"
O histórico de eventos, em ordem. A cadeia observada é enqueued → sent → delivered → read.
Nem todo evento é certificado. Recebem atestação sent, delivered, read e failed. enqueued não: ele registra que a mensagem entrou na fila, e o laudo também o lista sem carimbo.
Hide child attributes
Hide child attributes
O evento. Cadeia observada: enqueued, sent, delivered, read.
"delivered"
Quando o evento aconteceu.
Quando o Pombo recebeu a notícia do evento.
O motivo da recusa, quando o evento é uma falha.
null enquanto o evento não foi certificado, e sempre null em enqueued, que não é um evento certificável.
A certificação é assíncrona e conclui depois de notification_delivery_status chegar ao estado final. Se você parar de consultar assim que o estado for terminal, pode ler null aqui. Continue consultando até a atestação aparecer, ou baixe o laudo em GET /notifications/{id}/report/download, que só é montado quando está completo.
Hide child attributes
Hide child attributes
"PBD_ATT_01J9Z2Q8XK3M7WPTV6RB4CYH0N"
"SHA-256"
"hex"

