SES Hospedajes
Seguimiento del parte de viajeros comunicado al Ministerio del Interior (RD 933/2021).
Cómo se envía el parte
No hay nada que llamar: la noche de la llegada (23:30 hora peninsular), Kinapi comunica automáticamente a SES Hospedajes los huéspedes registrados de cada check-in con entrada ese día. Si a esa hora falta parte del grupo, se envía un parte parcial con los que haya. Lo que llegue después —un huésped que se registra pasada esa hora o al día siguiente, los rezagados de un grupo— no espera a otra noche: sale en el envío de la hora siguiente, como delta. Cada huésped es una comunicación independiente en SES, así que ampliar el grupo nunca duplica.
SES procesa los lotes de forma asíncrona: tras el envío, consultamos el resultado y guardamos el código de comunicación de cada huésped (o los errores devueltos por el Ministerio).
Consultar el estado del parte
/checkins/{reservationId}/sescurl https://api.kinapi.es/api/v1/checkins/R-2026-0412/ses \ -H "ocp-apim-subscription-key: TU_API_KEY"
{
"status": "confirmed",
"results": [
{
"lote": "20260815-000123",
"env": "prod",
"status": "polled_ok",
"codigoEstablecimiento": "0000012345",
"sentAt": "2026-08-14T21:30:05.000Z",
"polledAt": "2026-08-14T22:30:10.000Z",
"annulment": null,
"comunicaciones": [
{
"guestId": "5f0c33f1-…",
"guestName": "María García López",
"codigoComunicacion": "SES-2026-…",
"errores": [],
"rechazos": []
}
]
}
]
}| Campo | Tipo | Descripción |
|---|---|---|
sent | estado | Lote enviado, pendiente de que SES lo procese. |
polled_ok | estado | SES confirmó todas las comunicaciones del lote. |
polled_error | estado | SES rechazó alguna comunicación — ver errores por huésped. |
http_error | estado | El envío no llegó a SES (problema de red/credenciales). Se reintenta. |
Un check-in puede tener varios envíos (parciales + deltas). El estado agregado que importa es el status del propio check-in: confirmed significa que todos los huéspedes tienen código de comunicación.
Anulaciones
Cuando una reserva comunicada se cancela, o cambian sus fechas y se vuelve a comunicar, Kinapi anula sus comunicaciones ante el Ministerio. Cada envío lleva en annulment en qué punto está esa anulación; null si nunca se anuló.
{
"status": "confirmed",
"reason": "cancelled",
"lote": "20260816-000045",
"requestedAt": "2026-08-16T10:12:00.000Z",
"checkedAt": "2026-08-16T11:30:08.000Z",
"attempts": 0,
"error": null
}| Campo | Tipo | Descripción |
|---|---|---|
status | string | En qué punto está (tabla de abajo). |
reason | string | cancelled, la reserva se canceló; dates_changed, cambiaron sus fechas y se volvió a comunicar. |
lote | string | null | Lote de la petición de anulación; null mientras el Ministerio no la ha aceptado. |
requestedAt | ISO 8601 | null | Cuándo aceptó el Ministerio la petición. |
checkedAt | ISO 8601 | null | Cuándo se leyó el resultado de su proceso. |
attempts | integer | Intentos fallidos hasta ahora. |
error | string | null | Por qué se rechazó, literal del Ministerio. |
| Campo | Tipo | Descripción |
|---|---|---|
retrying | estado | El Ministerio no aceptó la petición; Kinapi la reintenta cada hora. |
abandoned | estado | Se reintentó durante tres días (72 intentos) sin éxito. Hay que revisarla a mano en SES.HOSPEDAJES; se emitió ses.cancel_failed. |
requested | estado | El Ministerio aceptó la petición y aún no la ha procesado. Se consulta cada hora. |
confirmed | estado | Procesada: las comunicaciones ya no constan. |
rejected | estado | Procesada y rechazada: las comunicaciones SIGUEN constando (error dice por qué). Se emitió ses.cancel_failed. |
Justificante de comunicación
/checkins/{reservationId}/ses/justificanteEl Ministerio no emite un PDF por las comunicaciones hechas por servicio web: la constancia oficial de cada una es su código de comunicación. Si en una inspección te piden demostrar que comunicaste una estancia, este PDF reúne esos códigos en un documento que se puede enseñar.
Lleva el establecimiento (nombre, código de establecimiento, dirección, arrendador, NIF y código de arrendador en SES), la estancia y, por cada envío, su lote, destino, fecha y resultado, el código de comunicación de cada huésped y la anulación con su resultado, si la hubo. Se genera al pedirlo, así que siempre refleja el estado actual; si la reserva no tiene ningún envío real al Ministerio, el documento lo dice arriba.
curl -OJ https://api.kinapi.es/api/v1/checkins/R-2026-0412/ses/justificante \ -H "ocp-apim-subscription-key: TU_API_KEY"
También se descarga desde la ficha de la reserva en el panel, y va dentro de cada exportación.
Errores del Ministerio
Cuando SES rechaza una comunicación (documento inválido, municipio incorrecto…), el error exacto queda en comunicaciones[].errores y el check-in pasa a error con el detalle en errorReason. Tras corregir los datos, el siguiente envío nocturno lo reintenta automáticamente.
El texto del Ministerio no está pensado para leerse: llega con el prefijo repetido y sin decir qué corregir. Junto a él va comunicaciones[].rechazos, la misma respuesta ya clasificada para poder actuar sin analizar cadenas. No lleva texto traducido: el idioma lo pone tu sistema.
{
"errores": [
"Error validación de datos Error de validación en la comunicación [4]: [Valor incorrecto para el campo NIF . NIF: [53572037 T].]"
],
"rechazos": [
{ "codigo": "campoInvalido", "campo": "numeroDocumento", "valor": "53572037 T", "comunicacion": 4 }
]
}| Campo | Tipo | Descripción |
|---|---|---|
campoInvalido | rechazo | El Ministerio no da por válido el valor de un campo; cuál, en `campo`. |
codigoPostalInvalido | rechazo | El código postal no existe en España. |
documentoDuplicado | rechazo | El mismo documento aparece dos veces con el mismo rol. |
numPersonasNoCoincide | rechazo | El parte declaraba un número de viajeros distinto al que llevaba. |
Los códigos salen de rechazos reales recogidos en producción, no de una lista teórica. Un rechazo que Kinapi todavía no sepa clasificar no aparece en rechazos: sigue entero en errores, que nunca se recorta.
Enviar el parte ahora
/checkins/{reservationId}/sesFuerza el envío sin esperar al barrido nocturno. Devuelve el número de lote asignado; SES no confirma en el acto, así que el código de comunicación de cada huésped seguirá llegando en el poll horario (consúltalo con el GET de arriba). En el entorno de pruebas el resultado está al momento: lo contesta un simulador, con env: "test" en el envío.
Responde 409 not_ready si aún no se dan las condiciones —sin huéspedes, sin firma cuando se exige, o propiedad sin código de establecimiento— con el motivo concreto en details.
curl -X POST https://api.kinapi.es/api/v1/checkins/R-2026-0412/ses \ -H "ocp-apim-subscription-key: TU_API_KEY"
Catálogos oficiales
/ses/catalogs/ses/catalogsValores que SES acepta hoy para tipo de documento, sexo, parentesco y tipo de pago. Consúltalos para construir tus desplegables en vez de codificar los códigos a mano; el POST los refresca contra el Ministerio.