Referência

API v1

Base URL: https://api.nutoken.com.br/v1 · Autenticação: Authorization: Bearer <chave> · Corpo: multipart/form-data (criação com imagem) ou application/json.

Análises

POST/v1/analyses

Cria uma análise a partir de uma imagem. Responde 202 com analysis_id, ou 422 imediato para erros de validação detectáveis na entrada.

CampoTipoObrigatórioDescrição
imagefilesim*JPEG/PNG/WebP/HEIC ≤ 10 MB (*ou upload_id)
upload_idstring—Alternativa para arquivos grandes (ver POST /v1/uploads)
dimensionsarray JSONsimDimensões a analisar (lista)
consentobjeto JSONsim{obtained, policy_version, subject_ref, purposes?}
webhook_urlstring—Sobrepõe o endpoint configurado no painel
masksstring—per_region (default) · composite · none
chronological_ageint—Habilita skin_age.chronological_delta
locale · metadata——Idioma dos rótulos · até 10 pares seus

Headers: Idempotency-Key (fortemente recomendado; guardado por 24 h).

GET/v1/analyses/{analysis_id}

Status e resultado. status: processing · succeeded · failed. Resultado completo disponível por 72 h; depois, metadados.

GET/v1/analyses?subject_ref=u_84f2&limit=20

Lista análises (paginação por cursor: starting_after). Filtros: subject_ref, status, created_after. Essencial para séries temporais de evolução.

POST/v1/analyses/{analysis_id}/masks

Reemite URLs assinadas de máscaras expiradas (0,1 unidade).

Uploads (opcional, para arquivos grandes)

POST/v1/uploads

Body: {"content_type":"image/jpeg","file_size":12582912} → responde upload_id + put_url assinada (15 min). Faça PUT do binário e use upload_id na criação da análise.

Titulares e consentimento

GET/v1/subjects/{subject_ref}

Resumo do titular: análises, consentimentos registrados e retenções ativas.

DELETE/v1/subjects/{subject_ref}

Apaga dados do titular (direito de eliminação LGPD). Responde 202 com deletion_id; conclusão confirmada via webhook. Dados sob obrigação legal de retenção do controlador não são afetados — a resposta discrimina o que foi removido.

Unidades e webhooks

GET/v1/units

Saldo, lotes e expirações. Ver Unidades & cobrança.

POST/v1/webhooks/test

Dispara evento de teste no sandbox. Ver Webhooks.

Códigos de status

HTTPQuando
202Análise aceita (processando)
200Consulta bem-sucedida
400 / 422Requisição ou conteúdo inválido (catálogo)
401 / 402 / 409Chave inválida · sem unidades · conflito de idempotência
429Rate limit — veja Retry-After. Limites padrão: 10 análises/s, 60 GETs/s por chave (ajustável por contrato)
5xxErro nosso — retry com backoff é seguro graças à idempotência

Versionamento e depreciação