Pular para o conteúdo principal

Fluxo assíncrono

O envio de documento não devolve o resultado da análise. Ele responde na hora, com o documento em PROCESSING, e o processamento (OCR, extração por LLM, validação por regras) acontece depois.

POST /v1/api/documents  ──►  200, status PROCESSING
│
┌──────────────┴───────────────┐
▼ ▼
webhook *_PROCESSED GET /v1/api/documents/{_id}
(recomendado) (consulta pontual)

Prefira o webhook. A consulta serve para reconciliar um caso específico, não para descobrir a conclusão — não há garantia de tempo de processamento, e consulta em laço não acelera nada.

Status do documento​

statussignificado
PENDINGaguardando envio do arquivo
PROCESSINGem processamento
SENTprocessado e aprovado pela IA
APPROVEDaprovado na conferência humana
REJECTEDreprovado pela IA; o participante pode reenviar
REJECTED_DEFINITLYreprovado sem possibilidade de reenvio
ACTION_REQUIREDreprovado na conferência; exige reenvio
INTERNAL_REVIEWem reavaliação interna, sem reenvio
INTEGRITY_REVIEWanálise de integridade apontou risco; aguarda conferência humana
JUSTIFIEDjustificado pelo participante, sem reenvio
REVIEW_REQUESTEDrevisão humana pedida após reprovação automática

Um documento em estado final ainda pode emitir *_UPDATED. Para EXTERNAL_DOCUMENT_UPDATED a causa é sempre a Análise Forense assíncrona, que pode concluir depois do *_PROCESSED. PARTICIPANT_DOCUMENT_UPDATED é mais amplo: também dispara em mudanças simples de status, não só em laudo de análise forense.

Onde ficam os dados extraídos​

Em parsedContent, não em data.data. Ao lado dele vêm validationErrors (o que falhou e por quê), computedFields (campos calculados) e validationCheckpoints (as etapas da validação, com status por etapa). O formato exato de cada um está na Referência.

Em documentos enviados pela API (POST /v1/api/documents), computedFields sempre volta como lista vazia ([]), e documentExtraData sempre volta null — essa rota não popula nenhum dos dois, mesmo que o documento tenha sido revisado manualmente depois.