> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Estimativa de idade: avisos e códigos de risco

> Códigos de risco da estimativa de idade da Didit (AGE_BELOW_MINIMUM, AGE_NOT_DETECTED, LOW_LIVENESS_SCORE, NO_FACE_DETECTED), limiares e ações.

O recurso de Estimativa de idade emite **avisos** sempre que um sinal de risco é disparado na verificação combinada de idade + prova de vida passiva: a idade prevista está abaixo do seu mínimo, a idade não pôde ser calculada, o titular não passou na prova de vida, nenhum rosto foi encontrado ou um ataque de apresentação foi detectado. Esta página lista cada código, o que o aciona e como configurar a resposta do fluxo de verificação (workflow).

## Visão geral

A Estimativa de idade sempre executa **duas verificações em uma única chamada**, um teste de prova de vida passiva e um modelo de regressão de idade, por isso seus avisos passam pelo pipeline compartilhado de prova de vida e são marcados com o recurso `LIVENESS`. Eles aparecem no relatório em `age_estimation.warnings[]` (API independente) ou em `liveness_checks[].warnings[]` (incorporado a um fluxo). O esquema do objeto de aviso está documentado em [Modelos de dados: objeto de aviso](https://docs.didit.me/pt-br/reference/data-models.md#objeto-de-aviso).

Geradores:

* **API independente**: o endpoint gera os cinco avisos listados em [Gatilhos de recusa](#gatilhos-de-recusa).
* **Fluxos de trabalho**: os geradores compartilhados de prova de vida mais as verificações específicas de idade. Os avisos de idade só são disparados em fluxos de estimativa de idade (fluxos de verificação de idade adaptativa ou nós `AGE_ESTIMATION` do fluxo). Uma etapa simples de prova de vida informa uma idade estimada, mas nunca gera avisos de idade.

Severidades: os cinco riscos de recusa automática (`NO_FACE_DETECTED`, `LIVENESS_FACE_ATTACK`, `FACE_IN_BLOCKLIST`, `AGE_BELOW_MINIMUM`, `AGE_NOT_DETECTED`) são sempre `log_type: "error"` e forçam `Declined`; os demais riscos têm classificação `error` / `warning` / `information` com base nos limiares ou na ação configurada.

## Gatilhos de recusa

Na API independente, a decisão é `Declined` sempre que **qualquer** aviso é disparado:

* **Idade abaixo do limiar**: idade prevista estritamente abaixo de `age_estimation_decline_threshold` (padrão `18`; `0` desativa a verificação de idade). Gera `AGE_BELOW_MINIMUM`.
* **Idade não calculada**: não foi possível estimar a idade a partir de nenhum rosto (nenhum rosto detectável ou nenhum rosto utilizável pelo modelo de idade). Gera `AGE_NOT_DETECTED`.
* **Pontuação de prova de vida igual ou abaixo do limiar**: `score <= face_liveness_score_decline_threshold` (padrão `30`); uma pontuação `null` conta como `0`. Gera `LOW_LIVENESS_SCORE`. É suprimido quando `NO_FACE_DETECTED` é disparado, pois os dois são mutuamente exclusivos.
* **Nenhum rosto detectado**: o modelo de prova de vida não encontrou nenhum rosto. Gera `NO_FACE_DETECTED`.
* **Ataque de apresentação**: o modelo de prova de vida sinalizou uma tela, foto impressa, máscara ou outro tipo de spoofing. Gera `LIVENESS_FACE_ATTACK`.

Nos fluxos, as verificações de idade comparam a idade estimada truncada (anos completos) com os limiares configurados:

* **Com o fallback para verificação de identidade ativado** (`enable_id_verification_fallback`, ativado por padrão): uma idade abaixo de `borderline_minimum_age_threshold` (padrão `18`) gera `AGE_BELOW_MINIMUM`; idades na faixa limítrofe (até `borderline_maximum_age_threshold`) seguem para a verificação de documento em vez de gerar um aviso, e `AGE_NOT_DETECTED` nunca é gerado: quando não é possível estimar a idade, o processo também é encaminhado para a verificação de documento.
* **Com o fallback desativado**: a ausência de idade estimada gera `AGE_NOT_DETECTED`, e uma idade abaixo de `minimum_age_threshold` (padrão `18`) gera `AGE_BELOW_MINIMUM`.

## Riscos configuráveis

Os riscos a seguir permitem ajustar limiares ou a ação em cada configuração do fluxo:

| Configuração | Código de risco | Opções configuráveis |
| - | - | - |
| Limiares de idade | `AGE_BELOW_MINIMUM` | API independente: `age_estimation_decline_threshold` (padrão `18`, `0` desativa). Fluxos: `minimum_age_threshold` / `borderline_minimum_age_threshold` (padrão `18`) além do fallback para verificação de identidade em idades limítrofes. |
| Pontuação de prova de vida baixa | `LOW_LIVENESS_SCORE` | **Limiar de recusa** (padrão `30` → `error` + recusa) e **Limiar de revisão** (padrão `60` → `warning` + revisão) separados, aplicados à pontuação de prova de vida. |
| Possível rosto duplicado | `POSSIBLE_DUPLICATED_FACE` | Ação na detecção: `DECLINE` / `REVIEW` / `NO_ACTION` (padrão `NO_ACTION`). Somente sessões de fluxo. |
| Múltiplos rostos | `MULTIPLE_FACES_DETECTED` | Ação na detecção: `DECLINE` / `REVIEW` / `NO_ACTION` (padrão `NO_ACTION`). Somente para prova de vida passiva em fluxos. |

As sessões de fluxo também comparam o rosto com as suas listas: `FACE_IN_BLOCKLIST` sempre recusa automaticamente (`error`), enquanto `POSSIBLE_FACE_IN_BLOCKLIST` move a sessão para `In Review`.

## Avisos gerados

| Tag | Severidade (`log_type`) | Descrição |
| - | - | - |
| `AGE_BELOW_MINIMUM` | `error`: recusa automática | A idade estimada está abaixo do limiar ativo (na API avulsa, `age_estimation_decline_threshold`; no fluxo, `minimum_age_threshold` / `borderline_minimum_age_threshold`; todos com padrão `18`). `additional_data` é sempre `null`. |
| `AGE_NOT_DETECTED` | `error`: recusa automática | Não foi possível estimar a idade a partir do rosto. É sempre gerado pela API avulsa quando a idade é `null`; nos fluxos, somente quando o fallback para a verificação de identidade está desativado. |
| `LOW_LIVENESS_SCORE` | `error` no limiar de recusa ou abaixo dele; `warning` no limiar de revisão ou abaixo dele | A pontuação de prova de vida está no limiar configurado ou abaixo dele (padrão de recusa `30` na API avulsa e no fluxo; padrão de revisão `60` no fluxo), o que indica possível uso de foto estática, tela ou vídeo. Não é gerado quando `NO_FACE_DETECTED` é disparado. |
| `NO_FACE_DETECTED` | `error`: recusa automática | Nenhum rosto foi detectado na imagem enviada. Peça novamente ao usuário que centralize o rosto diante da câmera em um ambiente com iluminação adequada. |
| `LIVENESS_FACE_ATTACK` | `error`: recusa automática | O modelo de prova de vida identificou um ataque de apresentação (reprodução em tela, foto impressa, máscara, deepfake). |
| `MULTIPLE_FACES_DETECTED` | Conforme a ação configurada (padrão `information`, sem ação) | Mais de um rosto foi encontrado na imagem; o resultado é determinado pelo maior rosto. Apenas na prova de vida passiva dos fluxos: a API avulsa não gera este aviso. |
| `FACE_IN_BLOCKLIST` | `error`: recusa automática | O rosto detectado corresponde a uma entrada da sua lista de bloqueio de rostos, gerenciada pela [Lists API](https://docs.didit.me/pt-br/management-api/lists/overview.md). Apenas em sessões de fluxo. |
| `POSSIBLE_DUPLICATED_FACE` | Conforme a ação configurada (padrão `information`, sem ação) | O rosto detectado é muito semelhante a um rosto aprovado anteriormente em outra sessão (correspondências com o mesmo `vendor_data` são excluídas). Apenas em sessões de fluxo. |

## Exemplo

```json theme={null}
{
  "warnings": [
    {
      "risk": "LOW_LIVENESS_SCORE",
      "feature": "LIVENESS",
      "additional_data": null,
      "log_type": "error",
      "short_description": "Low liveness score",
      "long_description": "The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data."
    },
    {
      "risk": "AGE_BELOW_MINIMUM",
      "feature": "LIVENESS",
      "additional_data": null,
      "log_type": "error",
      "short_description": "Age below minimum",
      "long_description": "The age of the face is below the minimum age threshold for the application."
    }
  ]
}
```

Nos payloads de decisão dos fluxos (`liveness_checks[].warnings[]`), cada aviso também traz um `node_id` que identifica o nó do fluxo que o gerou.

## Tipos de aviso

Cada risco recebe um nível de severidade de acordo com a configuração da sua aplicação. As severidades se dividem em três categorias:

## Relacionados

* [Visão geral da Estimativa de idade](https://docs.didit.me/pt-br/core-technology/age-estimation/overview.md): comportamento do recurso, preços e lógica de decisão.
* [Relatório de Estimativa de idade](https://docs.didit.me/pt-br/core-technology/age-estimation/report-age-estimation.md): estrutura completa da resposta, tanto da API avulsa quanto do valor do fluxo integrado.
* [Referência da API avulsa](https://docs.didit.me/pt-br/standalone-apis/age-estimation.md): requisição e resposta de `POST /v3/age-estimation/`.
* [Prova de vida passiva](https://docs.didit.me/pt-br/core-technology/liveness/overview.md): o modelo de prova de vida compartilhado usado nas respostas de estimativa de idade.
* [Modelos de dados: estimativa de idade](https://docs.didit.me/pt-br/reference/data-models.md#estimativa-de-idade): esquema canônico, campo a campo.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.