Disponibilidad de la flota
https://api.afer.pro/consultarDisponibilidadCharter
El calendario de disponibilidad día a día de cada barco y cada franja horaria en un rango de fechas.
Para cada embarcación publicada y cada una de sus franjas horarias, devuelve el mapa fecha → disponible del rango, calculado con el mismo motor que la web de reservas: reservas vivas, bloqueos de ventas, mantenimientos, bloqueo por días consecutivos, meses activos de la franja, días de la semana y capacidad.
Si no envías fecha_fin, cada franja se consulta desde fecha_inicio (hoy por defecto) hasta su último mes activo, con un máximo de 365 días — así no pagas días que la franja nunca opera.
Puedes acotar a un barco (boatId) o a una franja concreta (slotId), y afinar por ocupantes: con num_adultos/num_ninos el motor descarta los días donde el grupo no cabe.
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.
Parámetros del cuerpo
El cuerpo de la petición es un objeto JSON con Content-Type: application/json.
fecha_iniciodateopcional | Inicio del rango (YYYY-MM-DD). Por defecto, hoy. |
fecha_findateopcional | Fin del rango. Por defecto, el último mes activo de cada franja (máx. 365 días). Máximo 1 año. |
boatIdstringopcional | Identificador cifrado del barco (el de listCharters): solo su disponibilidad. |
slotIdstringopcional | Identificador cifrado de la franja (la clave de time_slots en listCharters): solo esa franja. |
num_adultosintopcional | Adultos del grupo. Afecta a la evaluación de capacidad. |
num_ninosintopcional | Niños del grupo. |
num_unidadesintopcional | Unidades a alquilar (para recursos con varias unidades). Por defecto 1. |
Ejemplo de petición
curl -X POST 'https://api.afer.pro/consultarDisponibilidadCharter' \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: afer_tk_TU_TOKEN' \
-H 'X-API-SECRET: afer_sk_TU_SECRET' \
-d '{
"fecha_inicio": "2026-09-01",
"fecha_fin": "2026-09-07",
"num_adultos": 4
}'
<?php
$data = [
'fecha_inicio' => '2026-09-01',
'fecha_fin' => '2026-09-07',
'num_adultos' => 4,
];
$ch = curl_init('https://api.afer.pro/consultarDisponibilidadCharter');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'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/consultarDisponibilidadCharter', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': 'afer_tk_TU_TOKEN',
'X-API-SECRET': 'afer_sk_TU_SECRET'
},
body: JSON.stringify({
"fecha_inicio": "2026-09-01",
"fecha_fin": "2026-09-07",
"num_adultos": 4
})
});
const resultado = await respuesta.json();
Respuesta
Las claves de time_slots son los mismos slotId cifrados que en listCharters, para correlacionar con títulos, precios y condiciones. fecha_fin es el fin efectivo consultado (null y availability vacío si la franja no opera nunca) y dias_disponibles el resumen del rango.
{
"errorCode": 200,
"errorMsg": "",
"data": {
"fecha_inicio": "2026-09-01",
"boats": [
{
"boatId": "aBc123XyZ…",
"title_es_es": "Llaut clásico mallorquín",
"title_en_uk": "Classic Mallorcan llaut",
"time_slots": {
"dEf456…": {
"title_es_es": "Día completo",
"title_en_uk": "Full day",
"check_in_time": "10:00",
"check_out_time": "18:00",
"fecha_inicio": "2026-09-01",
"fecha_fin": "2026-09-07",
"dias_disponibles": 5,
"availability": {
"2026-09-01": true,
"2026-09-02": true,
"2026-09-03": false,
"2026-09-04": true,
"2026-09-05": true,
"2026-09-06": false,
"2026-09-07": true
}
}
}
}
]
}
}
Errores
| Caso | Resultado |
|---|---|
| Sin credenciales de API key | errorCode 401. |
Rango mayor de 1 año, fechas mal formadas o boatId/slotId inválidos |
errorCode 400 indicando el motivo. |
- Un día marcado
falsepuede deberse a reserva, bloqueo de ventas, mantenimiento, día de la semana inactivo, mes inactivo o falta de capacidad para el grupo indicado: es la misma respuesta que daría la web de reservas. - Para saber el precio de cada franja usa listCharters (precio por mes) o tu web de reservas para la cotización exacta por fecha.