Fichajes del período
https://api.afer.pro/api/v1/employees/times
GET /api/v1/employees/{id}/times
POST https://api.afer.pro/consultarFichajes
Los registros de jornada entre dos fechas: entrada, salida y horas de cada apunte.
El detalle apunte a apunte del registro de jornada. Cada fila lleva su entrada y su salida con fecha, hora y método (app, tarjeta, kiosco…), las horas efectivas entre ambas y, si se imputó, el proyecto o la tarea.
Los apuntes abiertos —alguien que ha fichado la entrada y aún no la salida— llegan con abierto: true, la salida a null y horas: 0. No suman en ningún agregado hasta que se cierran.
El filtro por fechas se aplica sobre la fecha de entrada: una jornada de noche que empieza el 31 y acaba el 1 pertenece al día 31.
Envía tus claves API en las cabeceras X-API-KEY y X-API-SECRET. La cuenta sobre la que se opera se resuelve automáticamente a partir de la clave. Cómo obtener tus claves →
Este endpoint requiere autenticación con API key: sin credenciales responde 401.
Solo lectura. El registro de jornada es un libro legal y solo se alimenta desde la app y el circuito interno: la API no crea, no modifica y no borra fichajes, y no hay previsión de que lo haga.
Parámetros del cuerpo
El cuerpo de la petición es un objeto JSON con Content-Type: application/json.
fecha_iniciodateobligatorio | Inicio del período, incluido. Formato YYYY-MM-DD. |
fecha_findateobligatorio | Fin del período, incluido. |
empleadoIdstringopcional | Solo los fichajes de esta persona. También disponible como GET /api/v1/employees/{id}/times. |
proyectoIdstringopcional | Solo los fichajes imputados a este proyecto. |
paginaintopcional | Página a devolver. Por defecto 1. |
por_paginaintopcional | Resultados por página. Por defecto 200, máximo 1000. |
Ejemplo de petición
curl -X GET 'https://api.afer.pro/api/v1/employees/times?fecha_inicio=2026-05-01&fecha_fin=2026-05-31&empleadoId=eMp001' \
-H 'X-API-KEY: afer_tk_TU_TOKEN' \
-H 'X-API-SECRET: afer_sk_TU_SECRET'
<?php
$ch = curl_init('https://api.afer.pro/api/v1/employees/times?fecha_inicio=2026-05-01&fecha_fin=2026-05-31&empleadoId=eMp001');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-KEY: afer_tk_TU_TOKEN',
'X-API-SECRET: afer_sk_TU_SECRET',
]);
$respuesta = json_decode(curl_exec($ch), true);
curl_close($ch);
const respuesta = await fetch('https://api.afer.pro/api/v1/employees/times?fecha_inicio=2026-05-01&fecha_fin=2026-05-31&empleadoId=eMp001', {
method: 'GET',
headers: {
'X-API-KEY': 'afer_tk_TU_TOKEN',
'X-API-SECRET': 'afer_sk_TU_SECRET'
}
});
const resultado = await respuesta.json();
Respuesta
{
"errorCode": 200,
"errorMsg": "",
"data": {
"total_fichajes": 2,
"pagina": 1,
"por_pagina": 200,
"num_paginas": 1,
"fichajes": [
{
"fichajeId": "fIc801…",
"empleado": {
"empleadoId": "eMp001…",
"nombre": "Ana",
"apellidos": "Pons Ferrer"
},
"entrada": {
"fecha": "2026-05-04",
"hora": "08:00",
"metodo": "app"
},
"salida": {
"fecha": "2026-05-04",
"hora": "16:30",
"metodo": "app"
},
"abierto": false,
"horas": 8.5,
"proyectoId": "aBc123XyZ…",
"tareaId": null,
"observaciones": null
},
{
"fichajeId": "fIc802…",
"empleado": {
"empleadoId": "eMp001…",
"nombre": "Ana",
"apellidos": "Pons Ferrer"
},
"entrada": {
"fecha": "2026-05-05",
"hora": "08:02",
"metodo": "app"
},
"salida": {
"fecha": null,
"hora": null,
"metodo": null
},
"abierto": true,
"horas": 0,
"proyectoId": null,
"tareaId": null,
"observaciones": null
}
]
}
}
- Para el total por persona y su desviación frente a lo planificado, consultarResumenHorario.
- Para el coste de esas horas repartido por obra, consultarTiemposProyecto.