Skip to main content

Bookings

Read the bookings a site has taken, so you can copy appointments into a calendar, a CRM or a spreadsheet, or report on them. The API is read-only: moving or canceling a booking tells the guest and can refund them, so it stays in the console.

Bookings belong to a site, because each site offers its own services.

Requires bookings on your plan

These endpoints need the bookings:read scope and a plan that includes bookings. If your plan doesn't, they answer 403 plan_required with code: "bookings" — see Errors.

The booking object​

{
"id": "b7Qn2kV0xP",
"object": "booking",
"serviceId": "svc_consult",
"serviceName": "30-minute consultation",
"status": "confirmed",
"name": "Avery Chen",
"email": "avery@example.com",
"phone": "+15125550123",
"address": null,
"startsAt": "2026-10-14T15:00:00.000Z",
"endsAt": "2026-10-14T15:30:00.000Z",
"timeZone": "America/Chicago",
"currency": "usd",
"paidCents": 5413,
"taxCents": 413,
"refundedCents": 0,
"checkedIn": false,
"checkedInAt": null,
"rescheduledFrom": null,
"created": "2026-10-07T18:22:10.000Z"
}
FieldTypeNotes
idstringOpaque booking id.
objectstringAlways "booking".
serviceId / serviceNamestring | nullThe service booked, and its name when it was booked.
statusstringconfirmed; pendingPayment — a paid booking whose checkout is still open; expired — that checkout ran out and the slot was released; or canceled.
name / emailstring | nullThe guest.
phone / addressstring | object | nullPresent when the service asked for them.
startsAt / endsAtstring | nullISO 8601, UTC.
timeZonestring | nullThe zone the booking was made in, e.g. America/Chicago.
currencystringAlways usd.
paidCentsintegerWhat the guest paid, tax included. 0 for a free booking.
taxCentsintegerThe tax inside paidCents.
refundedCentsintegerRefunded so far. A booking refunded in full is canceled.
checkedIn / checkedInAtboolean / string | nullWhether, and when, the guest was checked in.
rescheduledFromstring | nullWhere a moved booking started before its latest move.
createdstring | nullISO 8601.

Endpoints​

List bookings​

GET /v1/sites/{siteId}/bookings — scope bookings:read. Paginated, ordered by id.

QueryNotes
statusconfirmed, pendingPayment or canceled. An expired checkout is stored as pendingPayment and reads as expired; any other value is a 400.
serviceIdBookings of one service.
limit, cursorStandard pagination.
curl "https://app.aglyn.com/api/v1/sites/s_main/bookings?status=confirmed" \
-H "Authorization: Bearer aglyn_sk_…"

Retrieve a booking​

GET /v1/sites/{siteId}/bookings/{bookingId} — scope bookings:read.

Returns a booking object, or 404 not_found ("No such booking").

Errors​

StatustypeWhen
400bad_requestAn unknown status (code: "validation_failed").
403insufficient_scopeKey lacks bookings:read.
403plan_requiredPlan no longer includes bookings (code: "bookings").
404not_foundUnknown or unowned site; unknown booking.
405method_not_allowedAnything other than GET.
  • Bookings — services, hours and bookings in the console.
  • Conventions — pagination, ordering, errors.