Introducción
Face ID permite hacer check-in y control de accesos por reconocimiento facial contra listas, registrando persona, punto, tiempo, geolocalización opcional, evidencia auditable, callback y consumo de créditos.
Regla baseUn punto define un servicio. En servicios no nominales, el punto se asocia a una lista.
Personas y listasUna persona puede estar en varias listas. Cada asociación persona-lista tiene estado y sincronización AWS propia.
NominalesLa URL nominal se define por persona + punto nominal mediante nominal_token.
Punto fijoVarias filas/listas pueden agruparse por punto_fijo_grupo, el Grupo asociativo punto fijo.
Quick guide
Flujo típico para una integración administrativa:
- Autenticar con usuario API master/admin.
- Crear una lista.
- Crear una persona con imagen y asociarla a la lista.
- Crear un punto con el servicio correspondiente.
- Usar la URL pública generada o simular una validación operativa.
- Consultar eventos y descargar evidencia.
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/eventos.php?user=nombre_usuario&limit=100' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
No exponer credenciales API en frontend. Los endpoints administrativos son para backend e integraciones controladas.
Autenticación
La API administrativa acepta credenciales de dashboard con rol master o admin. El gestor no opera API administrativa.
| Método | Detalle |
|---|
| Headers | X-FaceID-User y X-FaceID-Password |
| Basic Auth | Usuario y contraseña HTTP Basic. |
| Master | Puede operar distintos tenants indicando user. |
| Admin | Solo puede operar sobre su propio user/tenant. |
Servicios
checkin simple checkin_simplecheckin con ubicación checkin_geocheckin nominal checkin_nominalcheckin nominal con ubicación checkin_nominal_geopunto fijo punto_fijo
Nombre comercial recomendado: checkin nominal con ubicación, no “checkin nominal + ubicación”.
Health / Configuración pública
Endpoints públicos y de diagnóstico que consumen los fronts productivos.
GETHealth check/endpoints/health.php⌄
1Overview
Verifica que el servicio Face ID responda y que el backend esté disponible. Se usa como diagnóstico básico antes de probar el resto de endpoints.
2Endpoint
GET /endpoints/health.php
3Header
No requiere autenticación administrativa.
4Request Body / Params
No requiere body.
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/health.php'
6Response example 200
Mostrar response 200
{
"ok": true,
"service": "faceid",
"status": "healthy",
"time": "2026-06-01 18:00:00"
}
GETConfiguración pública de checkin/endpoints/puntos/config_publica.php?punto_token={token}⌄
1Overview
Devuelve la configuración pública de un punto para checkin simple o checkin con ubicación. No devuelve secretos administrativos.
2Endpoint
GET /endpoints/puntos/config_publica.php?punto_token={token}
3Header
No requiere autenticación administrativa.
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
punto_token | query | Sí | Token público del punto. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/puntos/config_publica.php?punto_token=TOKEN_PUBLICO'
6Response example 200
Mostrar response 200
{
"ok": true,
"punto": {
"id": 23,
"nombre": "suc1",
"tipo_servicio": "checkin_geo",
"threshold": 90,
"requiere_geo": 1
},
"parametros": {
"mostrar_resultado_match": 1,
"permite_reintento": 1
},
"billing": {
"can_use": true,
"message": null
}
}
GETConfiguración pública nominal/endpoints/personas/config_nominal_publica.php?nominal_token={token}⌄
1Overview
Devuelve la configuración de una invitación o acceso nominal. La URL usa nominal_token para no exponer persona_id ni aws_face_id.
2Endpoint
GET /endpoints/personas/config_nominal_publica.php?nominal_token={token}
3Header
No requiere autenticación administrativa.
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
nominal_token | query | Sí | Token nominal generado para persona + punto. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/personas/config_nominal_publica.php?nominal_token=NOMINAL_TOKEN'
6Response example 200
Mostrar response 200
{
"ok": true,
"nominal": {
"id": 5,
"tipo_servicio": "checkin_nominal_geo",
"temporalidad": "permanente",
"estado": "Activo"
},
"punto": {
"id": 23,
"nombre": "suc1",
"threshold": 90
},
"persona": {
"id": 20,
"nombre": "nombre_persona",
"apellido": "apellido_persona"
},
"billing": {
"can_use": true
}
}
GETConfiguración pública punto fijo/endpoints/puntos/config_fijo_publica.php?user={tenant}&punto_fijo_grupo={grupo}⌄
1Overview
Devuelve la configuración operativa de un grupo asociativo punto fijo y todas sus listas activas. El front fijo usa este endpoint para saber qué listas consultar y qué parámetros técnicos aplicar.
2Endpoint
GET /endpoints/puntos/config_fijo_publica.php?user={tenant}&punto_fijo_grupo={grupo}
3Header
No requiere autenticación administrativa.
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | query | Sí | Tenant. |
punto_fijo_grupo | query | Sí | Grupo asociativo punto fijo. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/puntos/config_fijo_publica.php?user=nombre_usuario&punto_fijo_grupo=fijo_1'
6Response example 200
Mostrar response 200
{
"ok": true,
"user": "nombre_usuario",
"punto_fijo_grupo": "fijo_1",
"historial_punto_fijo": 0,
"max_faces": 1,
"tecnica": {
"capacidad": "alta",
"detect_interval_ms": 100,
"size_scale_image": 320
},
"listas": [
{
"punto_id": 28,
"lista_id": 21,
"lista_nombre": "Empleados",
"threshold": 90
}
],
"billing": {
"can_use": true
}
}
Listas CRUD
Gestión de listas. Una lista agrupa personas contra las que se valida un punto no nominal.
GETListar listas/endpoints/api/listas.php?user={tenant}&limit=100⌄
1Overview
Lista las listas disponibles del tenant. Master puede indicar user; admin queda limitado a su propio tenant.
2Endpoint
GET /endpoints/api/listas.php?user={tenant}&limit=100
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | query | Sí para master | Tenant a consultar. |
limit | query | No | Cantidad máxima de registros. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/listas.php?user=nombre_usuario&limit=100' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
6Response example 200
Mostrar response 200
{
"ok": true,
"count": 1,
"listas": [
{
"id": 23,
"user": "nombre_usuario",
"nombre": "Clientes",
"estado": "Activo",
"created_at": "2026-06-01 18:40:00"
}
]
}
POSTCrear lista/endpoints/api/listas.php⌄
1Overview
Crea una lista operativa. El slug y la collection AWS se generan internamente para evitar errores manuales.
2Endpoint
POST /endpoints/api/listas.php
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | form | Sí para master | Tenant dueño de la lista. |
nombre | form | Sí | Nombre visible de la lista. |
estado | form | No | Activo/Inactivo. Default: Activo. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/listas.php' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard' \
--form 'user="nombre_usuario"' \
--form 'nombre="Clientes"' \
--form 'estado="Activo"'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "created",
"lista": {
"id": 23,
"user": "nombre_usuario",
"nombre": "Clientes",
"slug": "clientes",
"estado": "Activo",
"aws_collection_id": "fid-nombre_usuario-clientes-23"
}
}
PUTActualizar lista/endpoints/api/listas.php⌄
1Overview
Actualiza nombre o estado de una lista. Si cambia el nombre, se conserva la lógica operativa existente.
2Endpoint
PUT /endpoints/api/listas.php
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
id | json | Sí | ID de lista. |
nombre | json | No | Nuevo nombre visible. |
estado | json | No | Activo/Inactivo/Eliminado. |
5CURL example
Mostrar cURL
curl --location --request PUT 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/listas.php' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard' \
--header 'Content-Type: application/json' \
--data '{"id":23,"nombre":"Clientes VIP","estado":"Activo"}'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "updated",
"lista": {
"id": 23,
"nombre": "Clientes VIP",
"estado": "Activo"
}
}
DELETEEliminar lista/endpoints/api/listas.php?id={lista_id}⌄
1Overview
Marca una lista como eliminada. No es un hard delete; conserva trazabilidad histórica.
2Endpoint
DELETE /endpoints/api/listas.php?id={lista_id}
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
id | query | Sí | ID de lista. |
5CURL example
Mostrar cURL
curl --location --request DELETE 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/listas.php?id=23' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "deleted",
"id": 23
}
Personas CRUD
Gestión de personas, imágenes cifradas y asociaciones persona-lista.
GETListar personas/endpoints/api/personas.php?user={tenant}&limit=100⌄
1Overview
Lista personas y sus asociaciones a listas. Una persona puede aparecer en varias filas si pertenece a varias listas.
2Endpoint
GET /endpoints/api/personas.php?user={tenant}&limit=100
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | query | Sí para master | Tenant. |
limit | query | No | Cantidad máxima. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/personas.php?user=nombre_usuario&limit=100' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
6Response example 200
Mostrar response 200
{
"ok": true,
"count": 1,
"personas": [
{
"persona_lista_id": 31,
"persona_id": 23,
"nombre": "nombre_persona",
"apellido": "apellido_persona",
"identificador": "12345678",
"lista_id": 23,
"lista_nombre": "Clientes",
"estado_asociacion": "Activo",
"imagen_principal": {
"url": "https://biometrics.com.ar/api/faceid_dev/v1/endpoints/personas/imagen_persona.php?persona_id=23&path=...jpg.enc"
}
}
]
}
POSTCrear persona con imagen/endpoints/api/personas.php⌄
1Overview
Crea o asocia una persona a una lista, guarda la imagen cifrada y sincroniza AWS Rekognition para que quede disponible para búsquedas.
2Endpoint
POST /endpoints/api/personas.php
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | form | Sí para master | Tenant. |
nombre | form | Sí | Nombre. |
apellido | form | No | Apellido. |
identificador | form | Sí | Documento, legajo u otro identificador único del tenant. |
lista_id | form | Sí | Lista a asociar. |
estado | form | No | Estado de la persona. Default Activo. |
imagen | file | Sí recomendado | Imagen frontal. Se guarda cifrada como .enc. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/personas.php' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard' \
--header 'Cookie: PHPSESSID=jq63jh6h2sd054bep53fuvnr4s' \
--form 'user="nombre_usuario"' \
--form 'nombre="nombre_persona"' \
--form 'apellido="apellido_persona"' \
--form 'identificador="12345678"' \
--form 'lista_id="1"' \
--form 'estado="Activo"' \
--form 'imagen=@"/path/to/file.jpg"'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "created",
"persona": {
"persona_lista_id": 31,
"id": 23,
"persona_id": 23,
"user": "nombre_usuario",
"nombre": "nombre_persona",
"apellido": "apellido_persona",
"identificador": "12345678",
"estado": "Activo",
"lista_id": 23,
"lista_nombre": "Clientes",
"estado_asociacion": "Activo",
"aws_sync_estado": "Synced",
"aws_synced_at": "2026-06-01 18:48:36",
"imagen_principal": {
"id": 17,
"archivo_relativo": "users/nombre_usuario/listas/23/personas/23/DB_20260601_184833_171fde.jpg.enc",
"url": "https://biometrics.com.ar/api/faceid_dev/v1/endpoints/personas/imagen_persona.php?persona_id=23&path=users%2Fnombre_usuario%2Flistas%2F23%2Fpersonas%2F23%2FDB_20260601_184833_171fde.jpg.enc",
"aws_face_id": null,
"aws_image_id": null,
"aws_external_image_id": null
},
"created_at": "2026-06-01 18:48:33",
"updated_at": "2026-06-01 18:48:36"
},
"imagen": {
"ok": true,
"imagen_id": 17,
"archivo_relativo": "users/nombre_usuario/listas/23/personas/23/DB_20260601_184833_171fde.jpg.enc",
"mime_type": "image/jpeg",
"sha256": "e37abafe8db5cbd985e7543b39f50921a3603148725a4359520392f7d1c5f034"
},
"sync_aws": {
"ok": true,
"persona_lista_id": 31,
"collection_id": "fid-nombre_usuario-clientes-23",
"aws_face_id": "8d0cd08a-b507-4c27-a8a0-2d87619be34a",
"aws_image_id": "86a8feae-fa26-33c1-b8e4-c98f42dbb79d",
"external_image_id": "pl31_p23_l23_img17"
}
}
PUTActualizar persona/endpoints/api/personas.php⌄
1Overview
Actualiza datos de la persona o su asociación. Puede reemplazar la imagen y resincronizar AWS.
2Endpoint
PUT /endpoints/api/personas.php
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
persona_id | json/form | Sí | ID de persona. |
nombre | json/form | No | Nombre. |
apellido | json/form | No | Apellido. |
estado | json/form | No | Estado persona. |
lista_id | json/form | No | Lista a asociar o actualizar. |
5CURL example
Mostrar cURL
curl --location --request PUT 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/personas.php' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard' \
--header 'Content-Type: application/json' \
--data '{"persona_id":23,"nombre":"nombre_persona","apellido":"apellido_persona","estado":"Activo"}'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "updated",
"persona": {
"persona_id": 23,
"nombre": "nombre_persona",
"apellido": "apellido_persona",
"estado": "Activo"
}
}
DELETEEliminar persona o asociación/endpoints/api/personas.php?persona_id={persona_id}⌄
1Overview
Elimina lógicamente una persona o una asociación persona-lista/nominal según los parámetros enviados.
2Endpoint
DELETE /endpoints/api/personas.php?persona_id={persona_id}
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
persona_id | query | Sí | ID de persona. |
persona_lista_id | query | No | Si se informa, elimina solo esa asociación. |
5CURL example
Mostrar cURL
curl --location --request DELETE 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/personas.php?persona_id=23&persona_lista_id=31' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "deleted",
"persona_id": 23,
"persona_lista_id": 31
}
Puntos CRUD
Gestión de puntos, servicios, URL pública/operativa y reglas geo/técnicas.
GETListar puntos/endpoints/api/puntos.php?user={tenant}&limit=100⌄
1Overview
Lista puntos del tenant. Devuelve puntos checkin, nominales y punto fijo.
2Endpoint
GET /endpoints/api/puntos.php?user={tenant}&limit=100
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | query | Sí para master | Tenant. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/puntos.php?user=nombre_usuario&limit=100' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
6Response example 200
Mostrar response 200
{
"ok": true,
"count": 1,
"puntos": [
{
"id": 23,
"nombre": "suc1",
"tipo_servicio": "checkin_geo",
"servicio_nombre": "checkin con ubicación",
"lista_id": 15,
"threshold": 90,
"estado": "Activo",
"url_publica": "https://biometrics.com.ar/api/faceid_dev/v1/front/checkin_geo.html?punto_token=..."
}
]
}
POSTCrear punto/endpoints/api/puntos.php⌄
1Overview
Crea un punto de servicio. Para punto fijo puede informar punto_fijo_grupo; para servicios geo debe informar lat/lng/radio.
2Endpoint
POST /endpoints/api/puntos.php
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | form/json | Sí para master | Tenant. |
nombre | form/json | Sí | Nombre del punto. |
tipo_servicio | form/json | Sí | checkin_simple, checkin_geo, checkin_nominal, checkin_nominal_geo o punto_fijo. |
lista_id | form/json | Según servicio | Obligatorio en no nominales; no corresponde en nominales. |
threshold | form/json | No | Threshold AWS. Default 90. |
geo_lat/geo_lng/radio_m | form/json | Solo geo | Cobertura permitida. |
punto_fijo_grupo | form/json | Solo punto fijo | Grupo asociativo punto fijo. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/puntos.php' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard' \
--form 'user="nombre_usuario"' \
--form 'nombre="suc1"' \
--form 'tipo_servicio="checkin_geo"' \
--form 'lista_id="15"' \
--form 'threshold="90"' \
--form 'geo_lat="-34.54652"' \
--form 'geo_lng="-58.47"' \
--form 'radio_m="100"'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "created",
"punto": {
"id": 23,
"nombre": "suc1",
"tipo_servicio": "checkin_geo",
"lista_id": 15,
"token_publico": "...",
"url_publica": "https://biometrics.com.ar/api/faceid_dev/v1/front/checkin_geo.html?punto_token=...",
"estado": "Activo"
}
}
PUTActualizar punto/endpoints/api/puntos.php⌄
1Overview
Actualiza configuración del punto. En nominales, si se regenera token público se actualizan las URLs nominales relacionadas.
2Endpoint
PUT /endpoints/api/puntos.php
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
id | json | Sí | ID del punto. |
threshold | json | No | Nuevo threshold. |
estado | json | No | Activo/Inactivo/Eliminado. |
regenerar_token | json | No | 1 para regenerar token público. |
5CURL example
Mostrar cURL
curl --location --request PUT 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/puntos.php' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard' \
--header 'Content-Type: application/json' \
--data '{"id":23,"threshold":92,"estado":"Activo"}'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "updated",
"punto": {
"id": 23,
"threshold": 92,
"estado": "Activo"
}
}
DELETEEliminar punto/endpoints/api/puntos.php?id={punto_id}⌄
1Overview
Elimina lógicamente un punto. No borra eventos históricos asociados.
2Endpoint
DELETE /endpoints/api/puntos.php?id={punto_id}
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
id | query | Sí | ID del punto. |
5CURL example
Mostrar cURL
curl --location --request DELETE 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/puntos.php?id=23' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "deleted",
"id": 23
}
Nominales CRUD
Gestión de relaciones persona + punto nominal, con temporalidad permanente o invitación.
GETListar nominales/endpoints/api/nominales.php?user={tenant}&limit=100⌄
1Overview
Lista relaciones nominales. Cada relación genera una URL con nominal_token.
2Endpoint
GET /endpoints/api/nominales.php?user={tenant}&limit=100
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | query | Sí para master | Tenant. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/nominales.php?user=nombre_usuario&limit=100' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
6Response example 200
Mostrar response 200
{
"ok": true,
"count": 1,
"nominales": [
{
"id": 7,
"persona_id": 23,
"punto_id": 24,
"tipo_servicio": "checkin_nominal_geo",
"token_publico": "...",
"url_publica": "https://biometrics.com.ar/api/faceid_dev/v1/front/checkin_nominal_geo.html?nominal_token=...",
"estado": "Activo",
"temporalidad": "permanente"
}
]
}
POSTCrear relación nominal/endpoints/api/nominales.php⌄
1Overview
Asocia una persona a un punto nominal. Puede ser permanente o invitación por fecha/usos.
2Endpoint
POST /endpoints/api/nominales.php
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | form/json | Sí para master | Tenant. |
persona_id | form/json | Sí | Persona nominada. |
punto_id | form/json | Sí | Punto de servicio nominal. |
temporalidad | form/json | No | permanente o invitacion. |
max_usos | form/json | Según modo | Cantidad máxima de usos si invitación por usos. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/nominales.php' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard' \
--form 'user="nombre_usuario"' \
--form 'persona_id="23"' \
--form 'punto_id="24"' \
--form 'temporalidad="permanente"'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "created",
"nominal": {
"id": 7,
"persona_id": 23,
"punto_id": 24,
"nominal_token": "...",
"url_publica": "https://biometrics.com.ar/api/faceid_dev/v1/front/checkin_nominal.html?nominal_token=...",
"estado": "Activo"
}
}
PUTActualizar nominal/endpoints/api/nominales.php⌄
1Overview
Actualiza estado, temporalidad, fechas o cantidad de usos de una relación nominal.
2Endpoint
PUT /endpoints/api/nominales.php
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
id | json | Sí | ID nominal. |
estado | json | No | Activo/Inactivo/Eliminado. |
temporalidad | json | No | permanente/invitacion. |
5CURL example
Mostrar cURL
curl --location --request PUT 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/nominales.php' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard' \
--header 'Content-Type: application/json' \
--data '{"id":7,"estado":"Activo","temporalidad":"permanente"}'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "updated",
"nominal": {
"id": 7,
"estado": "Activo",
"temporalidad": "permanente"
}
}
DELETEEliminar nominal/endpoints/api/nominales.php?id={nominal_id}⌄
1Overview
Elimina lógicamente una relación nominal. La URL deja de quedar vigente.
2Endpoint
DELETE /endpoints/api/nominales.php?id={nominal_id}
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
id | query | Sí | ID nominal. |
5CURL example
Mostrar cURL
curl --location --request DELETE 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/nominales.php?id=7' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
6Response example 200
Mostrar response 200
{
"ok": true,
"accion": "deleted",
"id": 7
}
Eventos / Online
Consulta de eventos registrados, imagen cifrada y polling online.
GETListar eventos/endpoints/api/eventos.php?user={tenant}&limit=100⌄
1Overview
Lista eventos con detalle operativo: persona, punto, lista, decisión, créditos, AWS, dispositivo, imagen cifrada y geo si corresponde.
2Endpoint
GET /endpoints/api/eventos.php?user={tenant}&limit=100
3Header
| Header | Req. | Descripción |
|---|
X-FaceID-User | Sí | Usuario del dashboard con rol admin o master. |
X-FaceID-Password | Sí | Contraseña del dashboard del usuario API. |
Content-Type | Según método | application/json para PUT/PATCH; multipart/form-data para POST con imagen. |
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
user | query | Sí para master | Tenant. |
limit | query | No | Cantidad máxima. |
punto_id | query | No | Filtro por punto. |
nominal_id | query | No | Filtro por nominal. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/api/eventos.php?user=nombre_usuario&limit=100' \
--header 'X-FaceID-User: admin@cliente.com' \
--header 'X-FaceID-Password: password_dashboard'
6Response example 200
Mostrar response 200
{
"ok": true,
"count": 1,
"eventos": [
{
"id": 193,
"creditos": "1.00",
"request_id": "fijo_1780329123755_c16efb72b3cd8",
"user": "nombre_usuario",
"lista_id": 21,
"lista_nombre": "Empleados",
"persona_id": 21,
"persona_lista_id": 29,
"persona_nombre": "nombre_persona apellido_persona",
"persona_nombre_completo": "nombre_persona apellido_persona",
"persona_identificador": "1112",
"punto_id": 28,
"punto_nombre": "Puerta",
"tipo_servicio": "punto_fijo",
"resultado": "match",
"decision": "permitido",
"score": "99.9793",
"imagen_url": "https://biometrics.com.ar/api/faceid_dev/v1/endpoints/eventos/imagen_evento.php?id=193&path=...jpg.enc",
"created_at": "2026-06-01 12:52:04"
}
]
}
GETPolling online/dashboard/eventos_live.php?last_id=0&limit=100⌄
1Overview
Endpoint interno usado por pantallas online del dashboard. Devuelve eventos nuevos desde last_id.
2Endpoint
GET /dashboard/eventos_live.php?last_id=0&limit=100
3Header
No requiere autenticación administrativa.
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
last_id | query | No | Último ID recibido. |
limit | query | No | Cantidad máxima. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/dashboard/eventos_live.php?last_id=0&limit=100'
6Response example 200
Mostrar response 200
{
"ok": true,
"last_id": 193,
"eventos": [
{
"id": 193,
"decision": "permitido",
"persona_nombre": "nombre_persona apellido_persona",
"evento_hora": "12:52:04",
"creditos": "1.00"
}
]
}
GETVer imagen de evento/endpoints/eventos/imagen_evento.php?id={evento_id}&path={path}⌄
1Overview
Sirve una imagen de evento, descifrándola si está guardada como .enc. Se usa en dashboard y API.
2Endpoint
GET /endpoints/eventos/imagen_evento.php?id={evento_id}&path={path}
3Header
No requiere autenticación administrativa.
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
id | query | Sí | ID del evento. |
path | query | Sí | Ruta relativa cifrada. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/eventos/imagen_evento.php?id=193&path=users%2Fnombre_usuario%2Feventos%2F2026%2F06%2Fevento.jpg.enc'
6Response example 200
Mostrar response 200
{
"ok": true,
"content_type": "image/jpeg",
"body": "binary image response"
}
Validaciones operativas / Registrar evento
Endpoint que usan los fronts productivos para registrar eventos reales.
POSTRegistrar checkin por punto_token/endpoints/eventos/registrar_checkin.php⌄
1Overview
Ejecuta la validación operativa para checkin simple o con ubicación. Registra evento, consume crédito, guarda imagen cifrada, loguea y dispara callback si está activo.
2Endpoint
POST /endpoints/eventos/registrar_checkin.php
3Header
No requiere autenticación administrativa.
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
punto_token | form | Sí | Token público del punto. |
imagen | file | Sí | Imagen capturada por el front. |
tipo_servicio | form | No | checkin_simple/checkin_geo. |
lat/lng/accuracy_metros | form | Si geo | Coordenadas del navegador. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/eventos/registrar_checkin.php' \
--form 'punto_token="TOKEN_PUBLICO"' \
--form 'tipo_servicio="checkin_geo"' \
--form 'lat="-34.5461326"' \
--form 'lng="-58.4703147"' \
--form 'imagen=@"/path/to/capture.jpg"'
6Response example 200
Mostrar response 200
{
"ok": true,
"request_id": "fid_...",
"evento_id": 175,
"resultado": "no_geo",
"decision": "denegado",
"persona": {
"id": 20,
"nombre": "nombre_persona",
"apellido": "apellido_persona",
"identificador": "1231"
},
"score": 99.9816,
"callback": {
"enabled": true,
"sent": true,
"http_code": 200
}
}
POSTRegistrar checkin nominal/endpoints/eventos/registrar_checkin.php⌄
1Overview
Valida contra una persona nominada mediante nominal_token. Se usa para checkin nominal y checkin nominal con ubicación.
2Endpoint
POST /endpoints/eventos/registrar_checkin.php
3Header
No requiere autenticación administrativa.
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
nominal_token | form | Sí | Token nominal. |
imagen | file | Sí | Imagen capturada. |
lat/lng | form | Si nominal geo | Coordenadas si el servicio requiere ubicación. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/eventos/registrar_checkin.php' \
--form 'nominal_token="NOMINAL_TOKEN"' \
--form 'imagen=@"/path/to/capture.jpg"'
6Response example 200
Mostrar response 200
{
"ok": true,
"evento_id": 180,
"resultado": "match",
"decision": "permitido",
"tipo_servicio": "checkin_nominal"
}
POSTRegistrar punto fijo/endpoints/eventos/registrar_checkin.php⌄
1Overview
Ejecuta búsqueda en todas las listas activas del grupo fijo. Si no hay match en ninguna, registra un único evento con lista conceptual todas.
2Endpoint
POST /endpoints/eventos/registrar_checkin.php
3Header
No requiere autenticación administrativa.
4Request Body / Params
| Campo | Tipo | Req. | Descripción |
|---|
fixed_group_search | form | Sí | Enviar 1. |
user | form | Sí | Tenant. |
punto_fijo_grupo | form | Sí | Grupo asociativo punto fijo. |
imagen | file | Sí | Captura del rostro. |
5CURL example
Mostrar cURL
curl --location 'https://biometrics.com.ar/api/faceid_dev/v1/endpoints/eventos/registrar_checkin.php' \
--form 'fixed_group_search="1"' \
--form 'user="nombre_usuario"' \
--form 'punto_fijo_grupo="fijo_1"' \
--form 'tipo_servicio="punto_fijo"' \
--form 'imagen=@"/path/to/capture.jpg"'
6Response example 200
Mostrar response 200
{
"ok": true,
"evento_id": 193,
"resultado": "match",
"decision": "permitido",
"lista": {
"id": 21,
"nombre": "Empleados"
},
"persona": {
"id": 21,
"nombre": "nombre_persona",
"apellido": "apellido_persona"
},
"matches_count": 1
}
Callbacks
Si el tenant tiene callback activo, registrar_checkin.php envía un payload cifrado AES-256-CBC. La respuesta contiene schema_version, source, event, imagen_base64 como Data URI y generated_at.
{
"ok": true,
"event_id": 193,
"method": "aes-256-cbc",
"payload": "...",
"key_source": "dashboard_admin_password_hash"
}
Errores comunes
| Código | Significado | Acción sugerida |
|---|
| 400 | Parámetros incompletos o inválidos. | Revisar body/query y campos requeridos. |
| 401 | Credenciales inválidas. | Verificar X-FaceID-User y X-FaceID-Password. |
| 403 | Rol sin permiso o tenant no autorizado. | Usar admin/master correcto. |
| 402 | Sin créditos activos. | Revisar Administración / modalidad activa. |
| 409 | Duplicado funcional. | Ejemplo: persona con identificador existente o punto fijo grupo+lista duplicado. |