Face ID API

Documentación técnica

API para gestión de listas, personas, puntos, relaciones nominales, eventos y validaciones operativas. Cada acción despliega overview, endpoint, headers, body, cURL y respuesta 200 para facilitar pruebas e integración.

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:

  1. Autenticar con usuario API master/admin.
  2. Crear una lista.
  3. Crear una persona con imagen y asociarla a la lista.
  4. Crear un punto con el servicio correspondiente.
  5. Usar la URL pública generada o simular una validación operativa.
  6. 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étodoDetalle
HeadersX-FaceID-User y X-FaceID-Password
Basic AuthUsuario y contraseña HTTP Basic.
MasterPuede operar distintos tenants indicando user.
AdminSolo 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

CampoTipoReq.Descripción
punto_tokenqueryToken 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

CampoTipoReq.Descripción
nominal_tokenqueryToken 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

CampoTipoReq.Descripción
userqueryTenant.
punto_fijo_grupoqueryGrupo 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
userquerySí para masterTenant a consultar.
limitqueryNoCantidad 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
userformSí para masterTenant dueño de la lista.
nombreformNombre visible de la lista.
estadoformNoActivo/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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
idjsonID de lista.
nombrejsonNoNuevo nombre visible.
estadojsonNoActivo/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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
idqueryID 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
userquerySí para masterTenant.
limitqueryNoCantidad 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
userformSí para masterTenant.
nombreformNombre.
apellidoformNoApellido.
identificadorformDocumento, legajo u otro identificador único del tenant.
lista_idformLista a asociar.
estadoformNoEstado de la persona. Default Activo.
imagenfileSí recomendadoImagen 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
persona_idjson/formID de persona.
nombrejson/formNoNombre.
apellidojson/formNoApellido.
estadojson/formNoEstado persona.
lista_idjson/formNoLista 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
persona_idqueryID de persona.
persona_lista_idqueryNoSi 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
userquerySí para masterTenant.

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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
userform/jsonSí para masterTenant.
nombreform/jsonNombre del punto.
tipo_servicioform/jsoncheckin_simple, checkin_geo, checkin_nominal, checkin_nominal_geo o punto_fijo.
lista_idform/jsonSegún servicioObligatorio en no nominales; no corresponde en nominales.
thresholdform/jsonNoThreshold AWS. Default 90.
geo_lat/geo_lng/radio_mform/jsonSolo geoCobertura permitida.
punto_fijo_grupoform/jsonSolo punto fijoGrupo 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
idjsonID del punto.
thresholdjsonNoNuevo threshold.
estadojsonNoActivo/Inactivo/Eliminado.
regenerar_tokenjsonNo1 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
idqueryID 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
userquerySí para masterTenant.

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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
userform/jsonSí para masterTenant.
persona_idform/jsonPersona nominada.
punto_idform/jsonPunto de servicio nominal.
temporalidadform/jsonNopermanente o invitacion.
max_usosform/jsonSegún modoCantidad 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
idjsonID nominal.
estadojsonNoActivo/Inactivo/Eliminado.
temporalidadjsonNopermanente/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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
idqueryID 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

HeaderReq.Descripción
X-FaceID-UserUsuario del dashboard con rol admin o master.
X-FaceID-PasswordContraseña del dashboard del usuario API.
Content-TypeSegún métodoapplication/json para PUT/PATCH; multipart/form-data para POST con imagen.

4Request Body / Params

CampoTipoReq.Descripción
userquerySí para masterTenant.
limitqueryNoCantidad máxima.
punto_idqueryNoFiltro por punto.
nominal_idqueryNoFiltro 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

CampoTipoReq.Descripción
last_idqueryNoÚltimo ID recibido.
limitqueryNoCantidad 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

CampoTipoReq.Descripción
idqueryID del evento.
pathqueryRuta 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

CampoTipoReq.Descripción
punto_tokenformToken público del punto.
imagenfileImagen capturada por el front.
tipo_servicioformNocheckin_simple/checkin_geo.
lat/lng/accuracy_metrosformSi geoCoordenadas 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

CampoTipoReq.Descripción
nominal_tokenformToken nominal.
imagenfileImagen capturada.
lat/lngformSi nominal geoCoordenadas 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

CampoTipoReq.Descripción
fixed_group_searchformEnviar 1.
userformTenant.
punto_fijo_grupoformGrupo asociativo punto fijo.
imagenfileCaptura 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ódigoSignificadoAcción sugerida
400Parámetros incompletos o inválidos.Revisar body/query y campos requeridos.
401Credenciales inválidas.Verificar X-FaceID-User y X-FaceID-Password.
403Rol sin permiso o tenant no autorizado.Usar admin/master correcto.
402Sin créditos activos.Revisar Administración / modalidad activa.
409Duplicado funcional.Ejemplo: persona con identificador existente o punto fijo grupo+lista duplicado.