# Get appointment by id This endpoint retrieves updated appointment details and the status of a single existing appointment. Developers must send a valid as input in the request body, and Zocdoc returns the appointment details and status for that appointment. See Appointment Status definitions. If the appointment was booked with a Zocdoc user credential, only that user will have access to view or modify the appointment. If the appointment was booked with a machine-to-machine credential, the appointment can be viewed and modified by any of the developer's machine-to-machine credentials. Endpoint: GET /v1/appointments/{appointment_id} Version: 1.22 Security: ClientCredentialsFlow, AuthorizationCodeFlow ## Path parameters: - `appointment_id` (string, required) The Zocdoc ID for the appointment. Example: "d04b049a-41b1-4aba-9268-d8973cf72cdd" ## Response 200 fields (application/json): - `request_id` (string, required) - `data` (object, required) Data that will be returned upon a sucessful booking request - `data.appointment_id` (string, required) The Zocdoc ID of the appointment. - `data.appointment_status` (string, required) The status of the appointment. See [Appointment Status definitions](/guides/glossary). Enum: "pending_booking", "confirmed", "booking_failed", "cancelled", "no_show", "pending_reschedule", "rescheduled", "reschedule_failed" - `data.developer_patient_id` (string) - `data.is_provider_resource` (boolean, required) Whether the appointment will be performed by a professional under the supervision of the booked provider. - `data.location_phone_number` (string) The appointment location's unformatted 10 digit phone number Example: "9999999999" - `data.location_phone_extension` (string) The appointment location's unformatted extension number, as digits - `data.waiting_room_path` (string) Patient facing url that can be used to navigate to Zocdoc video service appointments - `data.confirmation_type` (string, required) Specifies how the appointment confirmation will be handled. * auto: means the system will automatically confirm. * manual: means confirmation requires user action. * pending_evaluation: indicates that the confirmation approach is pending evaluation. Enum: "auto", "manual", "pending_evaluation" - `data.start_time` (string, required) Date & time of the appointment Example: "2022-04-27T09:00:00-04:00" - `data.created_time_utc` (string) UTC date & time of the appointment creation Example: "2024-01-01T09:30:00Z" - `data.last_modified_time_utc` (string) UTC date & time of the appointment last modification Example: "2024-01-01T09:30:00Z" - `data.provider_location_id` (string, required) - `data.practice_id` (string) The Zocdoc id of the practice - `data.visit_reason_id` (string, required) - `data.visit_type` (string) The appointment's [visit type](/guides/glossary) Enum: "in_person", "zocdoc_video_service", "third_party_video_service" - `data.patient_type` (string) Whether or not the patient has been to the provider's practice. Enum: "existing", "new" - `data.notes` (string) Patient notes - `data.cancellation_reason` (string) Optional free text description for the appointment cancellation. Only use this field when cancellation_reason_type is set to 'other_patient_reason' or 'other_provider_reason'. - `data.cancellation_reason_type` (string) Enum field describing why the appointment was cancelled. This field is optional but recommended when known for metrics purposes. If the cancellation reason does not match any predefined enum values, use 'other_patient_reason' or 'other_provider_reason' and provide a free text explanation in the cancellation_reason field. Enum: "patient_no_longer_needs_appointment", "patient_no_longer_available", "other_patient_reason", "missing_needed_patient_information", "payment_or_insurance_issue", "patient_or_visit_type_not_accepted", "provider_not_available", "rescheduling_patient", "other_provider_reason" ## Response 404 fields (application/json): - `request_id` (string, required) - `error_type` (string, required) Enum: "api_error", "invalid_request" - `errors` (array, required) - `errors.field` (string) - `errors.message` (string, required)