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,equipmentorseat_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;truewhen 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 afterfrom. It must be on or afterfrom, 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
fromand 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
statusandapproval_statusif 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 withlocation_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 examplepaid,not_paid,deposit_paidornew.approval_status: null when approval is not required, otherwisependingorapproved.is_closure: boolean;truefor 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.
TipBookings 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.