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.
Una por tipo de alojamiento. Mismos verbos REST, campos adaptados al dominio.
POST /reservas → envío a SES.hospedajes en el mismo request. Sin colas, sin esperas.
Pago por uso. Tu cliente paga solo los partes que envía. Sin permanencia.
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.
Añade cumplimiento del RD 933/2021 a tu aplicación en una tarde, sin leer documentación del Ministerio.
Conecta la gestión de reservas de tus clientes con SES.hospedajes sin que ellos tengan que hacer nada.
Gestiona decenas de alojamientos desde un solo back-office sin acceder a cada cuenta individual.
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.
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 }
# 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 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
Misma autenticación, mismos verbos REST, mismos códigos de error. Los campos del body varían para reflejar el dominio de cada alojamiento.
/api/v1/establishments/{id}/
accommodation_id id de la vivienda o habitaciónnum_adults / num_children ocupanteschannel origen (booking, airbnb, directo…)send_checkin_email false en modo transparenteUn gestor puede tener N establecimientos bajo una sola cuenta. El {id} de la URL identifica el establecimiento concreto.
/api/v1/hotel/
room_id id numérico de la habitaciónboard_plan régimen (sa/ad/mp/pc/ti)adults / children ocupantescategory / occupancy tipo de habitación (solo lectura en respuesta)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.
/api/v1/camping/
parcel_id id de la parcelaadults / children / pets ocupantesvehicles número de vehículoslicense_plates array de matrículasUna cuenta = un camping. El mapa de parcelas y el cuadro sinóptico del panel siguen funcionando en paralelo con la API.
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 |
El estado avanza automáticamente. Tu sistema solo necesita crear (POST) y cancelar si procede.
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.
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.
Idempotency-Key?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.
"send_checkin_email": false.
Idempotency-Key en todos tus POST para evitar duplicados en reintentos, y GET /availability antes de crear la reserva para evitar solapamientos.
webhooks para recibir eventos en tiempo real?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.
ANPR)?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.
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.
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.
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