---
title: "List appointments"
method: GET
path: "/api/sites/multiscreen/{site_name}/booking/appointments"
tags: ["Native booking appointments api"]
---

# List appointments

`GET /api/sites/multiscreen/{site_name}/booking/appointments`

## Request

- Base URL: `https://api.duda.co`
- URL: `https://api.duda.co/api/sites/multiscreen/{site_name}/booking/appointments`
- Auth: HTTP basic

Returns the site's appointments, narrowed by any combination of the query parameters (status, attendee email, appointment type, staff member, and start/end/created/updated date ranges) and ordered by the sort_* parameters. Results are paginated: limit defaults to and is capped at 100, offset defaults to 0, and total_responses reports how many appointments match the filters across all pages, not how many are in this one - use it to decide whether to fetch another page.

## Path parameters

- `site_name` string, required

## Query parameters

- `limit` integer
- `offset` integer
- `status` string[]: Filter appointments by status.
- `attendee_email` string
- `appointment_uid` string
- `appointment_types` string[]
- `after_start` string
- `before_end` string
- `after_created_at` string
- `before_created_at` string
- `after_updated_at` string
- `before_updated_at` string
- `sort_start` string
- `sort_end` string
- `sort_created` string
- `sort_updated_at` string
- `staff_member_ids` string[]

## Response `200`

OK

- ApiPageResponseApiAppointmentResponse
  - `limit` integer: Page size applied for request
  - `offset` integer: Offset applied for request
  - `results` ApiAppointmentResponse[]: Content payload
    - `absent_host` boolean: Whether the host is absent
    - `appointment_type` ApiEventType: Appointment type
      - `id` string: Event type ID
      - `slug` string: Event type slug
    - `attendees` ApiSeatedAttendee[]: Appointment attendees
      - `absent` boolean: Whether the attendee is absent
      - `booking_fields_responses` object: Booking fields responses
      - `email` string: Attendee email
      - `language` 'en' | 'fr' | 'it' | 'ru' | 'es' | 'de' | 'pt' | 'ro' | 'nl' | 'pt-BR' | 'es-419' | 'ko' | 'ja' | 'pl' | 'ar' | 'iw-TL' | 'zh-HK' | 'zh-CN' | 'zh-TW' | 'cs' | 'sr' | 'sv' | 'no' | 'fi' | 'da' | 'he' | 'tr' | 'uk' | 'vi' | 'hu' | 'id' | 'ms' | 'th' | 'sk' | 'bg' | 'hr' | 'lt' | 'sl' | 'hi' | 'et' | 'lv' | 'el' | 'ca': Attendee preferred language for confirmation emails.
      - `metadata` object: Metadata
      - `name` string: Attendee name
      - `phone_number` string: Attendee phone number
      - `seat_uid` string: Seat UID
      - `time_zone` string: Attendee timezone
    - `booking_fields_responses` object: Booking fields responses
    - `cancellation_reason` string: Cancellation reason
    - `cancelled_by_email` string: Email of the user who cancelled the appointment
    - `created_at` string, date-time: Creation timestamp
    - `description` string: Appointment description
    - `duration` number: Appointment duration in minutes
    - `end` string: Appointment end time
    - `hosts` ApiBookingHost[]: Appointment hosts
      - `email` string: Host email
      - `id` string: Host ID
      - `name` string: Host name
      - `time_zone` string: Host timezone
      - `username` string: Host username
    - `ics_uid` string: ICS UID
    - `id` integer: Appointment ID
    - `location` string: Appointment location
    - `metadata` object: Metadata stored with the appointment: what the caller supplied, plus the appointment-type, pricing and `bookingSource` fields the product itself writes
    - `rating` number: Appointment rating
    - `recurring_booking_uid` string: Recurring booking UID
    - `rescheduled_by_email` string: Email of the user who rescheduled the appointment
    - `rescheduled_from_uid` string: UID of the previous appointment from which this booking was rescheduled
    - `rescheduling_reason` string: Rescheduling reason
    - `start` string: Appointment start time
    - `status` 'accepted' | 'cancelled' | 'pending' | 'rejected': Appointment status
    - `title` string: Appointment title
    - `uid` string: Appointment UID
    - `updated_at` string, date-time: Last update timestamp
  - `site_name` string: Owning site
  - `total_responses` integer: Total amount of elements matching requested filters

## Other responses

- `400`: Non-OK response from the server
- `401`: Unauthorized request - missing or invalid credentials
- `429`: Rate limit exceeded - please refer to api documentation for limits

---

[API](https://skmtc.dev/duda/apis/duda-partner-api.md) - [All operations](https://skmtc.dev/duda/apis/duda-partner-api/llms.txt) - [OpenAPI document](https://skmtc.dev/duda/apis/duda-partner-api/revisions/52be4d41cb12?raw)
