Appointments

List Appointments

Returns a paginated list of Appointments, optionally filtered by the date range the appointments fall in, the date range that the underlying Orders were submitted in, and by Practitioner, Room, or Zone. Appointments are ordered by start_time ascending.

This endpoint powers the calendar list views, day-sheet exports (via the CSV variant returned when Accept: text/csv), and any third-party reporting integration that needs the same data the Trybe dashboard renders.

get/shop/appointments

Query parameters

pageinteger

The page to retrieve results from

per_pageinteger

The number of results to return per page

site_idstring required

Filter results by the site they belong to

date_fromstring date

Restrict results to those on or after this date, ISO-8601 YYYY-MM-DD.

date_tostring date

Restrict results to those on or before this date, ISO-8601 YYYY-MM-DD.

order_submitted_at_fromstring date

the order submitted date to fetch appointments from

order_submitted_at_tostring date

the order submitted date to fetch appointments to

practitioner_idstring[]

A comma separated string of practitioner ids to fetch bookings for

room_idstring[]

A comma separated string of room ids to fetch bookings for

zone_idstring[]

A comma separated string of zone ids to fetch bookings for

Response

Successfully retrieved Appointments.

Example response

{
  "links": {
    "first": "http://example.com?page=1",
    "next": "https://example.com?page=3",
    "prev": "https://example.com?page=1",
    "last": "https://example.com?page=4"
  },
  "meta": {
    "from": 1,
    "to": 2,
    "total": 2,
    "current_page": 1,
    "last_page": 2,
    "per_page": 15,
    "path": "http://example.com/api"
  },
  "data": [
    {
      "appointment_type_name": "60 minute massage",
      "currency": "gbp",
      "duration": 60,
      "email": "janedoe@example.com",
      "end_buffer": 15,
      "end_time": "2019-01-15T13:00:00+01:00",
      "first_name": "Jane",
      "full_name": "Jane Doe",
      "guests": [
        {
          "id": "5dcb47800000000000000000",
          "checked_in_at": "2025-10-01T12:00:00+00:00",
          "checked_out_at": "2025-10-01T16:30:00+00:00",
          "customer_id": "5f8a1b2c-9d3e-4a5b-8c6d-7e8f9a0b1c2d",
          "email": "jane.doe@example.com",
          "first_name": "Jane",
          "intake_form_submission_id": "5dcb47800000000000000010",
          "last_name": "Doe",
          "name": "Jane Doe"
        }
      ],
      "has_notes": true,
      "has_outstanding_balance": true,
      "has_special_requests": true,
      "is_group_booking": true,
      "is_hotel_room_booking": true,
      "is_locked": true,
      "is_part_of_package": true,
      "last_name": "Doe",
      "net_total": 4950,
      "order_labels": [
        {
          "color": "#FF0000",
          "name": "VIP"
        }
      ],
      "order_locked_at": "2019-01-15T12:00:00+01:00",
      "order_ref": "TRY00",
      "package_product_code": "MAS123",
      "phone": "+447727123456",
      "practitioners": [
        {
          "id": "5dcb47800000000000000000",
          "name": "Jane Doe"
        }
      ],
      "product_code": "MAS123",
      "room": {
        "id": "5dcb47800000000000000000"
      },
      "start_time": "2019-01-15T12:00:00+01:00",
      "submitted_at": "2019-01-15T12:00:00+01:00",
      "total_cost": 5000,
      "created_at": "2025-02-04T12:00:00+01:00",
      "updated_at": "2025-02-04T12:00:00+01:00"
    }
  ]
}

Changes

No recorded changes to this endpoint across all 1 revision of this API.