Base URL https://api.afer.pro aferapp.com
Charters

Disponibilidad de la flota

POST 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.

Autenticación

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_iniciodate
opcional
Inicio del rango (YYYY-MM-DD). Por defecto, hoy.
fecha_findate
opcional
Fin del rango. Por defecto, el último mes activo de cada franja (máx. 365 días). Máximo 1 año.
boatIdstring
opcional
Identificador cifrado del barco (el de listCharters): solo su disponibilidad.
slotIdstring
opcional
Identificador cifrado de la franja (la clave de time_slots en listCharters): solo esa franja.
num_adultosint
opcional
Adultos del grupo. Afecta a la evaluación de capacidad.
num_ninosint
opcional
Niños del grupo.
num_unidadesint
opcional
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.

200 · application/json
{
    "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

CasoResultado
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.
Notas
  • Un día marcado false puede 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.