Saltar al contenido principal
El informe de Estimación de edad recoge una edad predicha por el modelo (en años) para el rostro más grande detectado en una imagen, junto con una comprobación pasiva de prueba de vida que confirma que el sujeto es una persona real y no una foto, una pantalla o una máscara. Las dos comprobaciones siempre se ejecutan juntas: la Estimación de edad nunca devuelve una edad sin una puntuación de prueba de vida. Esta página documenta la estructura JSON que devuelven las dos vías de llamada: el endpoint independiente POST /v3/age-estimation/ y el campo age_estimation incluido en los informes de prueba de vida de los flujos.
Informe de estimación de edad de Didit con la edad predicha, la puntuación de prueba de vida pasiva y las métricas de calidad del rostro

Descripción general

La Estimación de edad tiene dos modos de entrega:
  • API independiente. POST /v3/age-estimation/ acepta una sola imagen de rostro (user_image) y devuelve de forma síncrona la edad predicha y la puntuación de prueba de vida pasiva. Consulta la referencia de la API independiente de Estimación de edad.
  • Integrada en un flujo de verificación (workflow). Todo informe de prueba de vida de un flujo incluye la edad predicha en age_estimation; el valor siempre se obtiene del rostro más grande detectado. Los umbrales de edad solo se aplican (generando advertencias de edad) en los flujos de estimación de edad: flujos de verificación de edad adaptativa o nodos AGE_ESTIMATION del flujo.
Cada informe contiene:
  • El status general (Approved, Declined).
  • El method de prueba de vida (siempre PASSIVE en la API independiente; ACTIVE_3D / FLASHING / PASSIVE en los flujos).
  • Una score de prueba de vida (de 0 a 100; cuanto más alta, mayor es la confianza en que la persona está viva; null se trata como 0 en las comprobaciones de umbral).
  • La age_estimation predicha en años (float, por ejemplo 27.33; null cuando no se pudo estimar la edad de ningún rostro).
  • Solo en la API independiente: un objeto user_image con un array entities[] (una entrada por cada rostro detectado: age, bbox, confidence, gender) y la orientación best_angle.
  • Solo en los flujos: reference_image, video_url, matches[] y las métricas de calidad de la prueba de vida pasiva face_quality (de 0 a 100%) y face_luminance (de 0 a 100%). La respuesta de la API independiente no incluye estos campos.
  • Un array warnings[]: eventos de riesgo emitidos durante la comprobación (consulta las advertencias de Estimación de edad).
La decisión de la API independiente es Declined siempre que warnings no esté vacío; Approved requiere un array vacío. Las advertencias se generan cuando:
  • La score de prueba de vida es igual o inferior a face_liveness_score_decline_threshold (por defecto 30): LOW_LIVENESS_SCORE.
  • La edad predicha es inferior a age_estimation_decline_threshold (por defecto 18): AGE_BELOW_MINIMUM. Establece el umbral en 0 para desactivar la comprobación de edad.
  • No se detecta ningún rostro (NO_FACE_DETECTED) o no se pudo estimar la edad de ningún rostro (AGE_NOT_DETECTED).
  • El modelo de prueba de vida detecta un ataque de presentación (LIVENESS_FACE_ATTACK).

Dónde aparece en las respuestas de la API

API independiente: POST /v3/age-estimation/

La respuesta independiente agrupa el resultado en un único objeto age_estimation de nivel superior, junto con request_id y los valores vendor_data / metadata devueltos tal como se enviaron. Cuando save_api_request=true (el valor por defecto), request_id es el id de la sesión guardada y el resultado también se puede obtener más tarde desde el endpoint de decisión; cuando es false, es un UUID de correlación de un solo uso.

Decisión del flujo: GET /v3/session/{session_id}/decision/

En una sesión de flujo, la edad predicha está incluida dentro del informe de prueba de vida: no hay un array de estimación de edad independiente. El endpoint de decisión V3 devuelve los informes de prueba de vida bajo la clave de array en plural liveness_checks (ReducedSessionV3DecisionSerializer.get_liveness_checks), y cada entrada incluye un float age_estimation (la edad estimada del rostro detectado de mayor tamaño) o null si no se calculó ninguna edad (LivenessV2Serializer.get_age_estimation).
Lee la edad en liveness_checks[].age_estimation. Las llamadas independientes guardadas (save_api_request=true) aparecen de la misma forma en el endpoint de decisión, con features que contiene AGE_ESTIMATION.

Esquema

El esquema canónico campo por campo está en la página de Modelos de datos. La estructura de la respuesta independiente está documentada por AgeEstimationResponseSerializer y se construye en AgeEstimationAPIView; el valor del flujo lo genera LivenessV3Serializer.

Valores de estado

Las cadenas de estado provienen del enum compartido de estados de funciones (consulta Enums de estado). El endpoint independiente solo devuelve: En las sesiones de flujo, la prueba de vida también puede resolverse como In Review cuando se activa un riesgo configurable con una acción de revisión (por ejemplo, POSSIBLE_DUPLICATED_FACE). Consulta la referencia de enums de estado.

Ejemplos

Aprobado: independiente, persona adulta

Rechazado: independiente, edad predicha inferior al umbral

Aprobado: incluido en un informe de prueba de vida de un flujo de trabajo

Nota de seguridad

Todas las URL de imágenes y videos que se devuelven en la respuesta son enlaces prefirmados con un período de validez limitado. Trátalas como referencias de corta duración: no las compartas públicamente y vuelve a llamar al endpoint de decisión para renovar las URL expiradas. Como buena práctica, guarda en tu sistema solo el estado de la verificación y los puntuaciones de confianza, no el material biométrico subyacente.

Relacionado

Última modificación el 1 de noviembre de 2026