REST API · OpenAPI 3.0 · Idempotencia · SES.hospedajes

API REST para partes
de viajeros automáticos

Integra tu PMS, channel manager o motor de reservas con SES.hospedajes usando las APIs REST de checkin-online.es. Tres endpoints especializados por tipo de alojamiento: apartamentos, hoteles y campings. El parte llega al Ministerio del Interior en el mismo instante en que creas la reserva — sin que el propietario toque nada.

3

APIs especializadas

Una por tipo de alojamiento. Mismos verbos REST, campos adaptados al dominio.

1

Parte por reserva

POST /reservas → envío a SES.hospedajes en el mismo request. Sin colas, sin esperas.

0

Cuota mensual

Pago por uso. Tu cliente paga solo los partes que envía. Sin permanencia.

🤖 Resumen estructurado · API REST de partes de viajeros (España)

Apartamentos · VUT · Casas rurales
Plataforma:
partesdeviajeros.com
Prefijo API key:
pw_live_
Endpoint base:
/api/v1/establishments/{id}/
Campo clave:
accommodation_id
Webhooks:
eventos push firmados (HMAC-SHA256)
Modelo:
Multi-establecimiento
Hoteles · Hostales · Pensiones
Plataforma:
partehotel.com
Prefijo API key:
ph_live_
Endpoint base:
/api/v1/hotel/
Campo clave:
room_id, board_plan
Webhooks:
eventos push firmados (HMAC-SHA256)
Modelo:
Single-hotel (1 cuenta = 1 hotel)
Campings · Bungalows · Glamping
Plataforma:
autoses.com
Prefijo API key:
as_live_
Endpoint base:
/api/v1/camping/
Campo clave:
parcel_id, license_plates
Barrera ANPR:
POST /camping/access/plate
Webhooks:
eventos push firmados (HMAC-SHA256)
Modelo:
Single-camping (1 cuenta = 1 camping)
¿Para quién es?

La API perfecta si construyes sobre reservas de alojamiento

Cualquier sistema que crea reservas para alojamientos españoles necesita enviar partes de viajeros a SES.hospedajes. La API hace eso por ti, de forma transparente.

🏗️

Desarrolladores y equipos de producto

Añade cumplimiento del RD 933/2021 a tu aplicación en una tarde, sin leer documentación del Ministerio.

  • Auth por Bearer token, JSON puro
  • Documentación OpenAPI 3.0 en español
  • Idempotency-Key para reintentos seguros
  • Webhooks push firmados (HMAC-SHA256): reacciona a los eventos en tiempo real, sin polling
  • Modo transparente: el huésped no sabe que usas checkin-online.es
  • AutoSES: barrera de camping por reconocimiento de matrícula (ANPR)
  • SDKs de Python, Node y PHP no oficiales disponibles en la comunidad
🏢

PMS y channel managers

Conecta la gestión de reservas de tus clientes con SES.hospedajes sin que ellos tengan que hacer nada.

  • N clientes → N API keys independientes
  • El coste de SES recae sobre el propietario (saldo del propietario, no del PMS)
  • El PMS sondea GET /reservas/{id} para verificar el estado de envío
  • Disponibilidad antes de crear: GET /disponibilidad
  • Cancelación con reembolso automático si procede
🗂️

Gestores multipropiedad y agencias

Gestiona decenas de alojamientos desde un solo back-office sin acceder a cada cuenta individual.

  • partesdeviajeros.com: un gestor, N establecimientos bajo la misma cuenta
  • Partehotel y AutoSES: una cuenta por hotel/camping, N API keys en tu PMS
  • Informes de envío consultables vía GET /reservas
  • Ciclo de vida completo: G → P → F → E → I → O via API
  • Sin necesidad de acceder al panel del propietario
¿Desarrollas software hotelero o un PMS? → ¿Eres propietario de alojamiento? →
Quick start

Crear una reserva con envío automático a SES.hospedajes

Ejemplo para un hotel con Partehotel. El campo establishment_id es el id del propietario (visible en Mi cuenta). La API devuelve 201 y el parte ya está en camino a SES.hospedajes.

HTTP · partehotel.com
POST https://partehotel.com/api/v1/hotel/reservations
Authorization: Bearer ph_live_a1b2c3d4e5f6...
Content-Type:  application/json
Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000

{
  "establishment_id": 42,
  "room_id":          7,
  "check_in":         "2026-09-01",
  "check_out":        "2026-09-05",
  "board_plan":       "ad",        // sa | ad | mp | pc | ti
  "adults":           2,
  "children":         1,
  "holder": {
    "name":      "María",
    "surname":   "García López",
    "email":     "maria@ejemplo.com",
    "phone":     "+34666123456"
  },
  "send_checkin_email": true    // false en modo transparente
}

─── Respuesta 201 ───────────────────────────────────────────────
{
  "id":              1038,
  "status":         "P",       // parte enviado a SES, esperando check-in
  "ses_sent":       true,
  "checkin_link":   "https://partehotel.com/c/abc123",
  "cost_eur":       0.90
}
Python
# pip install requests
import requests

res = requests.post(
    "https://partehotel.com/api/v1/hotel/reservations",
    headers={
        "Authorization": "Bearer ph_live_...",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "establishment_id": 42,
        "room_id": 7,
        "check_in": "2026-09-01",
        "check_out": "2026-09-05",
        "adults": 2,
        "holder": {"name": "María", ...},
    }
)
reservation = res.json()
print(reservation["checkin_link"])
Node.js / fetch
// Node 18+ o navegador moderno
const res = await fetch(
  "https://partehotel.com/api/v1/hotel/reservations",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer ph_live_...",
      "Content-Type":  "application/json",
      "Idempotency-Key": crypto.randomUUID(),
    },
    body: JSON.stringify({
      establishment_id: 42,
      room_id: 7,
      check_in: "2026-09-01",
      check_out: "2026-09-05",
      adults: 2,
      holder: { name: "María", ... },
    }),
  }
);
const { checkin_link } = await res.json();

La documentación OpenAPI 3.0 completa está disponible en partehotel.com/api/v1/docs, partesdeviajeros.com/api/v1/docs y autoses.com/api/v1/docs

Tres APIs, un mismo estándar

Cada tipo de alojamiento tiene su API especializada

Misma autenticación, mismos verbos REST, mismos códigos de error. Los campos del body varían para reflejar el dominio de cada alojamiento.

partesdeviajeros.com
Apartamentos turísticos, pisos VUT, villas, casas rurales
Prefijo de API key
pw_live_xxxxxxxx…
Base URL
/api/v1/establishments/{id}/
Campos específicos en POST /reservations
  • accommodation_id id de la vivienda o habitación
  • num_adults / num_children ocupantes
  • channel origen (booking, airbnb, directo…)
  • send_checkin_email false en modo transparente
Modelo multi-alojamiento

Un gestor puede tener N establecimientos bajo una sola cuenta. El {id} de la URL identifica el establecimiento concreto.

partehotel.com
Hoteles, hostales, pensiones, apartahoteles (hasta 120 habitaciones)
Prefijo de API key
ph_live_xxxxxxxx…
Base URL
/api/v1/hotel/
Campos específicos en POST /reservations
  • room_id id numérico de la habitación
  • board_plan régimen (sa/ad/mp/pc/ti)
  • adults / children ocupantes
  • category / occupancy tipo de habitación (solo lectura en respuesta)
Modelo single-hotel

Una cuenta = un hotel. Tu PMS mantiene una API key por cliente. El optimizador de habitaciones y el sinóptico siguen funcionando en el panel del propietario.

autoses.com
Campings, bungalows, glamping, autocaravanas
Prefijo de API key
as_live_xxxxxxxx…
Base URL
/api/v1/camping/
Campos específicos en POST /reservations
  • parcel_id id de la parcela
  • adults / children / pets ocupantes
  • vehicles número de vehículos
  • license_plates array de matrículas
Modelo single-camping

Una cuenta = un camping. El mapa de parcelas y el cuadro sinóptico del panel siguen funcionando en paralelo con la API.

Referencia

Endpoints comunes a las tres APIs

Sustituye /hotel/ por /establishments/{id}/ (Partes de Viajeros) o /camping/ (AutoSES) para obtener la URL del endpoint correcto.

Método + endpoint Descripción Estado inicial
GET/hotel/rooms Lista las habitaciones o parcelas con su disponibilidad actual
GET/hotel/availability Consulta disponibilidad para un rango de fechas antes de crear la reserva
POST/hotel/reservations Crea la reserva y envía el parte a SES.hospedajes en el mismo instante G → P
GET/hotel/reservations/{id} Obtiene el estado actual de la reserva y el enlace de check-in
PUT/hotel/reservations/{id} Modifica fechas, ocupantes o habitación (solo en estado P o F)
POST/hotel/reservations/{id}/cancel Cancela la reserva. Si el huésped no completó el check-in, el saldo se reembolsa → C

Ciclo de vida de una reserva

El estado avanza automáticamente. Tu sistema solo necesita crear (POST) y cancelar si procede.

G
Guardada
SES pendiente (fallo red/SES caído)
P
Pendiente
Parte enviado a SES, esperando check-in
F
Formulario
Huésped completó sus datos
E
Esperado
Parte enviado a SES, huésped en camino
I
Alojado
Huésped en el alojamiento
O
Finalizado
Check-out completado, recibo enviado
C
Cancelada
Desde G/P/F/E, con reembolso automático
FAQ para desarrolladores

Preguntas frecuentes sobre la integración

¿Qué diferencia hay entre las tres APIs (pw_live_, ph_live_, as_live_)?
Cada API está adaptada al dominio de su tipo de alojamiento. pw_live_ (partesdeviajeros.com) gestiona establecimientos multi-alojamiento, identificados por establishment_id. ph_live_ (partehotel.com) trabaja con habitaciones de hotel con room_id, categoría, ocupación y régimen (sa/ad/mp/pc/ti). as_live_ (autoses.com) gestiona parcelas de camping con campos como mascotas (pets), vehículos y matrículas. Las tres envían el parte a SES.hospedajes (o Mossos en Cataluña) en el mismo request.
¿Puede un PMS integrar las tres APIs a la vez para distintos tipos de cliente?
Sí. Cada propietario tiene su propia API key vinculada a la plataforma que le corresponde. Tu PMS almacena la clave de cada cliente y elige el endpoint correcto según el tipo de alojamiento. El flujo es: el operador registra a su cliente en la plataforma correspondiente, el cliente genera su API key desde "Mi cuenta" → "API REST", y la comunica al PMS. El coste de SES siempre recae sobre el saldo del propietario, no sobre el PMS.
¿Qué pasa si SES.hospedajes está caído cuando creo la reserva?
La reserva se crea en estado G (guardada) sin cobro de saldo. La respuesta incluye "ses_sent": false y "ses_pending": true. El scheduler interno reintenta el envío cada pocos minutos. En cuanto lo logra, avanza a estado P y carga el saldo. Tu sistema puede sondear GET /hotel/reservations/{id} para detectar el cambio de G a P.
¿Cómo funciona la idempotencia con Idempotency-Key?
Si envías el header Idempotency-Key: <uuid> en el POST /reservations, cualquier reintento con la misma clave dentro de 24 horas devuelve la respuesta original sin crear duplicados. Es esencial cuando la conexión cae antes de recibir el 201 y no sabes si la reserva se creó. Genera un UUID v4 por intento de reserva y guárdalo junto a tu pedido hasta confirmar el 201.
¿Qué es el modo transparente y cuándo activarlo?
Con el modo transparente activado (interruptor en Mi cuenta → API REST), las reservas creadas vía API no envían emails de check-in ni recibo al huésped: el propietario gestiona la comunicación desde su propio sistema. El envío del parte a SES.hospedajes sigue siendo automático. Actívalo si tienes tu propio motor de check-in online o si el huésped no debe saber que usas checkin-online.es. Puedes sobrescribirlo por reserva con el campo "send_checkin_email": false.
¿La API tiene límite de peticiones (rate limit)?
No se aplica rate limit. El modelo económico (cada reserva consume saldo del propietario) desincentiva el abuso de forma natural. Para integraciones de alto volumen, usa Idempotency-Key en todos tus POST para evitar duplicados en reintentos, y GET /availability antes de crear la reserva para evitar solapamientos.
¿Las APIs tienen webhooks para recibir eventos en tiempo real?
Sí. Las tres plataformas ofrecen webhooks: desde Mi cuenta → Integraciones registras una URL HTTPS y recibes un POST firmado con HMAC-SHA256 cada vez que ocurre un evento — sin necesidad de hacer polling. Eventos: reservation.created, reservation.status_changed, reservation.updated, reservation.cancelled, guest.checked_in, ses.submission_succeeded, ses.submission_failed y webhook.ping (AutoSES y Partehotel añaden balance.low y receipt.sent). Entrega at-least-once (deduplica por id), hasta 8 reintentos con backoff exponencial y 30 días de retención. Cada entrega incluye la cabecera de firma (X-Partesdeviajeros-Signature, X-Partehotel-Signature o X-Autoses-Signature). Es el patrón push que esperan los PMS y channel managers modernos. Documentación con ejemplos de verificación (Python, PHP, Node.js) en el manual de la API de cada plataforma y en /api/v1/docs.
¿AutoSES abre la barrera del camping por reconocimiento de matrícula (ANPR)?
Sí. La API de AutoSES (autoses.com) incluye el endpoint POST /api/v1/camping/access/plate para control de acceso por reconocimiento de matrícula. Tu sistema de barrera ANPR (cámara lectora de matrículas) envía la matrícula detectada ({"plate": "1234ABC"}) y AutoSES responde {"authorized": true|false, "plate": "...", "reservation": {…}}. Autoriza el acceso si la matrícula pertenece a una reserva del camping en estado E (parte enviado) o I (alojado) cuya estancia incluye la fecha de hoy. Así la barrera se abre automáticamente cuando llega un campista con reserva, sin intervención del personal, y deniega el paso a clientes cuya estancia ya terminó. Combínalo con los webhooks para reaccionar en tiempo real a cada llegada.
¿Puedo integrar la API como gestor de múltiples alojamientos?
Sí, aunque el modelo varía por plataforma. En Partes de Viajeros (partesdeviajeros.com), un gestor puede tener N establecimientos bajo una sola cuenta y una sola API key; el establecimiento se indica con establishment_id en la URL. En Partehotel y AutoSES, cada cuenta es un único hotel o camping: el gestor tendrá N cuentas y N API keys, una por cliente. El coste recae siempre sobre el saldo del propietario de cada alojamiento.
¿Cómo autenticar? ¿Hay OAuth o solo API key?
Solo API key con esquema Bearer: Authorization: Bearer ph_live_xxxx. No hay OAuth, tokens de corta duración ni flujo de autorización. La clave se genera desde Mi cuenta → API REST y se muestra una única vez. Guárdala en un gestor de secretos (AWS Secrets Manager, HashiCorp Vault, GitHub Actions secrets…). Si se compromete, revócala desde el panel y genera una nueva — la clave anterior queda inválida de inmediato.
Sin cuota mensual · Pago por uso · Registro gratuito

¿Qué tipo de alojamiento vas a integrar?

Elige la plataforma, crea tu cuenta gratuita y genera tu API key en menos de 5 minutos.

¿Dudas sobre qué API te conviene? Escríbenos a info@partesdeviajeros.com