Acompanhar via SSE
Alternativa ao polling de GET /consultas/resultado/{consultaId}: abre uma conexão HTTP de longa duração (Server-Sent Events) que recebe um único evento assim que a execução terminar, em vez de o cliente ficar repetindo requisições.
Só faz sentido usar depois de um 504 de POST /consultas/executar/{id} — no fluxo normal o resultado já vem direto na resposta do POST.
Eventos emitidos (Content-Type: text/event-stream):
| Evento | Quando | Dados |
|---|---|---|
result | Execução concluída (sucesso ou falha) | Mesmo payload de GET /consultas/resultado/{consultaId} formato hash |
timeout | 5 minutos sem resultado | { status: "timeout", message, consultaId } — volte para o polling |
ping (comentário SSE) | A cada 30s | Keepalive — ignore |
Após receber result ou timeout, a conexão é encerrada pelo servidor.
const es = new EventSource(
`https://api.periciadecredito.com.br/consultas/stream/${consultaId}`,
{ headers: { 'x-access-token': token } } // ou via query string, dependendo do seu cliente SSE
);
es.addEventListener('result', (event) => {
const payload = JSON.parse(event.data);
console.log(payload);
es.close();
});
es.addEventListener('timeout', () => {
console.log('Sem resposta em 5 minutos — volte ao polling.');
es.close();
});
GET /consultas/resultado/{consultaId}, este endpoint só é útil depois de um 504 em POST /consultas/executar/{id}. No fluxo normal o resultado já vem direto na resposta do POST — nenhum dos dois é necessário.Por que usar SSE em vez de polling
Se você recebeu um504, tem duas formas de recuperar o resultado quando a execução terminar:
- Polling: repetir
GET /consultas/resultado/{consultaId}a cada poucos segundos. - SSE (este endpoint): abrir uma única conexão HTTP de longa duração e receber um evento assim que o worker terminar — sem ficar repetindo requisições.
Eventos emitidos
| Evento | Quando ocorre | Dados |
|---|---|---|
result | A execução terminou (sucesso ou falha) | Mesmo payload de GET /consultas/resultado/{consultaId} no formato hash — veja Recuperar Resultado |
timeout | 5 minutos sem receber um resultado | { "status": "timeout", "message": "...", "consultaId": "..." } |
(comentário : ping) | A cada 30 segundos | Keepalive — não é um evento nomeado, apenas mantém a conexão viva através de proxies. Ignore. |
result ou timeout, o servidor encerra a conexão.
Exemplo de uso
Authorizations
Token JWT retornado pelo endpoint POST /auth/login. Inclua este header em todas as requisições autenticadas.
Path Parameters
O consultaId (hash) retornado por uma resposta 504 de POST /consultas/executar/{id}.
Response
Conexão SSE aberta. Ver a tabela de eventos na descrição do endpoint.
The response is of type string.

