> ## 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.

# Avisos e códigos de risco de estimativa de idade

> Guia da Didit de códigos de risco de estimativa de idade — AGE_BELOW_MINIMUM, LOW_LIVENESS_SCORE e outros — com limiares e ações recomendadas.

A funcionalidade de Estimativa de idade emite **avisos** sempre que um sinal de risco é acionado 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 sujeito não passou na prova de vida, nenhum rosto foi encontrado ou foi detetado um ataque de apresentação. Esta página lista cada código, o que o desencadeia e como configurar a resposta do fluxo.

## Visão geral

A Estimativa de idade executa sempre **duas verificações numa só chamada** — um teste de prova de vida passiva e um modelo de regressão de idade — pelo que os seus avisos passam pelo pipeline partilhado de prova de vida e são identificados com a funcionalidade `LIVENESS`. Surgem no relatório em `age_estimation.warnings[]` (API independente) ou `liveness_checks[].warnings[]` (integrado num fluxo). O esquema do objeto de aviso está documentado em [Modelos de dados — Objeto de aviso](https://docs.didit.me/pt/reference/data-models.md#objeto-de-aviso).

Emissores:

* **API independente** — o endpoint gera os cinco avisos listados em [Acionadores de recusa](#acionadores-de-recusa).
* **Fluxos de trabalho** — os emissores partilhados de prova de vida juntamente com as verificações específicas de idade. Os avisos de idade só são acionados em fluxos de estimativa de idade (fluxos de verificação de idade adaptativa ou nós de fluxo `AGE_ESTIMATION`) — um passo simples de prova de vida comunica uma idade estimada, mas nunca gera avisos de idade.

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

## Acionadores de recusa

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

* **Idade abaixo do limiar** — idade prevista estritamente inferior a `age_estimation_decline_threshold` (predefiniçã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 do rosto (nenhum rosto detetável ou nenhum rosto utilizável para o modelo de idade). Gera `AGE_NOT_DETECTED`.
* **Pontuação de prova de vida igual ou inferior ao limiar** — `score <= face_liveness_score_decline_threshold` (predefinição `30`); uma pontuação `null` conta como `0`. Gera `LOW_LIVENESS_SCORE`. Suprimido quando `NO_FACE_DETECTED` é acionado — os dois são mutuamente exclusivos.
* **Nenhum rosto detetado** — 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 um ecrã, fotografia impressa, máscara ou outro spoofing. Gera `LIVENESS_FACE_ATTACK`.

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

* **Com o fallback de verificação de identidade ativado** (`enable_id_verification_fallback`, ativado por predefinição): uma idade abaixo de `borderline_minimum_age_threshold` (predefinição `18`) gera `AGE_BELOW_MINIMUM`; as idades no intervalo limítrofe (até `borderline_maximum_age_threshold`) avançam para a verificação de documentos em vez de gerarem um aviso, e `AGE_NOT_DETECTED` nunca é gerado — uma idade não detetada é também encaminhada para a verificação de documentos.
* **Com o fallback desativado**: a ausência de idade estimada gera `AGE_NOT_DETECTED`, e uma idade abaixo de `minimum_age_threshold` (predefinição `18`) gera `AGE_BELOW_MINIMUM`.

## Riscos configuráveis

Os seguintes riscos permitem ajustar os limiares ou a ação de acordo com a configuração do fluxo:

| Definição | Código de risco | Opções configuráveis |
| - | - | - |
| Limiares de idade | `AGE_BELOW_MINIMUM` | Independente: `age_estimation_decline_threshold` (predefinição `18`, `0` desativa). Fluxos: `minimum_age_threshold` / `borderline_minimum_age_threshold` (predefinição `18`) mais o fallback de verificação de identidade para idades limítrofes. |
| Pontuação baixa de prova de vida | `LOW_LIVENESS_SCORE` | **Limiar de recusa** separado (predefinição `30` → `error` + recusa) e **Limiar de revisão** (predefinição `60` → `warning` + revisão) aplicados à pontuação de prova de vida. |
| Possível rosto duplicado | `POSSIBLE_DUPLICATED_FACE` | Ação após deteção: `DECLINE` / `REVIEW` / `NO_ACTION` (predefinição `NO_ACTION`). Apenas em sessões de fluxo. |
| Vários rostos | `MULTIPLE_FACES_DETECTED` | Ação após deteção: `DECLINE` / `REVIEW` / `NO_ACTION` (predefinição `NO_ACTION`). Apenas na prova de vida passiva de fluxos. |

As sessões de fluxo também fazem a triagem do rosto nas suas listas: `FACE_IN_BLOCKLIST` resulta sempre em recusa automática (`error`), enquanto `POSSIBLE_FACE_IN_BLOCKLIST` move a sessão para `In Review`.

## Avisos gerados

| Tag | Gravidade (`log_type`) | Descrição |
| - | - | - |
| `AGE_BELOW_MINIMUM` | `error` — recusa automática | A idade estimada está abaixo do limiar ativo (`age_estimation_decline_threshold` da API autónoma; `minimum_age_threshold` / `borderline_minimum_age_threshold` do fluxo; todos com o valor predefinido `18`). `additional_data` é sempre `null`. |
| `AGE_NOT_DETECTED` | `error` — recusa automática | Não foi possível estimar a idade do rosto. É sempre gerado pela API autónoma quando a idade é `null`; em fluxos apenas quando o fallback de verificação de identidade está desativado. |
| `LOW_LIVENESS_SCORE` | `error` quando é igual ou inferior ao limiar de recusa; `warning` quando é igual ou inferior ao limiar de revisão | A pontuação de prova de vida é igual ou inferior ao limiar configurado (a predefinição do limiar de recusa da API autónoma e do fluxo é `30`; a predefinição de revisão do fluxo é `60`), indicando o potencial uso de uma foto estática, ecrã ou vídeo. Não é gerado quando `NO_FACE_DETECTED` é acionado. |
| `NO_FACE_DETECTED` | `error` — recusa automática | Nenhum rosto foi detetado na imagem submetida. Peça novamente ao utilizador para centrar a câmara com iluminação adequada. |
| `LIVENESS_FACE_ATTACK` | `error` — recusa automática | O modelo de prova de vida sinalizou um ataque de apresentação (reprodução em ecrã, foto impressa, máscara, deepfake). |
| `MULTIPLE_FACES_DETECTED` | Conforme a ação configurada (predefinição `information`, nenhuma ação) | Foi encontrado mais do que um rosto na imagem; o rosto maior determina o resultado. Apenas em sessões de fluxo com prova de vida passiva — a API autónoma não o gera. |
| `FACE_IN_BLOCKLIST` | `error` — recusa automática | O rosto detetado corresponde a uma entrada na sua lista de bloqueio facial gerida através da [Lists API](https://docs.didit.me/pt/management-api/lists/overview.md). Apenas sessões de fluxo. |
| `POSSIBLE_DUPLICATED_FACE` | Conforme a ação configurada (predefinição `information`, nenhuma ação) | O rosto detetado é significativamente semelhante a um rosto aprovado anteriormente noutra sessão (as correspondências que partilham os mesmos `vendor_data` são excluídas). Apenas 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 do fluxo (`liveness_checks[].warnings[]`), cada aviso também inclui um `node_id` que identifica o nó do fluxo que o gerou.

## Tipos de avisos

Cada risco tem atribuída uma gravidade com base na configuração da sua aplicação. As gravidades dividem-se em três categorias:

## Relacionados

* [Visão geral da Estimativa de idade](https://docs.didit.me/pt/core-technology/age-estimation/overview.md) — comportamento da funcionalidade, preços e lógica de decisão.
* [Relatório da Estimativa de idade](https://docs.didit.me/pt/core-technology/age-estimation/report-age-estimation.md) — formato completo da resposta tanto para a API autónoma como para o valor incorporado no fluxo.
* [Referência da API autónoma](https://docs.didit.me/pt/standalone-apis/age-estimation.md) — pedido e resposta de `POST /v3/age-estimation/`.
* [Prova de vida passiva](https://docs.didit.me/pt/core-technology/liveness/overview.md) — o modelo partilhado de prova de vida utilizado nas respostas da estimativa de idade.
* [Modelos de dados — estimativa de idade](https://docs.didit.me/pt/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.