Control de edad para cualquier usuario. Sin pedirles una identificación.
Estime la edad de un usuario a partir de una selfie — sin carga de identificación, sin fricción. Menos de dos segundos, precisión de ±3.5 años, detección de vida certificada por iBeta en la misma captura. $0.10 por verificación, 500 gratis/mes.
Con la confianza de más de 2.000 organizaciones en todo el mundo.
Menos de 2 segundos en el dispositivo
Estime la edad en milisegundos. No se requiere documento.
El análisis facial en el dispositivo devuelve una estimación de edad en menos de dos segundos — sin foto de identificación, mínimos datos personales. Construido sobre el mismo motor certificado por iBeta Nivel 1 para la detección de ataques de presentación.
Cómo funciona
Desde el registro hasta el usuario verificado en cuatro pasos.
Paso 01
Crea el flujo de trabajo
Elija las verificaciones que desee: identificación, detección de vida, coincidencia facial, sanciones, dirección, edad, teléfono, correo electrónico, preguntas personalizadas. Arrástrelas a un flujo en el panel de control o publique el mismo flujo en nuestra API. Ramifique según las condiciones, ejecute pruebas A/B, no se requiere código.
Paso 02
Integrar
Incorpore de forma nativa con nuestros SDK de Web, iOS, Android, React Native o Flutter. Redirija a una página alojada. O simplemente envíe a su usuario un enlace, por correo electrónico, SMS, WhatsApp, en cualquier lugar. Elija lo que se adapte a su pila.
Paso 03
El usuario pasa por el flujo
Didit aloja la cámara, las señales de iluminación, la transferencia móvil y la accesibilidad. Mientras el usuario está en el flujo, puntuamos más de 200 señales de fraude en tiempo real y verificamos cada campo con fuentes de datos autorizadas. Resultado en menos de dos segundos.
Paso 04
Recibes los resultados
Los webhooks firmados en tiempo real mantienen su base de datos sincronizada en el momento en que un usuario es aprobado, rechazado o enviado a revisión. Consulte la API bajo demanda. O abra la consola para inspeccionar cada sesión, cada señal y gestionar los casos a su manera.
Diseñado para desarrolladores · Diseñado contra el fraude · Abierto por diseño
Seis capacidades. Un "feature flag". AGE_ESTIMATION.
Cada capacidad a continuación es un interruptor en el mismo módulo. Sin niveles de venta adicional, sin SKU separados, sin llamadas adicionales. Actívelos por flujo de trabajo o páselos en línea en la llamada a la API.
Una respuesta de datos mínimos para el comercio con restricción de edad: contenido para adultos, entrega de alcohol, juegos de azar en línea. Una sola selfie pasiva cubre la mayoría de los casos de aprobación y rechazo claros, reduciendo la deserción en comparación con una carga de identificación completa en un orden de magnitud. Se alinea con la Ley de Seguridad en Línea del Reino Unido y el código de edad apropiada de California.
Verificación de edad
Marco pasivo único · Sin carga de ID
Solo selfie
1 fotograma · pasivo
age_estimation
24 años
banda 18 – 29
verdict
Pase claro
umbral 18+
document
Ninguno requerido
sin carga de ID
cost
$0.10
por selfie
Listo · Ley de Seguridad en Línea del Reino Unido · CCPA para la Edad Apropiada
02 · Precisión
±3.5 años en todos los rangos de edad.
Error promedio de 3.5 años en general: el 89% de las estimaciones se encuentran dentro de ±5 años, el 76% dentro de ±3 años. El rendimiento por rango se publica: 1.5 años para menores de 18, 2.8 años para 18-25, 3.9 años para 41-60, para que pueda dimensionar su umbral con números reales, no con adjetivos del proveedor.
Precisión
Error absoluto medio · Por rango
±3.5 años MAE
±3.5y
MAE general
89%
Dentro de ±5a
76%
Dentro de ±3a
CorcheteDistribuciónMAE
<18
1.5y
18 – 25
2.8y
26 – 40
3.4y
41 – 60
3.9y
03 · Equidad demográfica
Entrenado en millones de rostros. En todas las demografías.
El sesgo es el mayor modo de falla de los modelos de estimación de edad, y el que buscan los reguladores. Nuestros modelos se entrenan en un corpus equilibrado en edad, etnia, género y condiciones de iluminación, con el error por rango publicado en lugar de promediado. Se reentrenan continuamente para mantenerse a la vanguardia de la deriva demográfica.
Equidad demográfica
MAE por eje · Reentrenamiento continuo
Equilibrado
Edad±3.5y
Etnicidad±3.7y
Género±3.4y
Iluminación±3.6y
Conjunto de entrenamiento
12.4M caras
Reentrenamiento
Trimestral
Última actualización
Abr 2026
04 · Umbrales configurables
Ajuste la política por flujo de trabajo y por país.
Umbral de rechazo (18 por defecto) y nivel de prueba de vida facial por flujo de trabajo. Superponga reglas por país: edad mínima/máxima por país con anulaciones a nivel estatal donde sea relevante (Misisipi 21, Alabama 19, EE. UU. por defecto 18). Un clic aplica la edad legal de mayoría de edad en todo el mundo como línea de base; ajuste las excepciones.
Política de umbral
Por flujo de trabajo · Por país
3 bandas
Banda de estimaciónAcción
Estimado < 15
Rechazar
Estimado 15 – 25
Revisar
Estimado > 25
Aprobar
Anulaciones por país · Edad mínima
🇺🇸Predeterminado de EE. UU.18+
🇺🇸Misisipi21+
🇺🇸Alabama19+
🇬🇧Reino Unido18+
05 · Reserva de ID adaptativa
Los casos límite se dirigen automáticamente a una verificación de documentos.
Las aprobaciones claras y los rechazos claros se completan solo con la selfie. Las estimaciones límite, la minoría incierta cerca de su umbral, activan automáticamente nuestro flujo de verificación de edad adaptativa, regido por las reglas por país en el paso de identificación. La mayoría de los usuarios completan con una selfie; la verificación de documentos se activa solo cuando las matemáticas dicen que la necesita. Se factura a $0.15 por cada reserva de verificación de identidad.
Enrutamiento adaptativo
Selfie · Límite · Respaldo de ID
En vivo
1,284
Paso claro
47
Límite
9
Fallo claro
Fallback activado · usr_9f01a3c enrutado a Verificación de ID$0.15
Ausr_a8c4f0232 años · banda 26 – 40Pase claro
Musr_9f01a3c17 años · banda 15 – 19Se requiere identificación
Lusr_4d2b6e113 años · banda 11 – 15Fallo claro
06 · Base de prueba de vida
Una captura. Dos señales. El mismo motor que la prueba de vida.
La estimación de edad se ejecuta sobre nuestra tubería de prueba de vida iBeta Nivel 1 PAD (detección de ataque de presentación): la misma selfie devuelve un veredicto de "humano real" y un rango de edad. Derrota deepfakes, fotos impresas, repeticiones de pantalla y máscaras de silicona antes de que se ejecute el modelo de edad. Actívelo en un flujo de trabajo de prueba de vida y una captura ilumina ambos campos.
Una captura · Dos señales
iBeta L1 PAD · ISO/IEC 30107-3
Prueba de vida + Edad
Aprobado · 98edad 24 · banda 18 – 29
Foto impresaBloqueado
Reproducción de pantallaBloqueado
Máscara de siliconaBloqueado
Deepfake de IABloqueado
Mismo motor · certificado iBeta L1 PAD · reevaluado anualmente
Integrar
Dos endpoints. Mismo JSON. Mismo precio.
Cree una sesión cuando desee que nuestra interfaz de usuario alojada maneje la selfie (y la reserva de ID adaptativa para casos límite). Llame al endpoint independiente cuando ya tenga la selfie. El mismo bloque de edad de cualquier manera.
Usted es el propietario de la captura. Devolvemos la edad en línea.documentación →
Integración lista para el agente
Envíe la estimación de edad en una sola instrucción.
Pegue el siguiente bloque en Claude Code, Cursor, Codex, Devin, Aider o Replit Agent. Rellene el marcador de posición my_stack con su framework, lenguaje y caso de uso. El agente aprovisiona Didit, crea el flujo de trabajo, conecta el webhook y lo envía.
didit-integration-prompt.md
# Didit Age Estimation — integrate in 5 minutes
You are integrating Didit's Age Estimation module into <my_stack>. Follow
these steps exactly. Every URL, header, and enum value below is canonical
— do not paraphrase or "improve" them.
## 1. Provision an account
- Sign up: https://business.didit.me (no credit card required).
- Or provision programmatically: POST https://apx.didit.me/auth/v2/programmatic/register/
(returns an API key bound to the workspace + application).
## 2. Two integration paths — pick one
### Path A — Workflow Builder (hosted UI)
Best when you want Didit to handle the camera, framing, low-light
fallback, mobile handoff, and accessibility for you. Required if you want
Adaptive Age Verification (auto-fall-back to ID for borderline cases).
1. Create a workflow that contains the AGE_ESTIMATION feature:
POST https://verification.didit.me/v3/workflows/
Authorization header: x-api-key: <your-api-key>
Body: workflow_label, features array with the single entry
{ feature: "AGE_ESTIMATION" } (UPPERCASE — strict enum)
Optional config:
- age_estimation_decline_threshold (default 18)
- face_liveness_score_decline_threshold (default 30)
- adaptive_id_verification (when true, borderline cases trigger ID
verification fallback governed by per-country age restrictions on
the ID Verification step)
- per_country_age_restrictions (map of country -> min / max age,
with optional state-level overrides)
2. Create a verification session for an end user:
POST https://verification.didit.me/v3/session/
Body: workflow_id (from step 1), vendor_data (your own user id).
Response: session_url — redirect the user to it.
3. Listen for webhook callbacks (see "Webhooks" below).
### Path B — Standalone server-to-server API
Best when you already have a selfie image (mobile SDK capture, native
onboarding app, reseller pipeline) and only need a numeric age estimate
plus passive-liveness verdict on it. No adaptive ID fallback on this
path — wire that yourself if you need it.
POST https://verification.didit.me/v3/age-estimation/
Content-Type: multipart/form-data
Body fields:
- user_image (required, file — single selfie)
- age_estimation_decline_threshold (optional integer 0-100, default 18)
- face_liveness_score_decline_threshold (optional integer 0-100, default 30)
- rotate_image (optional boolean, default false)
- save_api_request (optional boolean, default true)
- vendor_data (optional string, your user id)
Response: JSON with request_id, age_estimation block, created_at.
## 3. Webhooks (Path A only — Path B returns synchronously)
- Register a webhook destination once via
POST https://verification.didit.me/v3/webhook/destinations/
Body: url, subscribed_events: ["session.verified", "session.review_started",
"session.declined"]
- Response includes secret_shared_key — store it.
- Every webhook delivery carries an X-Signature-V2 header you MUST verify
before trusting the payload. HMAC-SHA256 verification MUST run against the raw body bytes (the raw payload as Didit sent it) BEFORE any JSON parsing — re-serialising the parsed body changes whitespace and key order, which invalidates the signature.Algorithm:
1. sortKeys(payload) recursively
2. shortenFloats (truncate trailing zeros after the decimal point)
3. JSON.stringify the result
4. HMAC-SHA256 with the secret_shared_key
5. Hex-encode, compare to the X-Signature-V2 header.
## 4. Reading the report
### Path A (session) — age_estimation lives on the liveness object
The liveness object on the session report includes age_estimation as a
number-of-years field on the same selfie capture:
- liveness.status "Approved" | "Declined" | "In Review" | "Not Finished"
- liveness.method "PASSIVE" | "FLASHING" | "ACTIVE_3D"
- liveness.score number 0-100 (normalized liveness score)
- liveness.reference_image signed URL to the captured selfie (60-minute TTL)
- liveness.age_estimation estimated age in years (e.g. 24.3)
- liveness.warnings Array of risk objects (see below)
### Path B (standalone) — top-level age_estimation block
- request_id uuid
- age_estimation.status "Approved" | "Declined" | "In Review"
- age_estimation.method "PASSIVE"
- age_estimation.score number 0-100 (passive-liveness score)
- age_estimation.age_estimation estimated age in years (e.g. 27.33)
- age_estimation.user_image.entities array of detected faces, each with
age, bbox, confidence, gender
- age_estimation.user_image.best_angle integer
- age_estimation.face_quality 0-100 face image quality score
- age_estimation.face_luminance 0-100 face luminance score
- age_estimation.warnings Array of risk objects (see below)
- created_at ISO8601
### Warning catalog (both paths)
- AGE_BELOW_MINIMUM estimated age below the configured threshold
- AGE_NOT_DETECTED unable to estimate age (quality / lighting)
- LOW_LIVENESS_SCORE passive-liveness score below threshold
- NO_FACE_DETECTED no face in the capture
- LIVENESS_FACE_ATTACK presentation attack suspected
- FACE_IN_BLOCKLIST face matches an entry in your blocklist
- POSSIBLE_DUPLICATED_FACE face matches a previously verified face
## 5. Hard rules — do not change
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: AGE_ESTIMATION, LIVENESS, ID_VERIFICATION,
FACE_MATCH, AML, IP_ANALYSIS.
- Method enum is UPPERCASE: PASSIVE, FLASHING, ACTIVE_3D.
- Auth header is x-api-key (lowercase, hyphenated).
- Webhook signature header is X-Signature-V2 (NOT X-Signature).
- Always verify webhook signatures before trusting payload data.
- Status casing matches exactly: "Approved", "Declined", "In Review",
"Not Finished" (title-cased, space-separated).
- Reference image / video URLs are signed and expire in 60 minutes —
store only the verdict + score, never the biometric media.
## 6. Pricing reference (public)
- AGE_ESTIMATION standalone or bundled inside a workflow: $0.10 per check
- Adaptive fallback to ID Verification (when triggered): $0.15 per check
- Bundled in a full KYC workflow alongside Liveness + ID + IP: $0.33 per session
- 500 free verifications every month, forever, on every account.
## 7. Verify your integration
- Sandbox starts on signup at https://business.didit.me — no separate flag.
- Test images: deterministic synthetic faces returned in sandbox
(predictable estimated age band; trigger AGE_BELOW_MINIMUM by sending
the canonical "minor" test image).
- Switch to live: flip the application environment toggle in console.
When in doubt: https://docs.didit.me/core-technology/age-estimation/overview
¿Necesita más contexto? Consulte la documentación completa del módulo.docs.didit.me →
Cumplimiento por diseño
Abre un nuevo país con un clic. Nosotros hacemos el trabajo duro.
Abrimos las filiales locales, aseguramos las licencias, realizamos las pruebas de penetración, obtenemos las certificaciones y nos alineamos con cada nueva regulación. Para enviar verificaciones en un nuevo país, activa un interruptor. Más de 220 países en vivo, auditados y probados trimestralmente — el único proveedor de identidad que un gobierno de un estado miembro de la UE ha calificado formalmente como más seguro que la verificación en persona.
Inferencia de extremo a extremo por sesión, servida en el borde.
$0.00
Por verificación de estimación de edad independiente.
Tres niveles, una lista de precios
Empiece gratis. Pague por uso. Escale a Enterprise.
500 verificaciones gratuitas cada mes, para siempre. Pago por uso para producción. Contratos personalizados, residencia de datos y SLAs (Acuerdos de Nivel de Servicio) en Enterprise.
Gratis
Gratis
$0 / mes. No se requiere tarjeta de crédito.
Paquete KYC gratuito (Verificación de ID + Prueba de vida pasiva + Coincidencia facial + Análisis de dispositivo e IP) — 500 / mes, cada mes