Guests
Registering and reading the travellers on each check-in, with the validation SES requires.
Normally each guest registers themselves from the check-in link: that way the data is validated live (DNI check letter, NIE format, INE municipality, relationship for minors…) and their signature stays inside the flow with its evidence. If your system already holds the traveller’s details, you can also create them over the API — but that prefills data, it does not replace their signature.
List the guests on a check-in
/checkins/{reservationId}/guestscurl https://api.kinapi.es/api/v1/checkins/R-2026-0412/guests \ -H "ocp-apim-subscription-key: YOUR_API_KEY"
{
"results": [
{
"id": "5f0c33f1-…",
"nombre": "María",
"apellido1": "García",
"apellido2": "López",
"tipoDocumento": "NIF",
"numeroDocumento": "12345678Z",
"soporteDocumento": "ABC123456",
"sexo": "M",
"parentesco": null,
"direccion": { "direccion": "Gran Vía 1", "codigoMunicipio": "28079", "nombreMunicipio": null, "codigoPostal": "28013", "pais": "ESP" },
"nacionalidad": "ESP",
"fechaNacimiento": "1990-04-12",
"esMenor": false,
"isLead": true,
"telefono": "+34600111222",
"correo": "maria@example.com",
"registeredAt": "2026-08-10T18:03:11.000Z",
"signedAt": "2026-08-10T18:05:40.000Z"
}
]
}The read returns everything you need to register that guest again, home address included. That is what makes it possible to redo a booking — when the dates change on an already-signed contract you have to cancel and create a new one — prefilling the guests with what they already gave you, so all they have to do is sign. The home address, the support number and the relationship were missing before, and the create call requires them: the guest had to type everything in again.
signedAt tells you whether that guest has signed their part of the contract; once everyone has, the check-in moves to signed and the final contract is generated.
Guest fields
The field names follow the naming of the SES traveller report (nombre, apellido1, tipoDocumento…), and they stay in Spanish on purpose: what you see over the API is exactly what is filed with the Ministry, field for field. Nationality is ISO 3166-1 alpha-3.
Register a guest from your system
/checkins/{reservationId}/guestsIf your PMS already holds the traveller’s details, you can create them directly and spare them the form. Exactly the same rules apply as in the guest flow: a document valid for the nationality, places still available on the booking, and no repeated document among travellers in the same party.
Creating a guest over the API does not produce their signature. The contract still needs each traveller to sign from the check-in link, and if you have submitRequiresSignature switched on, the report will not go to SES until they do. This route prefills data; it does not replace consent.
The language is decided by the booking, not by the guest registering. The form and the contract come out in the check-in’s locale (see Check-ins). The guest can switch the flag to read it in another language, but that only affects what they see: the contract that gets archived is the booking’s, the same for every signer.
Under-14s
The cut-off in RD 933/2021 is 14 years old on the arrival date. Below that, parentesco (relationship) is required (a code from the TIPO_PARENTESCO table, e.g. HJ for son/daughter) and the document is optional: you can omit tipoDocumento and numeroDocumento. The number is what decides: if you send a tipoDocumento with no number, it is dropped rather than rejecting the whole registration, because an orphan type cannot be filed with SES. From 14 onwards the document is required just as for an adult.
curl -X POST https://api.kinapi.es/api/v1/checkins/R-2026-0412/guests \
-H "ocp-apim-subscription-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"nacionalidad": "ESP",
"nombre": "María", "apellido1": "García", "apellido2": "López",
"fechaNacimiento": "1990-04-03",
"tipoDocumento": "NIF", "numeroDocumento": "12345678Z", "soporteDocumento": "ABC123456",
"direccion": { "direccion": "Calle Mayor 1", "codigoMunicipio": "29067",
"codigoPostal": "29005", "pais": "ESP" },
"correo": "maria@example.com"
}'Delete a guest
/checkins/{reservationId}/guests/{guestId}Answers 409 if the report has already been filed with SES: what has been sent to the police is not undone by deleting the record here.