---
title: "PUT /api/appointments/{id}"
method: PUT
path: "/api/appointments/{id}"
tags: ["Clinical"]
---

# PUT /api/appointments/{id}

`PUT /api/appointments/{id}`

Update an existing appointment or break

## Path parameters

- `id` string, required

## Request body

- Appointment
  - `status` '' | 'Arrived' | 'Checked In' | 'Checked In Online' | 'In Room' | 'In Session' | 'Complete' | 'Confirmed' | 'Not Confirmed' | 'Rescheduled' | 'Cancelled' | 'No Show' — One of ``, `Arrived`, `Checked In`, `In Room`, `Cancelled`, `Complete`, `Confirmed`, `In Session`, `No Show`, `Not Confirmed`, or `Rescheduled`. Or one of the custom statuses.
  - `icd9_codes` string[]
  - `office` integer, required — Office ID
  - `base_recurring_appointment` string — ID of base appointment of a recurring series
  - `color` string
  - `vitals` object — Clinical vitals associated with the appointment
    - `height_units` string
    - `weight_units` string
    - `pain` string — 0-10 pain scale.
    - `temperature` number
    - `weight` number
    - `smoking_status` 'blank' | '449868002' | '428041000124106' | '8517006' | '266919005' | '77176002' | '266927001' | '428071000124103' | '428061000124105'
    - `head_circumference` number
    - `bmi` string
    - `head_circumference_units` string
    - `blood_pressure_2` integer
    - `blood_pressure_1` integer
    - `height` number
    - `pulse` integer — Beats per minute.
    - `oxygen_saturation` number
    - `respiratory_rate` integer — Breathes per minute.
    - `temperature_units` string
  - `first_billed_date` string
  - `last_billed_date` string
  - `billing_status` string — Should be one of `Auto Accident Claim`, `Balance Due`, `Bill Insurance`, `Bill Secondary Insurance`, `Durable Medical Equipment Claim`, `Internal Review`, `Paid In Full`, `Settled`, `Worker's Comp Claim` or one of the custom billing status
  - `primary_insurer_payer_id` string
  - `duration` integer — Length of the appointment in minutes. Optional if `profile` is provided.
  - `appt_is_break` boolean
  - `id` string — Unique identifier. Usually numeric, but not always
  - `custom_fields` object[] — Custom appointment fields
    - `field_type` integer
    - `created_at` string
    - `updated_at` string
    - `field_value` string
  - `scheduled_time` string, required — The starting time of the appointment
  - `secondary_insurer_name` string
  - `doctor` integer, required — Doctor ID
  - `recur_start_date` string — For recurring appointments, the start date of the recurring series
  - `primary_insurance_id_number` string
  - `created_by` string
  - `ins2_status` '' | 'Incomplete Information' | 'In Process Emdeon' | 'Rejected Emdeon' | 'Rejected EPS' | 'Rejected Jopari' | 'In Process Payor' | 'Rejected Waystar Professional' | 'Rejected Waystar Institutional' | 'In Process Payer' | 'Payer Acknowledged' | 'Rejected Payor' | 'Rejected Payer' | 'Paid in Full' | 'Partially Paid' | 'Coordination of Benefits' | 'ERA Received' | 'ERA Denied' | 'HCFA Form Faxed' — Billing status of secondary insurer
  - `first_edi_date` string
  - `billing_notes` object[] — Billing notes of the appointment. For writing, check `/api/claim_billing_notes`
    - `text` string — Content of the note
    - `created_at` string
    - `appointment` integer
    - `id` integer — ID of the billing note
    - `created_by` string
  - `is_walk_in` boolean — Whether the appointment is a walk-in appointment
  - `billing_provider` string
  - `reminder_profile` string — Write-only. ID of an `/api/reminder_profiles` instance. Set this to apply a reminder profile to the appointment. Cannot be applied to an appointment with reminders.
  - `primary_insurer_name` string
  - `profile` integer — ID of an `/api/appointment_profiles` instance. The profile sets default values for `color`, `duration`, and `reason` on creation, which can be overriden by setting these values explicitly.
  - `resubmit_claim_original_id` integer — ID of this claim id.
  - `patient` integer, required — ID of this appointment's patient. Breaks have a null patient field.
  - `recurrence_instance_key` string, nullable — A stable identifier for a recurring appointment instance, in the format `{rootSeriesId}_{YYYYMMDD}` where `YYYYMMDD` is the original occurrence date, not the current scheduled date. This value remains consistent across materialization, series splits, and rescheduling, so it should be treated as an opaque identifier rather than a source for display dates. Returns null for non-recurring appointments. Only present when the `consistent_recurrence_id` feature flag is enabled.
  - `cloned_from` integer — ID of the original appointment which this appointment cloned from. Will be null if the appointment is not cloned.
  - `extended_updated_at` string — The most recent update time among appointment itself, its vitals and its custom vitals
  - `exam_room` integer, required — Index of the exam room that this appointment occurs in. See `/api/offices`
  - `updated_at` string
  - `reason` string — Default to `""`
  - `last_edi_date` string
  - `secondary_insurer_payer_id` string
  - `allow_overlapping` boolean — Bypass overlap check.
  - `payment_profile` string — Appointment Payment Profile
  - `secondary_insurance_id_number` string
  - `clinical_note` object — Associated clinical note object
    - `pdf` string
    - `locked` boolean
    - `updated_at` string
  - `custom_vitals` object[] — Custom vitals associated with this appointment.
    - `value` string
    - `vital_type` integer
  - `is_virtual_base` boolean
  - `recurring_appointment` boolean — Whether the appointment is a recurring appointment or not
  - `supervising_provider` string — Supervising provider of appointment if set.
  - `recurring_days` unknown[] — For recurring appointments, the days of the week on which the appointment recurs. Can include Monday, Tuesday, Wednesday, Thursday, Friday, Saturday or Sunday
    - unknown
  - `status_transitions` object[]
    - `appointment` string
    - `to_status` string
    - `from_status` string
    - `datetime` string
  - `created_at` string
  - `reminders` object[] — Scheduled reminders of the appointment
    - `scheduled_time` string
    - `type` 'email' | 'sms' | 'phone' | 'auto_call'
    - `id` integer
  - `ins1_status` '' | 'Incomplete Information' | 'In Process Emdeon' | 'Rejected Emdeon' | 'Rejected EPS' | 'Rejected Jopari' | 'In Process Payor' | 'Rejected Waystar Professional' | 'Rejected Waystar Institutional' | 'In Process Payer' | 'Payer Acknowledged' | 'Rejected Payor' | 'Rejected Payer' | 'Paid in Full' | 'Partially Paid' | 'Coordination of Benefits' | 'ERA Received' | 'ERA Denied' | 'HCFA Form Faxed' — Billing status of primary insurer
  - `custom_status` string — AppointmentStatus Name
  - `recur_end_date` string — For recurring appointments, the end date of the recurring series
  - `icd10_codes` string[]
  - `deleted_flag` boolean — Whether the appointment is deleted.
  - `notes` string
  - `recurs_every` integer — For recurring appointments, the number of weeks between recurrences. For example, if this is 2, the appointment recurs every other week.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Permission Denied
- `404` — Not Found
- `409` — Scheduled time overlaps with an existing appointment
- `500` — Internal Server Error

---

[API](https://skmtc.net/drchrono/apis/untitled-api.md) · [All operations](https://skmtc.net/drchrono/apis/untitled-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/drchrono/untitled-api/versions/e595797fe800/schema)
