> ## Documentation Index
> Fetch the complete documentation index at: https://build.practicehub.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update appointment_types



## OpenAPI

````yaml /openapi.json patch /appointment_types/{id}
openapi: 3.0.3
info:
  title: PracticeHub API
  version: 1.0.0
  description: >
    The canonical PracticeHub REST API. Every clinic account is a tenant
    addressed by the host the practice signs in on:
    `https://{clinic}.{region}.practicehub.io` (region host `neptune` London,
    `mercury` Frankfurt, `vulcan` Ohio, `jupiter` Singapore, `apollo` Sydney).


    ## Filtering

    List endpoints accept `?attribute=operator:value` with operators `eq`, `ne`,
    `gt`, `gte`, `lt`, `lte`, `null`, `not-null`, `like`, `contains`, `in`,
    `not-in`, `between` (`null`/`not-null` take no value; `in`, `not-in`,
    `between` take comma-separated values; `contains` is a case-insensitive
    substring match with no wildcards to escape). A value with no operator is an
    equality match. Only attributes marked filterable may be filtered (422
    otherwise).


    ## Metadata

    Every record carries an integrator-owned `metadata` object of string, number
    or boolean values (max 50 keys). Send `metadata` on create/update to merge
    keys (`null` removes a key) and filter with `?metadata[key]=operator:value`.


    ## Sorting & pagination

    `?sort=attr[,attr]:asc|desc` on sortable attributes; `?page=` and
    `?page_size=` (max 100). List responses wrap rows in `data` with `links` and
    `meta`.
servers:
  - url: https://{clinic}.{region}.practicehub.io/v3/api
    description: PracticeHub API — the host the practice signs in on
    variables:
      clinic:
        default: your-clinic
        description: The clinic subdomain
      region:
        default: neptune
        enum:
          - neptune
          - mercury
          - vulcan
          - jupiter
          - apollo
        description: >-
          The region host from the practice login URL: neptune (London), mercury
          (Frankfurt), vulcan (Ohio), jupiter (Singapore), apollo (Sydney)
security:
  - bearerAuth: []
tags:
  - name: Utility
    description: Liveness, identity and discovery
  - name: Availability
    description: Free, bookable slots — check before creating an appointment
  - name: Appointments
    description: The appointments resource
  - name: Appointment Types
    description: The appointment_types resource
  - name: Practitioner Availabilities
    description: The practitioner_availabilities resource
  - name: Resources
    description: The resources resource
  - name: Patients
    description: The patients resource
  - name: Tags
    description: The tags resource
  - name: Patient Tags
    description: The patient_tags resource
  - name: Numbers
    description: The numbers resource
  - name: Addresses
    description: The addresses resource
  - name: Patient Logs
    description: The patient_logs resource
  - name: Patient Log Tags
    description: The patient_log_tags resource
  - name: Files
    description: The files resource
  - name: Care Plans
    description: The care_plans resource
  - name: Clinical Notes
    description: Clinical notes on the patient record
  - name: Form Templates
    description: The form_templates resource
  - name: Invoices
    description: The invoices resource
  - name: Line Items
    description: The line_items resource
  - name: Payments
    description: The payments resource
  - name: Refunds
    description: The refunds resource
  - name: Payment Allocations
    description: The payment_allocations resource
  - name: Payment Methods
    description: The payment_methods resource
  - name: Billable Items
    description: The billable_items resource
  - name: Locations
    description: The locations resource
  - name: Practitioners
    description: The practitioners resource
  - name: Modalities
    description: The modalities resource
  - name: Referral Sources
    description: The referral_sources resource
  - name: Deleted Entities
    description: The deleted_entities resource
paths:
  /appointment_types/{id}:
    patch:
      tags:
        - Appointment Types
      summary: Update appointment_types
      operationId: update_appointment_types
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppointmentTypesUpdate'
      responses:
        '200':
          description: The resource
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AppointmentTypes'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '403':
          $ref: '#/components/responses/ReadOnlyKey'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    AppointmentTypesUpdate:
      type: object
      properties:
        name:
          type: string
          maxLength: 255
          description: >-
            The type's display name, as it appears on the calendar and in
            booking flows. Appointment types are managed in Settings.
        description:
          type: string
          nullable: true
          description: >-
            Longer description shown to patients in online booking (write-only
            here).
        duration:
          type: integer
          minimum: 1
          description: >-
            Default length in minutes. When booking, a practitioner-specific
            duration for the type takes precedence where one is set.
        color:
          type: string
          maxLength: 255
          description: Hex colour appointments of this type show on the calendar.
        type:
          type: string
          enum:
            - individual
            - group
            - dropin
          description: >-
            `individual` (the default), `group` (a group session type, with
            capacity in group_max_attendees) or `dropin`.
        group_max_attendees:
          type: integer
          minimum: 1
          nullable: true
          description: >-
            Maximum attendees for a group session type. Not used by standard
            types.
        price:
          type: string
          pattern: ^-?\d+(\.\d{1,2})?$
          example: '45.00'
          nullable: true
          description: >-
            Standard price of the appointment, in the account currency
            (write-only).
        statistical_type:
          type: string
          enum:
            - np
            - adjustment
            - rof
            - progress
            - other
          description: >-
            Reporting category: np (new patient), adjustment (regular visit),
            rof (report of findings), progress (progress exam) or other.
        modality_id:
          type: integer
          nullable: true
          description: The modality (discipline) the type belongs to — see modalities.
        bookable_for:
          type: string
          enum:
            - both
            - regular
            - np
          nullable: true
          description: >-
            Who can book online: both, regular (existing patients) or np (new
            patients).
        online_price:
          type: string
          pattern: ^-?\d+(\.\d{1,2})?$
          example: '45.00'
          nullable: true
          description: >-
            Price shown in online booking when it differs from price
            (write-only).
        online_deposit:
          type: string
          pattern: ^-?\d+(\.\d{1,2})?$
          example: '45.00'
          nullable: true
          description: >-
            Deposit taken at online booking; must not exceed online_price
            (write-only).
        sms_reminder:
          type: boolean
          description: Send SMS reminders for this type (write-only).
        email_reminder:
          type: boolean
          description: Send email reminders for this type (write-only).
        push_reminder:
          type: boolean
          description: Send patient-app push reminders (write-only).
        sms_confirmation:
          type: boolean
          description: Send SMS confirmations on booking (write-only).
        email_confirmation:
          type: boolean
          description: Send email confirmations on booking (write-only).
        push_confirmation:
          type: boolean
          description: Send patient-app push confirmations (write-only).
        online_booking:
          type: boolean
          description: Whether the type can be booked through online booking.
        patient_app_active:
          type: boolean
          description: Offer this type in the patient app (write-only).
        hide_from_patient:
          type: boolean
          description: Hide the type's name from patient-facing messages (write-only).
        active:
          type: boolean
          description: Whether the type is currently offered for booking.
        metadata:
          $ref: '#/components/schemas/Metadata'
    AppointmentTypes:
      type: object
      properties:
        id:
          type: integer
          description: Unique id of the appointment type.
        name:
          type: string
          maxLength: 255
          description: >-
            The type's display name, as it appears on the calendar and in
            booking flows. Appointment types are managed in Settings.
        duration:
          type: integer
          minimum: 1
          description: >-
            Default length in minutes. When booking, a practitioner-specific
            duration for the type takes precedence where one is set.
        color:
          type: string
          maxLength: 255
          description: Hex colour appointments of this type show on the calendar.
        modality_id:
          type: integer
          nullable: true
          description: The modality (discipline) the type belongs to — see modalities.
        type:
          type: string
          enum:
            - individual
            - group
            - dropin
          description: >-
            `individual` (the default), `group` (a group session type, with
            capacity in group_max_attendees) or `dropin`.
        group_max_attendees:
          type: integer
          minimum: 1
          nullable: true
          description: >-
            Maximum attendees for a group session type. Not used by standard
            types.
        active:
          type: boolean
          nullable: true
          description: Whether the type is currently offered for booking.
        sort_order:
          type: integer
          nullable: true
          description: Manual position used when the app lists appointment types.
        updated_at:
          type: string
          description: When the record was last changed, YYYY-MM-DDTHH:MM:SSZ, UTC.
        created_at:
          type: string
          description: When the record was created, YYYY-MM-DDTHH:MM:SSZ, UTC.
        online_booking:
          type: boolean
          nullable: true
          description: Whether the type can be booked through online booking.
        columns:
          type: string
          description: >-
            Default number of calendar columns a visit of this type spans
            (appointments.columns takes it when not sent). Set in Settings.
        metadata:
          $ref: '#/components/schemas/Metadata'
      example:
        id: 12
        name: Group Exercise Class
        duration: 45
        color: '#4F86C6'
        modality_id: 3
        type: group
        group_max_attendees: 8
        active: true
        sort_order: 3
        updated_at: '2026-04-02T14:05:11Z'
        created_at: '2025-11-20T09:12:47Z'
        online_booking: true
        columns: 1
    Metadata:
      type: object
      description: >-
        Integrator-owned key/value metadata (max 50 keys). Values are strings
        (≤500 chars), numbers or booleans and read back with the type they were
        written with. On write, a null value removes the key. Filter with
        metadata[key]=op:value; number operands compare numerically.
      additionalProperties:
        nullable: true
        oneOf:
          - type: string
            maxLength: 500
          - type: number
          - type: boolean
    Error:
      type: object
      required:
        - message
        - code
      properties:
        message:
          type: string
          description: Human-readable; may change — do not parse
        code:
          type: string
          description: >-
            Stable machine-readable code (snake_case), e.g. validation_failed,
            not_found, key_read_only, not_online_bookable, group_full,
            appointment_rule, billing_rule, idempotency_key_reused, rate_limited
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Present on validation failures, keyed by attribute
  responses:
    Unauthenticated:
      description: Missing or invalid credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ReadOnlyKey:
      description: The API key is read-only
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: No such resource for this account
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Conflict:
      description: >-
        A domain rule rejected the change (e.g. group_full, already processed,
        void)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationError:
      description: Invalid input; `errors` is keyed by attribute
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key from Developers → API Keys, sent as Authorization: Bearer <key>.'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.