Skip to main content

API Guide: Retrieve Bookings

This guide provides developers with a step-by-step overview of how to retrieve booking data using the Kadence Public API.

Liza avatar
Written by Liza
Updated yesterday

🛠️ Prerequisites

Before getting started:

  • You must have a Kadence account

  • A Global Admin must generate an API key

Need help? Follow the API Getting Started Guide.


📚 API Documentation & Sample Code

Explore the API

Visit our full API specification: https://api.kadence.co/

You'll find:

  • Full list of available endpoints

  • Request/response examples

  • Supported query parameters

Sample Applications

View example code and starter projects on GitHub: https://github.com/wearekadence/kadence-public-api-examples


👁️ What You Can Do

Use these endpoints to retrieve bookings and related data:

  • /v1/public/bookings

  • /v1/public/users/{id}/bookings

  • /v1/public/buildings

  • /v1/public/floors

  • /v1/public/neighborhoods

  • /v1/public/spaces

  • /v1/public/users

All collection endpoints support pagination with page and itemsPerPage parameters.
All date/times are returned in UTC.


🔑 Get an Access Token

Use your API key to obtain a bearer token via OAuth 2.0 client credentials grant.

See our Authentication section for example request and response bodies.


🔎 Example: Who has made bookings for a specific Building

1. Find the Building

Example request:

GET <https://api.onkadence.co/v1/public/buildings?city=London>

Example response:

{ "hydra:member": [ { "@id": "/v1/public/buildings/01GTBV1CT3BM8A42SEJ2J5F4EG", "@type": "Building", "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "name": "London Office", "timeZone": "Europe/London", "latitude": 51.509865, "longitude": -0.118092, "addressLine1": "20 Fenchurch Street", "addressLine2": null, "city": "London", "county": "United Kingdom", "countryCode": "GB", "photo": "b74b830a-cf26-47bd-9dbc-237571c79fc3", "createdAt": "2017-07-21T17:32:28+00:00", "modifiedAt": "2017-07-21T17:32:28+00:00" } ], "hydra:totalItems": 1 }

Extract the building ID from the response (e.g. 01GTBV1CT3BM8A42SEJ2J5F4EG).

2. Retrieve Bookings for that Building

Example request:

GET <https://api.onkadence.co/v1/public/bookings?buildingId=01GTBV1CT3BM8A42SEJ2J5F4EG&startDate=2023-01-02&endDate=2023-01-08>

Example response:

{ "hydra:member": [ { "@id": "/v1/public/bookings/01GTBV1CT3BM8A42SEJ2J5F4EG", "@type": "Booking", "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "createdUserId": "/v1/public/users/01GTBV1CT3BM8A42SEJ2J5F4EG", "userId": "/v1/public/users/01GTBV1CT3BM8A42SEJ2J5F4EG", "space": { "@context": "string", "@id": "string", "@type": "string", "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "name": "Desk 01", "type": "desk", "floor": { "@context": "string", "@id": "string", "@type": "string", "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "name": "Floor 01" }, "neighborhood": { "@context": "string", "@id": "string", "@type": "string", "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "name": "Sales" }, "photo": "b74b830a-cf26-47bd-9dbc-237571c79fc3" }, "startDate": "2023-01-03T17:32:28+00:00", "endDate": "2023-01-03T17:32:28+00:00", "createdAt": "2023-01-03T17:32:28+00:00", "updatedAt": "2023-01-03T17:32:28+00:00", "checkedInUserId": "/v1/public/users/01GTBV1CT3BM8A42SEJ2J5F4EG", "checkedInDate": "2023-01-03T17:32:28+00:00", "checkedInSource": "web", "checkInMethod": "doorAccess", "checkOutMethod": "doorAccess", "checkedOutUser": "/v1/public/users/01GTBV1CT3BM8A42SEJ2J5F4EG", "checkedOutDate": "2017-07-21T17:32:28+00:00", "checkOutSource": "web", "permanent": false, "hasGuests": false, "guestBooking": false, "recurringBooking": false, "selfCertifiedDate": "2023-01-03T17:32:28+00:00", "selfCertifySource": "web", "source": "web", "autoReleasedDate": "2023-01-03T17:32:28+00:00", "cancelledUserId": "/v1/public/users/01GTBV1CT3BM8A42SEJ2J5F4EG", "cancelledDate": "2017-07-21T17:32:28+00:00", "cancellationReason": "byUser", "title": null, "status": "booked", "type": "desk", "onlineMeeting": null, "onlineMeetingUrl": null, "icalUid": null, "building": "/v1/public/buildings/01GTBV1CT3BM8A42SEJ2J5F4EG" } ], "hydra:totalItems": 1 }

This returns all bookings within that date range.

3. Get Booking User Details

Use the userId field from the booking to look up user info.

Example request:

GET <https://api.onkadence.co/v1/public/users/01GTBV1CT3BM8A42SEJ2J5F4EG>

Example response:

{ "@id": "/v1/public/users/01GTBV1CT3BM8A42SEJ2J5F4EG", "@type": "User", "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "email": "[email protected]", "firstName": "John", "lastName": "Smith", "jobTitle": "Head of Marketing", "invitationPending": true, "preferredFloor": { "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "name": "Floor 1" }, "createdAt": "2017-07-21T17:32:28+00:00", "modifiedAt": "2017-07-21T17:32:28+00:00", "locale": "en-GB", "timePreference": "default", "locationCityName": "London", "locationCountryCode": "GB", "locationLatitude": 51.509865, "locationLongitude": -0.118092, "locationTimezone": "Europe/London", "biography": "I love 🍕!", "monogram": "JS" }

🔎 Example: Who has made bookings for a specific Neighborhood

1. Find the Building

Example request:

GET <https://api.onkadence.co/v1/public/buildings?city=London>

Example response:

{ "hydra:member": [ { "@id": "/v1/public/buildings/01GTBV1CT3BM8A42SEJ2J5F4EG", "@type": "Building", "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "name": "London Office", "timeZone": "Europe/London", "latitude": 51.509865, "longitude": -0.118092, "addressLine1": "20 Fenchurch Street", "addressLine2": null, "city": "London", "county": "United Kingdom", "countryCode": "GB", "photo": "b74b830a-cf26-47bd-9dbc-237571c79fc3", "createdAt": "2017-07-21T17:32:28+00:00", "modifiedAt": "2017-07-21T17:32:28+00:00" } ], "hydra:totalItems": 1 }

2. Get Floors for that Building

Example request:

GET <https://api.onkadence.co/v1/public/floors?buildingId=01GTBV1CT3BM8A42SEJ2J5F4EG>

Example response:

{ "hydra:member": [ { "@id": "/v1/public/floors/01GTBV1CT3BM8A42SEJ2J5F4EG", "@type": "Floor", "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "name": "Floor 01" } ], "hydra:totalItems": 1 }

3. Find the Neighborhood

Example request:

GET <https://api.onkadence.co/v1/public/neighborhoods?buildingId=01GTBV1CT3BM8A42SEJ2J5F4EG&floorId=01GTBV1CT3BM8A42SEJ2J5F4EG>

Example response:

{ "hydra:member": [ { "@id": "/v1/public/neighborhoods/01GTBV1CT3BM8A42SEJ2J5F4EG", "@type": "Neighborhood", "id": "01GTBV1CT3BM8A42SEJ2J5F4EG", "name": "Engineering" }, { "@id": "/v1/public/neighborhoods/01GTBV1CT3BM8A42SEJ2J5F4EF", "@type": "Neighborhood", "id": "01GTBV1CT3BM8A42SEJ2J5F4EF", "name": "Sales" } ], "hydra:totalItems": 2 }

Look for the neighborhood by name (e.g. "Engineering") and extract the neighborhoodId.

4. Retrieve Bookings for that Neighborhood

Example request:

GET <https://api.onkadence.co/v1/public/bookings?neighbourhoodId=01GTBV1CT3BM8A42SEJ2J5F4EG&startDate=2023-01-01&endDate=2023-01-31>

🔧 Developer Tips

  • Cache building/floor/neighborhood IDs where possible to reduce API calls

  • Use pagination (itemsPerPage) to handle large datasets

  • Bookings include rich metadata: check-in method, source, cancellation reason, etc.


💬 Need Help?

For support, reach out to:
📩 [email protected]

Check our service status at:

For more helpful articles see:
📚 Kadence Help Center

Did this answer your question?