Calendario laboral
https://api.afer.pro/api/v1/work-calendar
GET /api/v1/employees/{id}/work-calendar
POST https://api.afer.pro/consultarCalendarioLaboral
Los días no laborables de un período: los de la empresa y, si pides una persona, también los suyos.
Hay dos ámbitos de días no laborables y este endpoint devuelve uno o los dos según lo que pidas:
- Sin
empleadoId: solo el calendario de empresa — festivos nacionales, autonómicos, locales y cierres. Es el que aplica a todo el mundo. - Con
empleadoId: el de empresa más los apuntes de esa persona (vacaciones, bajas, permisos), mezclados y ordenados por fecha. Eso es su calendario efectivo: los días que realmente no trabaja.
Cada apunte dice de dónde sale en ambito (empresa o empleado), así que puedes pintarlos distinto o quedarte solo con unos.
Se devuelve todo apunte que solape el rango, aunque empiece antes o acabe después: un cierre de dos semanas aparece aunque consultes solo un día de por medio. dias_en_periodo son los días naturales del tramo que caen dentro de lo que has pedido.
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. Igual que el resto del área de control horario, la API no escribe calendario.
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 | Añade los apuntes de esta persona a los de empresa. Es el empleadoId de consultarEmpleados. También disponible como GET /api/v1/employees/{id}/work-calendar. |
incluir_rechazadasboolopcional | Con true se incluyen también las solicitudes del empleado que fueron rechazadas. Solo aplica al ámbito empleado. |
Ejemplo de petición
curl -X GET 'https://api.afer.pro/api/v1/work-calendar?fecha_inicio=2026-01-01&fecha_fin=2026-12-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/work-calendar?fecha_inicio=2026-01-01&fecha_fin=2026-12-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/work-calendar?fecha_inicio=2026-01-01&fecha_fin=2026-12-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
dias_empresa y dias_empleado dicen cuántos apuntes vienen de cada ámbito, para no tener que contarlos. autorizada solo tiene sentido en los del empleado: en los de empresa llega como null porque un festivo no se aprueba.
{
"errorCode": 200,
"errorMsg": "",
"data": {
"periodo": {
"desde": "2026-01-01",
"hasta": "2026-12-31"
},
"empleado": {
"empleadoId": "eMp001…",
"nombre": "Ana",
"apellidos": "Pons Ferrer"
},
"total_dias": 3,
"dias_empresa": 2,
"dias_empleado": 1,
"dias": [
{
"diaId": "cAl11…",
"ambito": "empresa",
"titulo": "Día de Baleares",
"tipo": "festivo",
"tipo_titulo": "Festivo",
"fecha_inicio": "2026-03-01",
"fecha_fin": "2026-03-01",
"dias_en_periodo": 1,
"autorizada": null
},
{
"diaId": "aUs31…",
"ambito": "empleado",
"titulo": "Vacaciones primavera",
"tipo": "vacaciones",
"tipo_titulo": "Vacaciones",
"fecha_inicio": "2026-05-04",
"fecha_fin": "2026-05-08",
"dias_en_periodo": 5,
"autorizada": true
},
{
"diaId": "cAl12…",
"ambito": "empresa",
"titulo": "Cierre agosto",
"tipo": "cierre",
"tipo_titulo": "Cierre de empresa",
"fecha_inicio": "2026-08-10",
"fecha_fin": "2026-08-23",
"dias_en_periodo": 14,
"autorizada": null
}
]
}
}
Errores
| Caso | Resultado |
|---|---|
El empleadoId no es de tu cuenta |
errorCode 404. Los identificadores nunca cruzan de un tenant a otro. |
- Si lo que quieres es el expediente de ausencias —de quién, de qué tipo, aprobadas o no— usa consultarAusencias, que las devuelve de toda la plantilla. Este endpoint es el calendario: qué días no se trabaja.
- Para saber qué debería trabajar cada persona los días que sí son laborables, consultarPlanificacion.