Activity Messenger Help Center

Resources and bookings

See API introduction for authentication, request conventions, pagination, rate limits, and errors.

These read-only endpoints tell an external system when the organization's resources (rooms, spaces, equipment, staff) are booked. A typical use is building automation: adjusting a room's thermostat, lighting or ventilation before guests arrive and after they leave.

Send the X-Activity-Messenger-Api-Key header on every request. Bookings created by clients online and by administrators in the booking calendar are both included. Client names, contact details, booking notes, invoices and payments are never returned.

GET /api/v1/organization/{organization}/locations

Lists the organization's resources as a JSON array, without pagination, in the same order as the administration interface. Deleted resources are never returned; disabled ones are.

Query parameter:

  • type: optional. location, staff, equipment or seat_map. Omit it to return every type.

A resource object contains these fields:

  • id: numeric resource ID; the stable key. Use it to map a resource to a device in your system.
  • name, alias: display name and optional alias, or null.
  • type: resource type.
  • disabled: boolean; true when the resource is currently disabled for booking.
  • parent_location_ids: IDs of the resources that contain this one. For example, a "Whole east wing" resource can be the parent of each room in that wing. Booking a parent also occupies its children.
GET /api/v1/organization/1234/locations?type=location
[
  {
    "id": 10,
    "name": "East wing",
    "alias": null,
    "type": "location",
    "disabled": false,
    "parent_location_ids": []
  },
  {
    "id": 11,
    "name": "Room 1",
    "alias": "R1",
    "type": "location",
    "disabled": false,
    "parent_location_ids": [10]
  }
]

GET /api/v1/organization/{organization}/bookings

Lists booked time slots that overlap a date range. Each row is one occurrence of a booking on one resource; a booking that spans several resources or dates returns one row per occurrence.

Query parameters:

  • from: optional first day, YYYY-MM-DD, in the organization's timezone. Defaults to today.
  • to: optional last day, inclusive, YYYY-MM-DD. Defaults to 7 days after from. It must be on or after from, and the range cannot exceed 93 days.
  • location_ids[]: optional resource IDs, up to 200. Bookings of their parent resources are included automatically, so a booking of a whole wing is returned when you ask for one of its rooms. An ID that does not belong to the organization returns HTTP 404.
  • per_page: optional, 1 to 500. Defaults to 100.
  • page: optional page number. Defaults to 1.

Which bookings are returned:

  • An occurrence is returned when it overlaps the range, including one that started before from and is still in progress.
  • Cancelled, deleted, rejected and expired bookings are excluded, as are bookings still in a client's cart.
  • Unpaid bookings and bookings pending approval are included. Use status and approval_status if your system should ignore them.
  • Closures (is_closure: true) block a resource but do not mean anyone is present.

A booking object contains these fields:

  • event_id: numeric ID of the occurrence; the stable key. Use it to detect changes between two calls.
  • booking_id: numeric booking ID. Several occurrences can share it.
  • location_id, location_name: the booked resource. When you filter with location_ids[], this can be a parent of the resource you asked for.
  • start, end: ISO 8601 timestamps with the organization's UTC offset.
  • status: booking status, for example paid, not_paid, deposit_paid or new.
  • approval_status: null when approval is not required, otherwise pending or approved.
  • is_closure: boolean; true for a closure.
  • booking_type_id: numeric booking type ID, or null.

Results are sorted by start time and use simple pagination: there is no total count. Keep requesting next_page_url until it is null.

GET /api/v1/organization/1234/bookings?from=2026-11-12&to=2026-11-14&location_ids[]=11
{
  "current_page": 1,
  "data": [
    {
      "event_id": 1001,
      "booking_id": 501,
      "location_id": 11,
      "location_name": "Room 1",
      "start": "2026-11-12T15:00:00-05:00",
      "end": "2026-11-14T11:00:00-05:00",
      "status": "paid",
      "approval_status": null,
      "is_closure": false,
      "booking_type_id": 7
    }
  ],
  "next_page_url": null,
  "per_page": 100,
  "prev_page_url": null
}

The response also includes the standard simple-pagination keys first_page_url, from, path and to.

Tip

Bookings change when clients book, reschedule or cancel. For automation, request the next few days every 5 to 15 minutes rather than caching a long range.