Pular para o conteúdo principal
O JusScore ainda não tem webhook na v1: enviar url_retorno responde 400. Acompanhe pelo GET.
As duas primeiras usam o mesmo contrato de protocolo, descrito abaixo.

Disparo

document é a placa (rastreamento) ou o CPF/CNPJ (buscador), com ou sem máscara. url_retorno é opcional; quando informado, deve ser https, num domínio público na porta 443, e não pode ser um endereço IP.
O signingSecret é por consulta e aparece uma única vez, neste 202. Guarde-o para verificar a assinatura do webhook.

Acompanhando pelo protocolo

GET /api/v1/consultas/{consulta}/{id} responde 200 em todos os estados — inclusive quando a consulta falhou, porque o protocolo existe e o desfecho vem em status: Consultar o protocolo é gratuito. Passados 30 dias, a consulta segue done, mas data vem null.
No buscador processual o resultado pode ter megabytes: o webhook leva os processos quando cabem em 64 KiB (dataIncluded: true) e só o resumo acima disso (dataIncluded: false, sem a chave lawsuits). A lista completa vem sempre por GET /api/v1/consultas/buscador-processual/{id}/processos, paginado. Com truncated: true, os processos guardados são uma amostra — a ordem do fornecedor não é cronológica.

Recebendo o webhook

Quando a consulta termina, enviamos um POST ao seu url_retorno:
Corpo do webhook
event é consulta.concluida, consulta.falhou ou consulta.expirada; em error e expired, o corpo traz error no lugar de data. A entrega é at-least-once: deduplique pelo id. Responda 2xx para confirmar; qualquer 4xx (exceto 408 e 429) encerra as tentativas na hora, e redirects não são seguidos. São até 6 tentativas ao longo de ~7h30; esgotadas, o resultado continua disponível pelo protocolo.

Verificando a assinatura

Assine ${timestamp}.${corpo} com o corpo exato que recebeu, sem reserializar — a ordem das chaves mudaria e a assinatura não bateria.
Node.js

Cobrança

A consulta é cobrada no disparo, não na entrega — inclusive se depois expirar. Consultar o protocolo e receber o webhook não são cobrados. Não há deduplicação: dois disparos para o mesmo documento são duas consultas cobradas. Se o POST falhar por erro de rede sem resposta, consulte antes de repetir. Há um limite de consultas assíncronas em processamento por conta; acima dele, o disparo responde 429 com code: too_many_pending_queries e Retry-After.