Skip to main content
POST
Importação de Documentos

Visão Geral

A API de Importação de Documentos do Fleximage permite que sistemas externos enviem lotes de documentos para processamento automático de análise, classificação, validação documental e biometria.

Fluxo Simples

Apenas 2 etapas: Autenticação + Importação

Processamento Automático

OCR, classificação e validação sem intervenção manual

Resultado via Webhook

Receba os resultados automaticamente em sua URL

Multi-documento

Envie múltiplos documentos em um único lote

Fluxo de Integração

1

Autenticação OAuth 2.0

Obtenha um token de acesso JWT via Keycloak usando suas credenciais
2

Preparar Metadados

Monte o arquivo JSON com informações do lote e documentos
3

Importar Documentos

Envie JSON + arquivos via requisição multipart/form-data
4

Receber BatchID

Armazene o ID do lote retornado para rastreamento
5

Aguardar Webhook

Receba o resultado completo da análise em sua URL de callback

1. Autenticação OAuth 2.0

Credenciais de Acesso

Você receberá as credenciais de acesso por email. Exemplo de ambiente de desenvolvimento:
As credenciais acima são de uso exclusivo para ambiente de desenvolvimento (DES). Credenciais de produção serão fornecidas separadamente pelo time de integração.

Endpoint de Autenticação

Resposta de Sucesso

string
required
Token JWT para autenticação nas APIs. Use no header Authorization: Bearer <token>
string
Sempre "Bearer"
integer
Tempo de validade em segundos (padrão: 3600 = 1 hora)
string
Escopos concedidos ao token
O token expira em 1 hora (3600 segundos). Quando expirar, execute a autenticação novamente para obter um novo token.

2. Importação de Documentos

Use o playground “Try It” à direita para testar a API diretamente na documentação! →

Authentication

string
required
Bearer token obtido via OAuth 2.0Formato: Bearer {access_token}Exemplo: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

Request Body

file
required
Arquivo JSON contendo metadados do lote e dos documentos.Tipo: JSON fileEstrutura detalhada: Ver seção 3 abaixoContent-Type: application/json
file[]
required
Array de arquivos (PDF, PNG, JPG, JPEG) dos documentos a serem processados.Formatos aceitos: PDF, PNG, JPG, JPEGTamanho máximo: 5MB por arquivoValidação: Nomes devem corresponder aos especificados no campo fileName do JSON

Response

integer
required
Identificador único do lote criado no sistema. Use este ID para rastrear o processamento.Exemplo: 4697

3. Estrutura do JSON (jsonData)

Template Completo

Campos do Lote

string
required
Determina o fluxo de processamento aplicado ao lote:
Use poc_auto_face para onboarding digital com selfie.
string
required
Identificador externo do lote para rastreamento no seu sistema.Exemplo: "LOTE-2026-001", "PF-12345-20260414"
string
required
Código da origem do lote. Geralmente "1" (consulte com o time de integração).
array
required
Lista de chaves lógicas do lote. 3 chaves obrigatórias:
URL de callback para receber o resultado da análise após o processamento.Formato: URL completa (https://)Exemplo: "https://seu-sistema.com/api/webhook/flexdoc"
🔒 Se a URL de webhook exigir autenticação (token, Basic Auth ou header personalizado), informe previamente à equipe Flexdoc para configuração segura no sistema.
CPF do titular do documento (somente números, sem formatação).Formato: 11 dígitosExemplo: "12345678900"
Nome do cliente, sistema ou projeto de origem. Utilizado para agrupamento e controle de registros.Exemplo: "portal_cliente", "app_mobile", "trustic_web"

Campos dos Documentos

array
required
Lista de documentos a serem importados. Cada documento possui:
Nome do arquivo que deve corresponder exatamente ao arquivo enviado no campo files.Case-sensitive: "RG.pdf""rg.pdf"Exemplo: "rg_completo.pdf", "selfie_cliente.png"
Formato do arquivo. Valores aceitos:
  • "pdf" - Documentos PDF
  • "jpg" ou "jpeg" - Imagens JPEG
  • "png" - Imagens PNG
Tamanho máximo recomendado: 5MB por arquivo
Tipo do documento. Se omitido, classificação automática via deep learning é aplicada.
⚠️ Importante: Documentos de identidade frente e verso devem ser enviados como um único arquivo combinado (merge). Arquivos separados de frente e verso não são aceitos.
Lista de chaves associadas ao documento específico (ex.: CPF do titular).Estrutura:

4. Exemplo Completo de Requisição


5. Resposta da Importação

Sucesso (200 OK ou 201 Created)

integer
required
Identificador único do lote processado. Armazene este ID para rastreamento e consultas futuras.
Lote criado com sucesso! O processamento iniciou automaticamente. Aguarde o webhook com o resultado completo da análise.

Códigos de Status HTTP


6. Webhook - Retorno da Validação

Após o processamento, o sistema envia automaticamente um POST para a URL configurada em webhook_uri com o resultado completo da análise.

Estrutura do Response (ResponseDto)

Campos Principais

Informações de Processamento

string
Data e hora de início do processamento (formato: DD/MM/YYYY HH:MM:SS)
string
Data e hora de finalização do processamento
integer
Código único de controle da transação
integer
Código do resultado da validação:
boolean
Indica se a análise foi inconclusiva
integer
Índice percentual de autenticidade do documento (0-100)
  • 90-100: Excelente
  • 70-89: Bom
  • 50-69: Regular
  • 0-49: Baixo
integer
Índice percentual de correspondência facial (0-100)
  • 95-100: Match muito alto
  • 85-94: Match alto
  • 70-84: Match moderado
  • 0-69: Match baixo (rejeitar)
Disponível apenas quando workflowAlias = "poc_auto_face" e selfie foi enviada.
string
Tipo do documento principal analisado (RG, CNH, CPF, etc)
string
CPF do titular do documento (apenas números)
string
Origem da análise
string
Chave identificadora da origem (UUID)
string
Identificador do cliente
string
Identificador externo da transação (seu batchExternalId)

Penalidades (PenalidadeDto)

Array de objetos contendo irregularidades encontradas durante a análise formalística.
array
Lista de penalidades detectadas (vazio se aprovado sem ressalvas)Estrutura:
Campos:
  • data (string): Data e hora da detecção
  • valor (string): Valor associado (quando aplicável)
  • descricao (string): Descrição detalhada da penalidade
  • regra (string): Código da regra que gerou a penalidade
  • rulesType (integer): Tipo da regra
    • 1 = Automática (crítico - divergências com bases oficiais)
    • 2 = Manual
    • 3 = Híbrido (alerta - características suspeitas)
RG (Registro Geral)OCR (Validação de Dados)CNH (Carteira Nacional de Habilitação)

Códigos de Rejeição (CodigoRejeicaoDto)

Array de objetos contendo motivos de rejeição automática por problemas de qualidade.
array
Lista de códigos de rejeição (vazio se qualidade OK)Estrutura:
Campos:
  • tipo (string): Tipo do documento rejeitado
  • codigo (string): Código do erro
  • motivo (string): Descrição do motivo
  • docId (integer): ID do documento rejeitado

Documentos Analisados (DocumentoDto)

array
Lista de documentos analisados com dados extraídos via OCREstrutura:
Campos:
  • docName (string): Nome descritivo do documento
  • docId (integer): Identificador único do documento
  • docType (string): Tipo técnico do documento
  • type (string): Categoria do documento (rg, cnh, cpf, etc)
  • keys (array): Campos extraídos pelo OCR

Campos Extraídos (KeyDto)


7. Fluxo de Interpretação do Webhook

1

1. Verificar result

2

2. Analisar codigoRejeicao

Se não vazio, contém motivos de rejeição automática (documento ilegível, incompleto ou danificado).
3

3. Examinar penalidades

4

4. Consultar docs

Acessar dados extraídos dos documentos via OCR.
5

5. Verificar índices de confiança

  • indiceAvaliacaoAutenticidade: 0-100 (quanto maior, melhor)
  • indiceFacematch: 0-100 (> 70 recomendado)

8. Boas Práticas

  • Nunca exponha client_secret em repositórios públicos
  • Use variáveis de ambiente para armazenar credenciais
  • Implemente autenticação no webhook (token, Basic Auth)
  • Use HTTPS em produção
  • Rotacione secrets periodicamente (a cada 90 dias)
  • Valide a origem das requisições do webhook (whitelist de IPs)
  • Limite lotes a 10-20 documentos por requisição para melhor performance
  • Otimize imagens antes do envio (resolução 300 DPI recomendada)
  • Use compressão de PDFs quando possível
  • Para grandes volumes, processe em lotes paralelos (máx 5 simultâneos)
  • Monitore o tamanho total do request (limite: 50MB recomendado)
  • Cache tokens válidos (expire em 55 minutos para margem de segurança)
  • Resolução mínima: 300 DPI
  • Formato preferencial: PDF para documentos, PNG para selfies
  • Iluminação: Boa iluminação natural ou artificial uniforme
  • Foco: Imagens nítidas, sem desfoque
  • Enquadramento: Documento completo, sem cortes
  • Sem reflexos: Evite flash direto em documentos plastificados
  • Merge RG: Combine frente e verso em um único PDF
  • Sempre preencha batchExternalId com identificador único
  • Use padrão consistente: {origem}-{cliente}-{timestamp}
  • Exemplo: "PORTAL-12345-20260414103015"
  • Armazene batchId retornado para consultas futuras
  • Mantenha log de todas as importações (request + response)
  • Implemente monitoramento de webhooks (alertas se não receber em X minutos)
  • Implemente retry com backoff exponencial para erros 5xx
    • 1ª tentativa: aguardar 1s
    • 2ª tentativa: aguardar 2s
    • 3ª tentativa: aguardar 4s
    • Máximo de 3 tentativas
  • Para erro 400, não reprocesse - corrija os dados
  • Para erro 401, renove o token e tente novamente
  • Monitore logs para identificar padrões de falha
  • Configure alertas para taxa de erro > 5%
  • Mantenha auditoria de tentativas de importação
  • Responda rapidamente: Retorne HTTP 200 em < 3 segundos
  • Processe assincronamente: Salve dados e processe em background
  • Implemente idempotência: Webhook pode ser reenviado
  • Valide assinatura: Se configurado, valide header de autenticação
  • Log completo: Registre payload recebido para debugging
  • Retry do webhook: Sistema tenta reenviar 3x em caso de falha

9. Ambientes

URLs

  • API Import: https://flex-des.flexdoc-apis.com.br/import
  • SSO (Keycloak): https://auth-des.flexdoc-apis.com.br
  • Realm: fleximage

Credenciais (Exemplo)

  • CLIENT_ID: teste-api
  • CLIENT_SECRET: vveMLSHnasVxzKWchN0DpeEawG4UlXxs
Credenciais de desenvolvimento são fornecidas no email de boas-vindas.