🛠️ 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 datasetsBookings 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
