---
title: "View appointment types (beta)"
method: GET
path: "/appointment_types"
tags: ["Appointment Types"]
---

# View appointment types (beta)

`GET /appointment_types`

## Request

- Base URL: `https://nexhealth.info`
- URL: `https://nexhealth.info/appointment_types`
- Auth: API key in header `Authorization`

> 🚧 Beta
>
> Send `Nex-Api-Version: v3.1.0` to use this endpoint. It is still changing, and access is limited to approved partner institutions. Contact NexHealth before you build on it.

> **Changed from v3.0.0:** Adds query params `provider_id`, `source`; changes query param `include[]`; adds response fields `data[].active`, `data[].data_source_id`, `data[].display_name`, `data[].foreign_id` (+2 more); removes response field `data[].descriptors[].last_sync_time`.

This endpoint returns appointment types for the institution; when `descriptors` are included via the `include` param, `location_id` is required. Pass `provider_id` to only return appointment types offered by that provider. By default only appointment types managed in NexHealth are returned; pass `source=synced` for those synced from the EHR or `source=all` for both. `working_hour_ids` is only returned when included via `include` and is limited to the given `location_id`.

## Query parameters

- `subdomain` string, required
- `location_id` integer
- `source` 'manual' | 'synced' | 'all'
- `provider_id` integer
- `include[]` string[]

## Headers

- `Nex-Api-Version` string, required

## Response `200`

Successful

- APIV31EntitiesAppointmentTypeWithResourcesCollectionResponse: API_V31_Entities_AppointmentTypeWithResources_Collection_Response model
  - `code` boolean: Indicates the success or failure of the request
  - `description` string: Additional context on the request to help with debugging.
  - `error` string[]: Any errors that occur during the execution of the request.
  - `data` APIV31EntitiesAppointmentTypeWithResources[]
    - `id` integer: Appointment type ID
    - `name` string: Appointment type name. Unique string identifier
    - `parent_type` string: Parent type for appointment type. Defines the belongs to relationship with either Institution or Location
    - `parent_id` integer: Identifies the specific resource the appointment type belongs to (see parent_type)
    - `minutes` integer: Default duration of appointments of this appointment type
    - `bookable_online` boolean: True if this appointment type should be bookable via the NexHealth online booking page
    - `display_name` string, nullable: Patient-facing name shown instead of `name` when present
    - `source` 'manual' | 'synced': Where the appointment type is managed: `manual` in NexHealth, `synced` in the EHR
    - `active` boolean: False when the EHR has deactivated a synced appointment type
    - `foreign_id` string, nullable: Identifier NexHealth uses to uniquely match this record to its counterpart in the integrated EHR. How it is derived differs between EHRs and may change; treat it as an opaque string and do not parse it.
    - `data_source_id` integer, nullable: The NexHealth ID of the data source a synced appointment type came from, null for manual appointment types
    - `working_hour_ids` integer[]: The NexHealth IDs of the active working hours whose EHR restrictions allow this appointment type, limited to `location_id` when given; on the list endpoint only present with `include[]=working_hour_ids`
    - `descriptors` APIV31EntitiesEhrApptDescriptor[]: EHR descriptors
      - `id` integer: Descriptor ID
      - `descriptor_type` string: The type of descriptor
      - `name` string: The name of descriptor
      - `code` string: The code of descriptor
      - `location_id` integer: The location this object belongs to
      - `foreign_id` string: Identifier NexHealth uses to uniquely match this record to its counterpart in the integrated EHR. How it is derived differs between EHRs and may change; treat it as an opaque string and do not parse it.
      - `foreign_id_type` string: Unique identifier for the integrated system itself
      - `data` object: The configuration object, structure depends on the underlying EHR
      - `active` boolean: Is descriptor active?
      - `created_at` string, date-time: The datetime the descriptor was created in UTC
      - `updated_at` string, date-time: The datetime the descriptor was last updated in UTC
  - `count` integer: Number of total objects, in case of collection.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `500`: Internal Server Error

---

[API](https://skmtc.dev/nexhealth/apis/nexhealth-api-v3-1-0-beta.md) - [All operations](https://skmtc.dev/nexhealth/apis/nexhealth-api-v3-1-0-beta/llms.txt) - [OpenAPI document](https://skmtc.dev/nexhealth/apis/nexhealth-api-v3-1-0-beta/revisions/93cb4af790a5?raw)
