Skip to content

Versioning

The API uses a stable /v1 path together with date-based versioning carried in a request header. This lets us evolve response shapes over time without breaking existing integrations.

Versions are date strings, for example 2026-06-27. Send one with any request:

Terminal window
curl https://api.useservice.app/v1/reservations \
-H "Authorization: Bearer $SERVICE_API_KEY" \
-H "Service-Version: 2026-06-27"
  1. Pinned per key. Each API key is pinned to a version when it is created. If you send no Service-Version header, that pinned version is used. This means your integration keeps working unchanged even as new versions ship.
  2. Per-request override. If you send a Service-Version header, it overrides the key’s pinned version for that single request — useful for testing a newer version before adopting it.

Every response echoes the version that served it, so you can confirm exactly which behaviour you got:

HTTP/1.1 200 OK
Service-Version: 2026-06-27
Content-Type: application/json

There is currently a single version: 2026-06-27. When new versions are introduced, this page will list them along with the changes each one makes. Webhook endpoints are likewise pinned to a version at creation, so the payloads you receive stay consistent. See Webhooks.

These changes were made to 2026-06-27 in place, without a new version date.

  • September 2026 — guest last_name can be null. Like first_name, the last_name of a guest is now nullable: in the guest object, in an expanded guest on a reservation, and in guest.* webhook payloads. The key is always present. See Guest events for the rule on names.
  • September 2026 — reservations carry company. The reservation object, in the API and in reservation.* webhook payloads, always has a company key: the company the booking is made for, or null. See Reservation events.
  • September 2026 — previous_attributes can contain company. A reservation.updated event whose company changed carries the previous company in previous_attributes.