Conceitos

Arquivos & erros

O que uma boa foto precisa ter, o que acontece quando ela não tem — e exatamente como resolver cada caso.

Especificações de imagem

ParâmetroRequisitoNotas
FormatosJPEG, PNG, WebP, HEICHEIC/WebP convertidos automaticamente — fotos de iPhone funcionam sem conversão no cliente
Lado menor≥ 480 px≥ 1080 px habilita análise de alta fidelidade automaticamente (mesmas dimensões, mais detalhe regional)
Lado maior≤ 4096 pxAcima disso, redimensionamos automaticamente — sem erro
Tamanho≤ 10 MB (multipart)Maiores: fluxo opcional POST /v1/uploads
Rosto50–90% da larguraFaixa mais tolerante que o padrão de mercado (60–80%); o Capture Kit garante isso na captura

A foto ideal

Dica de produto: não ensine regras ao usuário — capture certo na origem. O Capture Kit valida enquadramento, pose e luz em tempo real e só libera o disparo quando a foto vai passar.

Envelope de erro

Todo erro tem o mesmo formato, com código estável, mensagem legível, dica de correção e link direto para esta documentação:

json · 422
{
  "error": {
    "code": "face_too_small",
    "message": "O rosto ocupa menos de 50% da largura da imagem.",
    "hint": "Aproxime a câmera até o rosto preencher a moldura, ou use o Capture Kit.",
    "docs_url": "https://www.nutoken.com.br/docs/arquivos-e-erros.html#face_too_small"
  }
}

Catálogo de erros

CódigoHTTPCausaComo resolver
invalid_image400Arquivo corrompido ou formato não suportadoReenvie em JPEG/PNG/WebP/HEIC
image_too_small422Lado menor < 480 pxCapture em resolução maior; evite thumbnails
image_too_large413> 10 MB no multipartComprima no cliente ou use POST /v1/uploads
face_not_found422Nenhum rosto detectadoFoto frontal, sem oclusões; verifique rotação EXIF
face_too_small422Rosto < 50% da larguraAproxime a câmera
face_out_of_bounds422Rosto cortado pela bordaCentralize o rosto no enquadramento
multiple_faces422Mais de um rosto na imagemUma pessoa por análise
lighting_too_dark422SubexposiçãoLuz de frente; evite ambientes escuros
lighting_uneven422Sombra forte em metade do rostoLuz difusa e frontal (janela de frente funciona)
consent_missing422consent.obtained ausente ou falsoColete e declare o consentimento do titular
invalid_dimensions400Dimensão inexistente em dimensionsConfira a lista em Entradas & saídas
idempotency_conflict409Mesma Idempotency-Key com corpo diferenteGere uma chave nova por operação distinta
insufficient_units402Saldo de unidades esgotadoVer Unidades & cobrança
rate_limited429Limite de requisições excedidoRespeite Retry-After; aplique backoff exponencial
processing_failed—Falha interna do motor (status failed)Reenvie; nenhuma unidade é consumida
Diferença que importa: erros de qualidade de foto (422) chegam na resposta síncrona da criação sempre que detectáveis de imediato — você não gasta um ciclo de polling/webhook para descobrir que a foto estava escura. No padrão do mercado, esses erros só aparecem ao consultar a task.