API de verificación de edad para webs y aplicaciones
Comprueba que un visitante alcanza tu umbral de edad, sin que tu aplicación guarde documentos de identidad ni fechas de nacimiento.
Comprueba que el visitante alcanza tu umbral de edad
Una sola sesión cubre las dos mitades: el visitante demuestra que controla su número por WhatsApp, responde una vez a la pregunta de edad y tu aplicación recibe el resultado — umbral alcanzado o no, según el umbral que tú fijes.
Cómo funciona la verificación de edad
Paso uno, verificar el número. Llamas a POST /start-verification con flow=age y muestras el enlace profundo de WhatsApp que devuelve, como código QR en escritorio o como botón en móvil. El visitante envía un mensaje ya escrito desde su propia cuenta de WhatsApp, así que el control del número queda demostrado por el propio acto de enviarlo y no por un código que tú le hayas mandado.
Paso dos, fijar el umbral. La misma llamada acepta un min_age opcional. Si lo omites se aplica el umbral configurado en tu cuenta, que es 18 mientras no lo cambies. min_age solo se acepta en flow=age y tiene que ser un entero positivo; cualquier otra cosa vuelve como un 400.
Paso tres, completar el control de edad. En cuanto se demuestra la mitad del teléfono, la respuesta trae un bloque age con status pending y una age_verification_url. Al visitante se le envía ese mismo enlace de un solo uso por WhatsApp, y tú puedes usarlo para que siga en el navegador en el que ya está. Responde en el proveedor de edad y vuelve a tu callback_url con token y age=verified, denied o failed añadidos.
Paso cuatro, recibir el resultado. Un segundo webhook, age_verification_result, se dispara cuando el proveedor responde, y GET /check-verification-status informa de lo mismo. El bloque age lleva status, verified, required — el umbral realmente comprobado —, verified_at y provider.
Conviene conocer una trampa antes de escribir el bucle de sondeo. El estado de la propia sesión llega a verified en cuanto se demuestra el número, mientras age.status sigue en pending. Toma el bloque age como señal del paso de edad, nunca el estado de la sesión.
Verificación del número + verificación de edad
Los dos pasos responden a preguntas distintas, y el flujo los mantiene separados a propósito. Enviar un mensaje de WhatsApp demuestra que el visitante controla ese número. No dice absolutamente nada de su edad: un número de teléfono no es prueba de edad, y ninguna parte de este flujo lo trata como tal.
Lo que te aporta el paso del teléfono es un sitio donde poner la respuesta. Un resultado de edad por sí solo es un hecho sin anclaje — alguien, en algún sitio, superó un umbral. Ligado a un número que el visitante acaba de usar de forma demostrable, se convierte en algo que sabrás reconocer en la siguiente visita.
Eso también abarata al visitante recurrente. Un resultado positivo se guarda un año asociado al número, así que quien ya superó el mismo umbral vuelve a demostrar el número y arrastra la respuesta anterior en lugar de volver al proveedor. Terminar el mensaje de WhatsApp con #reset se salta esa caché cuando necesitas una respuesta nueva.
Verificar la edad sin construir una base de identidades
La pregunta que hace un control de edad es un booleano. La mayoría de los datos que suelen recogerse para responderla no lo son, y eso es lo que hace que el archivo de documentos sea tan mal negocio: acabas guardando pasaportes y carnés de conducir para almacenar un sí.
Lo que tu aplicación necesita es poco. El resultado — verified, denied, failed o todavía pending. El umbral comprobado. Cuándo se respondió y qué proveedor respondió. El identificador de sesión y el número verificado que atan la respuesta al visitante que tienes delante. Eso es todo el bloque age, más lo que el flujo del teléfono ya devuelve.
Lo que tu aplicación no necesita es una fecha de nacimiento ni un documento de identidad, y la API no devuelve ninguno de los dos, así que no hay campo que registrar por accidente. Una respuesta positiva se guarda junto al número como la respuesta, el umbral y la fecha. Las credenciales del proveedor viven en secretos del lado del servidor, y lo que el proveedor tuviera que mirar para decidir no se te pasa a ti.
Nada de esto dice nada sobre tus propias obligaciones. Qué tienes que comprobar, durante cuánto tiempo debes poder acreditar que lo comprobaste y qué cuenta como método aceptable son preguntas para tu asesoría jurídica y tu regulador, no para un proveedor de API.
Verificación de edad frente a verificación de identidad
La verificación de edad responde a una pregunta: ¿este visitante alcanza el umbral de edad que has fijado? La verificación de identidad responde a otra: ¿quién es esta persona? Se venden juntas a menudo y mueven cantidades de datos muy distintas.
flow=age es del primer tipo. No devuelve nombre, ni fecha de nacimiento, ni nada procedente de un documento. No es KYC, y un resultado positivo no es una afirmación de identidad en la que apoyarte en otro sitio. Si tu obligación es saber quién es un cliente, esta no es la herramienta para esa parte.
También hereda el supuesto que hay debajo de todo control basado en el teléfono: que el número pertenece a quien lo está usando. Demostrar el control enviando un mensaje es terreno más firme que recibir un SMS, pero un adolescente con acceso al teléfono de un adulto es un escenario que ningún control remoto cierra del todo. El artículo sobre controles de edad que no acaban en una base de documentos, enlazado más abajo, entra en la arquitectura, los cuatro estados y los límites.
Integra la verificación de edad en tu aplicación
Son las dos llamadas REST de cualquier integración de Phone-Verif, con un parámetro más. Autentícate con tu clave de API en la cabecera x-api-key, abre la sesión con flow=age y lee el bloque age desde el endpoint de estado o desde el webhook.
- Visitante
- Verificación del número por WhatsApp
- Control de edad en el proveedor
- Resultado de edad
- Tu aplicación
Los dos pasos responden a preguntas distintas y se mantienen separados de principio a fin. Enviar el mensaje de WhatsApp demuestra que el visitante controla ese número; nunca vale como prueba de su edad. El resultado de edad lo produce el paso de edad.
curl -X POST "https://api.phone-verif.com/start-verification?flow=age&min_age=18" \
-H "x-api-key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"session_id": "checkout-4821", "callback_url": "https://your-app.example/age-checked"}'Abre una sesión con flow=age. Sin min_age se aplica el umbral configurado en tu cuenta, que es 18 mientras no lo cambies.
{
"status": "verified",
"age": { "status": "pending", "verified": false, "required": 18 },
"age_verification_url": "https://t.phone-verif.com/av/AbCd1234"
}La sesión llega a verified en cuanto se demuestra el número, mientras el paso de edad sigue pendiente. Lee age.status, no el estado de la sesión, para la respuesta de edad — y manda al visitante a age_verification_url para terminar el control en el navegador en el que ya está.
{
"event": "age_verification_result",
"session_id": "checkout-4821",
"validation_token": "...",
"age": {
"status": "verified",
"verified": true,
"required": 18,
"verified_at": "2026-09-01T22:00:00.000Z",
"provider": "ageverif"
}
}Cuando el proveedor responde, un segundo webhook lleva el resultado y el endpoint de estado devuelve el mismo bloque.
flow=age necesita un proveedor de edad configurado en tu cuenta. Sin él, la API responde 503 con el código age_not_configured, así que un error de configuración se distingue de una caída.
Preguntas frecuentes sobre verificación de edad
- ¿Puedo comprobar que los usuarios son mayores de 18?
- Sí. Abre la sesión con flow=age y omite min_age: el flujo comprueba entonces el umbral configurado en tu cuenta, que es 18 mientras no lo cambies en tus ajustes.
- ¿Puedo usar otra edad mínima?
- Sí. Pasa min_age en la llamada de inicio con el umbral que necesites. Tiene que ser un entero positivo, solo se acepta en flow=age y cualquier otra cosa se rechaza con un 400. Cada sesión conserva el umbral con el que se abrió, y ese umbral vuelve en el campo required del bloque age, de modo que quien lo lea después sabe qué se estableció realmente.
- ¿Tengo que guardar la fecha de nacimiento del usuario?
- No, y no podrías aunque quisieras: la API no devuelve ninguna. Lo que vuelve es si se alcanzó el umbral, cuál era ese umbral, cuándo se respondió y qué proveedor respondió.
- ¿Tengo que guardar documentos de identidad?
- No. El proveedor puede necesitar ver un documento para formar su respuesta; tu aplicación solo recibe la respuesta. La API no devuelve nada del documento, así que no hay nada que guardar.
- ¿La verificación de edad prueba la identidad de alguien?
- No. flow=age responde si la persona que tiene un número demostrado alcanza un umbral. No es verificación de identidad ni KYC: sin nombre, sin fecha de nacimiento, sin documento.
- ¿Qué pasa si la verificación de edad falla?
- denied y failed son resultados distintos y no deben mezclarse. denied es una decisión del proveedor, y repetir el control no cambiará la respuesta. failed significa que no se pudo alcanzar al proveedor, así que no se decidió nada y reintentar es razonable. Un rechazo o un fallo del proveedor no se factura; un control de edad completado se factura como una segunda unidad además de la verificación del número.
- ¿Puedo combinar verificación del número y verificación de edad?
- Eso es exactamente flow=age. Una sola sesión demuestra el número por WhatsApp y después ejecuta el paso de edad, y los dos resultados llegan en esa misma sesión. No hay dos integraciones ni dos identificadores que conciliar.
- ¿Puedo forzar un control nuevo para un visitante que vuelve?
- Sí. Un resultado positivo se reutiliza durante un año para el mismo número y el mismo umbral. Terminar el mensaje de verificación de WhatsApp con #reset se salta la respuesta en caché y devuelve al visitante al control completo.
Related
Casos de uso de la verificación de edad
Contenido adulto
Donde una casilla marcada ya no cuenta como control. El resultado de edad filtra el acceso antes de servir nada, y el visitante no te envía ningún documento.
Juego online
Cuentas de apuestas y casino que deben dejar fuera a los menores. El control encaja en el registro y, si tus propias reglas lo piden, antes de una acción sensible.
Alcohol y productos restringidos
Bebidas, tabaco, vapeadores, cuchillos, disolventes y pirotecnia. El control se pone delante del pago, sobre el pedido y no sobre la sesión de navegación.
Videojuegos
Títulos con clasificación por edad, chat y mecánicas de pago restringidas por debajo de cierta edad. El umbral es un parámetro de la petición: cada función puede pedir el suyo.
Marketplaces
Anuncios restringidos por ley o por tu propia política. Compradores y vendedores pueden estar sujetos a umbrales distintos abriendo la sesión con otro min_age.
Plataformas sociales y de comunidad
Reglas de edad mínima en cuentas, mensajes directos o funciones en directo. La respuesta queda ligada a un número demostrado, así que sobrevive al final de la sesión.
Build your verificación de edad flow today
Start integrating in minutes with clear documentation, SDKs, and global message delivery.