---
title: "Update a single instance of a recurring schedule item.
Creates an exception record that overrides the specific occurrence."
method: PUT
path: "/ScheduleItems/{id}/instance"
tags: ["ScheduleItems"]
---

# Update a single instance of a recurring schedule item.
Creates an exception record that overrides the specific occurrence.

`PUT /ScheduleItems/{id}/instance`

## Path parameters

- `id` string, required

## Request body

- UpdateScheduleInstanceRequest — Request to update a single instance of a recurring schedule item Creates an exception record that overrides the instance
  - `originalStartTime` string, date-time, required
  - `title` string, nullable
  - `startTime` string, date-time, nullable
  - `endTime` string, date-time, nullable
  - `description` string, nullable
  - `locationId` string, nullable
  - `assignedToId` string, nullable
  - `isCancelled` boolean

## Response `200`

OK

- ScheduleItemResponseDto — Response DTO for standalone schedule items
  - `id` string
  - `title` string
  - `startTime` string, date-time
  - `endTime` string, date-time
  - `description` string, nullable
  - `type` string
  - `locationId` string
  - `location` LocationSummaryDto
    - `id` string
    - `name` string
    - `isActive` boolean
    - `isVehicle` boolean
    - `isPersonalVehicle` boolean
  - `assignedToId` string, nullable
  - `assignedTo` UserSummaryDto
    - `id` string
    - `email` string
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `displayName` string, nullable
    - `type` string
    - `roleId` string, nullable
    - `roleName` string, nullable
  - `customAttributes` string, nullable
  - `createdAt` string, date-time
  - `updatedAt` string, date-time
  - `createdById` string, nullable
  - `createdBy` UserSummaryDto
    - `id` string
    - `email` string
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `displayName` string, nullable
    - `type` string
    - `roleId` string, nullable
    - `roleName` string, nullable
  - `createdBySource` string, nullable
  - `hasAppointment` boolean
  - `appointment` AppointmentSummaryForScheduleDto — Lightweight appointment summary for embedding in schedule item responses. Polymorphic on subject: per-patient appointments populate Patient/PatientId; group-visit appointments (litter/herd) populate PatientGroup/PatientGroupId. Exactly one of (PatientId, PatientGroupId) is set, per the appointments_subject_chk DB constraint.
    - `id` string
    - `patientId` string, nullable
    - `patient` PatientSummaryDto — Lightweight patient summary for lists and references
      - `id` string — Unique patient identifier
      - `name` string — The patient's name
      - `species` string — The species name. References a species from GET /species endpoint.
      - `speciesId` string, nullable — The species ID for programmatic lookups.
      - `breed` string — The breed name
      - `sex` string — The patient's sex
      - `dateOfBirth` string, date-time, nullable — Date of birth, if known
      - `isEstimatedAge` boolean
      - `fixed` boolean — Whether the patient is spayed/neutered
      - `treatmentAcceptanceRate` union
        - number, double
        - string, double
    - `patientGroupId` string, nullable
    - `patientGroup` PatientGroupSummaryForScheduleDto — Lightweight group summary for embedding in schedule item responses when the appointment is group-bound (litter / herd visit).
      - `id` string
      - `name` string
      - `groupType` string — "Litter" or "Herd".
      - `speciesName` string, nullable
    - `clientId` string
    - `client` ClientSummaryDto
      - `id` string
      - `firstName` string
      - `lastName` string
      - `email` string, nullable
      - `phoneNumber` string, nullable
    - `status` string
    - `confirmationStatus` string, nullable — Client confirmation state ("Unconfirmed" | "Confirmed" | "Declined" | "RescheduleRequested"). Null when no confirmation was ever requested — the schedule renders nothing in that case.
    - `reasonForVisit` string
    - `notes` string, nullable
    - `appointmentTypeId` string, nullable
    - `appointmentType` AppointmentTypeSummaryDto — Lightweight appointment type summary for embedding in schedule item responses
      - `id` string
      - `name` string
      - `color` string, nullable
    - `isTravelAppointment` boolean — Travel/mobile visit details. These are the only copy of the destination a consumer of a schedule item ever sees: ITE-283 added a Mobile visit panel to the view modal, a travel section to Edit and a destination line to Reschedule, but every one of them gates on bool AppointmentSummaryForScheduleDto.IsTravelAppointment — which this summary never carried, so all three were unreachable in production even though the TypeScript type advertised the fields. Anything added here must also be mapped in ScheduleItemService.MapToResponseDto; the FE type is not a contract.
    - `travelDestinationAddress` string, nullable
    - `travelDestinationPlaceId` string, nullable
    - `travelStartingAddress` string, nullable
    - `travelStartingPlaceId` string, nullable
    - `travelDistanceMeters` union
      - integer
      - string, int32
    - `travelDurationMinutes` union
      - integer
      - string, int32
    - `travelIsRoundTrip` boolean, nullable
    - `travelFeeAmount` union
      - number, double
      - string, double
    - `travelAccessNotes` string, nullable
  - `isRecurring` boolean
  - `recurrenceRule` string, nullable
  - `recurrenceEndDate` string, date-time, nullable
  - `isException` boolean
  - `parentScheduleItemId` string, nullable
  - `isRecurrenceInstance` boolean
  - `originalStartTime` string, date-time, nullable

---

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