Traveller registration for holiday rentals

SES Hospedajes, handled in one call to your API.

Filing is mandatory; integrating with the Ministry should not be. Kinapi cuts it to two steps: you create the check-in and the guest registers on their own.

Would you rather we set it up with you? Tell us about your case.

create-checkin.sh
curl -X POST https://api.kinapi.es/api/v1/checkins \
  -H "x-api-key: $API_KEY" \
  -d '{
    "reservationId": "R-2026-0412",
    "listingId": "38291",
    "checkInDate": "2026-08-14",
    "checkOutDate": "2026-08-18",
    "numGuests": 4
  }'

# → 201 Created
{
  "url": "https://…/c/aGb3xK…",
  "status": "pending"
}

# on the night of arrival, without you calling anything:
# → report filed with SES Hospedajes
# → communication code confirmed

The problem

Traveller registration is mandatory. Suffering through it is not.

Connecting straight to SES Hospedajes means wrestling with technology from another era: rigid formats, slow responses and errors that explain nothing. Work that adds nothing to your product — and that you maintain forever.

  • Legacy protocols (SOAP and XML) with strict rules
  • Every submission encoded exactly as the system demands
  • Two environments, two sets of credentials to maintain
  • Confirmation is slow: you have to go back and ask again
  • Official code tables that change without warning

With Kinapi

A modern API: your key, one call, done
JSON in and JSON out — the Ministry’s format is our problem
Test and production without touching your code
We wait for the Ministry’s answer; you check it whenever you like
Official documents and code tables always current

Integration

Four calls, zero XML.

The guest does the work of registering; your integration only creates the check-in and reads the result.

  1. 1
    POST/checkins

    You create the check-in

    One call per booking. You get back the URL for the guest.

  2. 2
    guest

    The guest registers alone

    They open the URL, fill in their details and sign. No calls from you.

  3. 3
    GET/checkins/{id}

    You check the status

    From “pending” to “confirmed”, whenever you want.

  4. 4
    GET/checkins/{id}/ses

    You get the confirmation

    The official receipt — or the exact reason if something fails.

Under the hood

What the API handles without being asked.

We do more than push data to the Ministry: every check-in collects, validates and signs everything the law requires before it is filed.

SES Hospedajes

We check every guest’s documents, file the report each night within the legal deadline, and retry automatically if the Ministry rejects it.

Signature and evidence

The guest signs from their phone, in their own language. You get the contract as a PDF; its SHA-256 hash is timestamped by an external authority (RFC 3161), and PDF and timestamp are kept in immutable storage for three years. Nothing to build.

Integrations

One API to connect your PMS or your own software, plus webhooks for the rest of your stack.

API v1 · REST · JSON

Documentation written so you can integrate without opening a ticket.

One API key per customer, JSON on every response. Create, read, update and cancel check-ins; download signed contracts; check the status of the report.

  • Authentication: one key in the header, no tokens to refresh.
  • No duplicates: retry freely — the same booking is never registered twice.
  • Interactive docs: every endpoint with its curl example and its real response.
Read the documentation

# Status of the report at SES Hospedajes

curl https://api.kinapi.es/api/v1/checkins/R-2026-0412/ses \
  -H "x-api-key: $API_KEY"

# → 200 OK
{
  "status": "confirmed",
  "results": [{
    "lote": "20260815-000123",
    "status": "polled_ok",
    "comunicaciones": [{
      "guestName": "María García López",
      "codigoComunicacion": "SES-2026-…",
      "errores": []
    }]
  }]
}

kinapi-mcp-server · npm

An agent can use it too, not just your code.

We publish the same API as an MCP server: Claude or any compatible agent creates check-ins and checks their status by talking to Kinapi, without you writing an HTTP client.

  • No HTTP client: install the package and the agent already knows how to call every operation.
  • Errors you can read, not JSON to parse: the agent knows what failed and what to do, not just a status code.
  • Anyone on the team can use it: support can settle a guest’s question by talking to Claude, without touching code or opening the panel.
See the MCP server
mcp.json
{
  "mcpServers": {
    "kinapi": {
      "command": "npx",
      "args": ["-y", "kinapi-mcp-server"],
      "env": {
        "KINAPI_API_KEY": "kinapi_…"
      }
    }
  }
}

Start now

Create your account and try the API in minutes.

Nothing to install, nobody to talk to. If you would rather we build the integration with you case by case, we can do that too.