# Appointments

Create appointment reservations, confirm bookings, cancel, and reschedule. Query available slots and appointment types filtered by location, practitioner, and appointment type.

 - [GET /v1/appointments/{id}](https://developer.herohealth.net/apis/public-api/openapi/appointments/getappointment.md): Retrieves an appointment by its ID.
 - [GET /v1/appointments/{id}/status](https://developer.herohealth.net/apis/public-api/openapi/appointments/getappointmentstatus.md): Retrieves the status of an appointment by its ID, including the derived booking status and EHR partner status.
 - [POST /v1/appointments](https://developer.herohealth.net/apis/public-api/openapi/appointments/createappointment.md): Create an appointment reservation for a patient. The appointment is held in a reserved state until confirmed via the Book Appointment endpoint. **Flow:** List Slots → Create Appointment (reserve) → Bo
 - [GET /v1/appointment_types](https://developer.herohealth.net/apis/public-api/openapi/appointments/listappointmenttypes.md): Retrieves a list of all appointment types configured for the requesting practice group.
 - [GET /v1/booking_links/{id}](https://developer.herohealth.net/apis/public-api/openapi/appointments/getbookinglink.md): Get a booking link and its fields.
 - [GET /v1/slots/count](https://developer.herohealth.net/apis/public-api/openapi/appointments/countslots.md): Count of all bookable slots for the requesting practice group.
 - [GET /v1/slots/{id}](https://developer.herohealth.net/apis/public-api/openapi/appointments/getslot.md): Retrieves a single bookable slot by its ID for the requesting practice group.
 - [GET /v1/slots](https://developer.herohealth.net/apis/public-api/openapi/appointments/listslots.md): Retrieve available bookable slots for the practice group. Filter by location, practitioner, appointment type, and date range. **Typical flow:** List Appointment Types → List Slots (filtered) → Create
 - [POST /v1/slots/availability](https://developer.herohealth.net/apis/public-api/openapi/appointments/checkslotsavailability.md): Check whether a specific slot is still available for booking. Call this immediately before creating an appointment to avoid reservation conflicts.
 - [GET /v2/appointments](https://developer.herohealth.net/apis/public-api/openapi/appointments/listappointments.md): Retrieves a list of all appointments.
 - [PATCH /v2/appointments/{id}/book](https://developer.herohealth.net/apis/public-api/openapi/appointments/bookappointmentv2.md): Submits a previously reserved appointment for booking. Returns immediately with status "pending"; the booking is confirmed asynchronously. Poll Get Appointment Status for the outcome. Only appointment
 - [PATCH /v2/appointments/{id}/cancel](https://developer.herohealth.net/apis/public-api/openapi/appointments/cancelappointmentv2.md): Cancels a confirmed appointment. Returns immediately with status "cancelling"; the cancellation is confirmed asynchronously. Poll Get Appointment Status for the outcome.
 - [PATCH /v2/appointments/{id}/reschedule](https://developer.herohealth.net/apis/public-api/openapi/appointments/rescheduleappointmentv2.md): Asynchronously reschedules an EHR-confirmed appointment to a new slot (book-new then cancel-old). Returns immediately with a rescheduling status; poll the status endpoint for the outcome.
 - [PUT /v2/appointments/{id}](https://developer.herohealth.net/apis/public-api/openapi/appointments/editappointmentv2.md): Updates an unconfirmed reservation in place - slot, practitioner, reason, patient proxy - and re-stamps the reservation hold, returning the fresh reserved_until. Only appointments in the reserved stat
 - [GET /v2/automated_messages](https://developer.herohealth.net/apis/public-api/openapi/appointments/listautomatedmessages.md): Retrieves a list of automated appointment messages.
 - [GET /v2/bookinglinks](https://developer.herohealth.net/apis/public-api/openapi/appointments/listbookinglinks.md): Retrieves a list of shortlinks filtered by 'booking' link type and version 2.
 - [PUT /v1/appointments/{id}](https://developer.herohealth.net/apis/public-api/openapi/appointments/editappointment.md): Deprecated: new integrations should use `PUT /v2/appointments/{id}` (`editAppointmentV2`) instead. This endpoint remains available for existing `hero_confirmed` integrations. Edit a non-confirmed appo
 - [PATCH /v1/appointments/{id}/book](https://developer.herohealth.net/apis/public-api/openapi/appointments/bookappointment.md): Deprecated: new integrations should use `PATCH /v2/appointments/{id}/book` (`bookAppointmentV2`) instead. This endpoint remains available for existing `hero_confirmed` integrations. Confirm a previous
 - [PATCH /v1/appointments/{id}/cancel](https://developer.herohealth.net/apis/public-api/openapi/appointments/cancelappointment.md): Deprecated: new integrations should use `PATCH /v2/appointments/{id}/cancel` (`cancelAppointmentV2`) instead. This endpoint remains available for existing `hero_confirmed` integrations. Cancel a booke
 - [PATCH /v1/appointments/{id}/reschedule](https://developer.herohealth.net/apis/public-api/openapi/appointments/rescheduleappointment.md): Deprecated: new integrations should use `PATCH /v2/appointments/{id}/reschedule` (`rescheduleAppointmentV2`) instead. This endpoint remains available for existing `hero_confirmed` integrations. Resche
