Skip to content

List Bookings

Bookings can be read scoped to yourself or scoped to a resource. All endpoints accept the same window parameters and return the same row shape.

Scoped to yourself

EndpointReturns
GET /me/bookingBookings owned by the calling user.
GET /user/{id}/bookingBookings owned by a specific user.

Scoped to a resource

EndpointReturns
GET /bookable/{id}/bookingBookings on one specific bookable.
GET /bookable_type/{id}/bookingBookings across every bookable of a type.
GET /location/{id}/bookingBookings across every bookable at a location and its descendants.
GET /organization/{id}/bookingBookings across every bookable in an organization.

Input

ParameterRequiredNotes
start_dateyesRFC 3339 UTC. Filters to bookings whose schedule starts on or before this is the lower bound; rows with (schedule->>'start_date') <= end_date are kept.
end_dateyesRFC 3339 UTC. Filters to bookings whose schedule has not ended before this.

Both bounds are required. Results are filtered to bookings whose schedule intersects the window.

My Own Bookings

GET /me/booking?start_date=2026-05-11T00:00:00Z&end_date=2026-05-18T00:00:00Z

/me/booking resolves the user from the request context and delegates to the user level handler. The response is a JSON array of bookings owned by the caller, intersecting the window.

Response (one row shown):

json
{
  "data": [
    {
      "id": "f9955a9a-bb9e-450b-8e91-09a43f0e6cd6",
      "name": "Project Sync",
      "description": "Weekly project sync meeting",
      "bookable_id": "c3d4e5f6-a7b8-9012-cdef-345678901234",
      "schedule": {
        "id": "12e2a0a7-9400-43fc-9cd9-fcdddf5133df",
        "start_date": "2026-05-15T08:00:00Z",
        "end_date": "2026-05-15T09:00:00Z",
        "pattern": { "type": "none", "interval": 1, "times": ["08:00/PT1H"] },
        "time_zone": null,
        "available": false
      },
      "owner_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "created_by": "e992bfc1-0336-42c5-bd0a-4f4804a9fd24",
      "status": "confirmed"
    }
  ],
  "count": 1
}

Bookings on a Specific Room

GET /bookable/{bookable_id}/booking?start_date=2026-05-11T00:00:00Z&end_date=2026-05-18T00:00:00Z

Returns every booking on that bookable in the window, regardless of who owns the booking. Useful for rendering a room calendar.

Bookings Across a Site

GET /location/{location_id}/booking?start_date=2026-05-11T00:00:00Z&end_date=2026-05-18T00:00:00Z

Returns every booking on every bookable at the location, plus every bookable at any descendant location. Useful for office wide overviews.

Recurrence

A recurring booking is stored as a single row whose schedule.pattern describes the recurrence. The list endpoints return the row as is and do not expand occurrences. To see one entry per occurrence inside a window, call the calendar endpoint at the matching scope, for example GET /bookable/{id}/calendar?start_date=...&end_date=.... See Calendar and Availability.