---
title: "Update an appointment"
method: PUT
path: "/appointments/{id}"
tags: ["Appointment"]
---

# Update an appointment

`PUT /appointments/{id}`

Returns the newly updated appointment

## Path parameters

- `id` string, required

## Query parameters

- `id_is_partner` boolean, required
- `client_partner_id` string
- `client_mytime_id` integer
- `child_partner_id` string
- `child_mytime_id` integer
- `location_partner_id` string
- `location_mytime_id` integer
- `employee_partner_id` string
- `employee_mytime_id` integer
- `begin_at` string, required
- `end_at` string, required
- `address_id` string

## Headers

- `X-Subdomain` string

## Request body

- AppointmentPostBody
  - `booked_by` string — Booked by
  - `partner_name` string — Partner Name to display in appointment notes
  - `variations` VariationWithSegments[] — The variations objects
    - `price` number, required — Total charge for this variation. For multi-day stays (e.g. boarding), this is the total for the entire stay. When "multiplier_base_price" and "price_multiplier" are sent, this must equal their product.
    - `multiplier_base_price` number — Per-unit base price. Must be sent together with "price_multiplier" or omitted entirely.
    - `price_multiplier` integer — Number of units the base price is multiplied by (e.g. minutes, attendees). Must be sent together with "multiplier_base_price" or omitted entirely.
    - `variation_partner_id` string, required — Partner-side identifier of the service being booked.
    - `variation_mytime_id` string, required — MyTime identifier of the service being booked. Pull from GET /variations.
    - `parent_id` string — For add-on variations, references the parent variation in the same request. Match the parent’s variation_partner_id if provided, otherwise the parent’s variation_mytime_id (integer or string both accepted). The parent must appear earlier in the variations array than any add-on referencing it — an add-on cannot be the first entry, or the relationship is silently dropped. The add-on must also be configured as connectable to that parent service in the merchant catalog; otherwise the request fails with "Add-on cannot be added-on for variation <id>".
    - `variation_employee_id` string — Staff assigned to this specific variation. Distinct from the appointment-level employee_mytime_id query param — lets different variations within one appointment be performed by different staff (e.g. a stylist for the cut and a colorist for the color).
    - `variation_begin_at` string — Pins this variation to a specific start time within the appointment window. ISO 8601, e.g. 2026-05-15T10:00:00Z.
    - `variation_end_at` string — Pins this variation to a specific end time within the appointment window. See variation_begin_at. ISO 8601.
    - `segments` SegmentVariationPostBody[] — Optional array of segment overrides for this variation. Each entry instantiates one of the variation’s segment_templates for this booking and lets you override per-segment `duration`. Omit the array to use the variation’s default segment durations. See SegmentVariationPostBody.
      - `position` integer — 0-based order of this segment within the variation.
      - `kind` 'service' | 'processing' | 'buffer' — "service" segments are attended in-chair time where staff is actively working; they contribute to the appointment duration. "processing" segments are unattended in-chair time between service segments where no staff is needed (e.g. drying, color processing) — they extend end_at (the client is still occupying the chair/room) but the employee is free to be booked on another appointment during them. "buffer" segments are turnover/cleanup time at the end and do not extend the appointment end_at.
      - `duration` integer — Segment length in minutes. Example: 120 for a 2-hour segment.
      - `segment_template_id` integer — ID of the segment template on the variation being booked. Obtain it from GET /variations/:id (segment_templates array).
      - `segment_employees` object[] — Optional per-segment employee assignments. An appointment can span multiple segments either because a single service is composed of several segments (e.g. a couples service) or because the appointment mixes services owned by different employees (e.g. daycare + spa). Supply this to control which employee performs each segment. When provided for a segment, the named employee is assigned to that segment. When omitted, the segment falls back to the appointment-level employee.
        - `employee_mytime_id` integer — mytime ID of the employee assigned to this segment.
      - `segment_resources` object[] — Optional resource assignments for this segment (e.g. room, equipment). Each entry pairs a resource with the requirement it fulfills on the segment template.
        - `resource_mytime_id` integer — mytime ID of the resource being assigned.
        - `requirement_id` integer — ID of the requirement on the segment template that this resource fulfills.
  - `notes` Note[] — The notes objects
    - `content` string
    - `employee_partner_id` string
    - `id` integer
    - `employee_mytime_id` integer
  - `custom_field_values` CustomFieldValue[] — Per-appointment custom attribute values
    - `value` string
    - `custom_field_partner_id` string
    - `id` integer
    - `custom_field_mytime_id` integer
  - `appointment_group_id` integer — Id of the appointment group this appointment belongs to. Two or more appointments sharing the same `appointment_group_id` are treated as a single booking (one ticket at checkout, one payment, grouped notifications). Obtain a group id by calling `POST /appointment_groups`.

## Response `200`

Appointment response

- Appointment
  - `purchased_at_price` number
  - `begin_at` string, required
  - `end_at` string, required
  - `client_name` string
  - `client_email` string
  - `created_at` string
  - `status` string
  - `time_zone` string
  - `is_existing_customer` string
  - `client_phone` string
  - `variation_name` string
  - `full_address` string
  - `employee_partner_id` integer
  - `location_partner_id` integer
  - `client_partner_id` integer
  - `mytime_id` string
  - `client_mobile_phone` string
  - `client_home_phone` string
  - `client_work_phone` string
  - `checked_in_at` string
  - `checked_in` string
  - `checked_out_at` string
  - `pos_status` string
  - `address_id` string
  - `employee_requested` string
  - `child_partner_id` integer
  - `employee_mytime_id` integer, required
  - `location_mytime_id` integer, required
  - `client_mytime_id` integer, required
  - `child_mytime_id` integer
  - `variations` Variation[]
    - `price` number, required — Total charge for this variation. For multi-day stays (e.g. boarding), this is the total for the entire stay. When "multiplier_base_price" and "price_multiplier" are sent, this must equal their product.
    - `multiplier_base_price` number — Per-unit base price. Must be sent together with "price_multiplier" or omitted entirely.
    - `price_multiplier` integer — Number of units the base price is multiplied by (e.g. minutes, attendees). Must be sent together with "multiplier_base_price" or omitted entirely.
    - `variation_partner_id` string, required — Partner-side identifier of the service being booked.
    - `variation_mytime_id` string, required — MyTime identifier of the service being booked. Pull from GET /variations.
    - `parent_id` string — For add-on variations, references the parent variation in the same request. Match the parent’s variation_partner_id if provided, otherwise the parent’s variation_mytime_id (integer or string both accepted). The parent must appear earlier in the variations array than any add-on referencing it — an add-on cannot be the first entry, or the relationship is silently dropped. The add-on must also be configured as connectable to that parent service in the merchant catalog; otherwise the request fails with "Add-on cannot be added-on for variation <id>".
    - `variation_employee_id` string — Staff assigned to this specific variation. Distinct from the appointment-level employee_mytime_id query param — lets different variations within one appointment be performed by different staff (e.g. a stylist for the cut and a colorist for the color).
    - `variation_begin_at` string — Pins this variation to a specific start time within the appointment window. ISO 8601, e.g. 2026-05-15T10:00:00Z.
    - `variation_end_at` string — Pins this variation to a specific end time within the appointment window. See variation_begin_at. ISO 8601.
  - `custom_field_values` CustomFieldValue[]
    - `value` string
    - `custom_field_partner_id` string
    - `id` integer
    - `custom_field_mytime_id` integer
  - `events` Event[]
    - `action` string
    - `occurred_at` string
    - `appointment_previous_begin_at` string
    - `appointment_begin_at` string
    - `employee_partner_id` integer
  - `partner_id` integer
  - `appointment_group_id` integer — ID of the appointment group this appointment belongs to, or null if it is not part of a group.

## Other responses

- `401` — Unauthorized
- `422` — Invalid parameters
- `500` — Internal Server Error
- `504` — Gateway Timeout

---

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