Luma Health Appointment Types API

EHR appointment types

Operations 5

GET /appointmentTypes/{appointmentTypeId} Get an appointment type by id #
PUT /appointmentTypes/{appointmentTypeId} Update an appointment type #
DELETE /appointmentTypes/{appointmentTypeId} Delete an appointment type #
GET /appointmentTypes List appointment types #
POST /appointmentTypes Create appointment type #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/luma-health-appointmenttypes-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

luma-health-appointmenttypes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.0.0
  title: Rest-Service Appointment Types API
  x-logo:
    url: https://lumahealth-assets.s3.us-west-2.amazonaws.com/new_luma_logo_black.png
    backgroundColor: '#FFFFFF'
    altText: Luma Health
  description: OpenAPI [Basic Structure](https://swagger.io/docs/specification/basic-structure/)
servers:
- url: https://api.lumahealth.io/api/v2
security:
- Bearer: []
tags:
- name: appointmentTypes
  description: EHR appointment types
paths:
  /appointmentTypes/{appointmentTypeId}:
    get:
      summary: Get an appointment type by id
      operationId: appointmentTypeGet
      tags:
      - appointmentTypes
      parameters:
      - name: appointmentTypeId
        in: path
        required: true
        schema:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
      responses:
        '200':
          description: Type of Appointment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppointmentTypeResponse'
        '401':
          description: Not authenticated
        '403':
          description: Access token does not have the required scope
    put:
      summary: Update an appointment type
      operationId: appointmentTypeUpdate
      tags:
      - appointmentTypes
      parameters:
      - name: appointmentTypeId
        in: path
        required: true
        schema:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
      requestBody:
        description: An appointment type (full or partial) to be updated
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppointmentTypeRequestUpdate'
      responses:
        '200':
          description: Appointment Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppointmentTypeResponse'
        '401':
          description: Not authenticated
        '403':
          description: Access token does not have the required scope
    delete:
      summary: Delete an appointment type
      operationId: appointmentTypeDelete
      tags:
      - appointmentTypes
      parameters:
      - name: appointmentTypeId
        in: path
        required: true
        schema:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
      responses:
        '200':
          description: Deleted appointment type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppointmentTypeResponse'
        '401':
          description: Not authenticated
        '403':
          description: Access token does not have the required scope
  /appointmentTypes:
    get:
      summary: List appointment types
      operationId: appointmentTypesList
      tags:
      - appointmentTypes
      parameters:
      - name: _id
        in: query
        schema:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
      - name: visible
        in: query
        schema:
          type: boolean
      - name: modality
        in: query
        schema:
          type: string
          enum:
          - office-visit
          - telehealth
      - name: name
        in: query
        schema:
          type: string
      - name: description
        in: query
        schema:
          type: string
      - name: settings
        description: Path string for resources. Formatted as 'settings.{{resource}}.enabled'
        in: query
        schema:
          type: string
      - $ref: '#/components/parameters/userParam'
      - $ref: '#/components/parameters/deletedParam'
      - $ref: '#/components/parameters/createdByParam'
      - $ref: '#/components/parameters/updatedByParam'
      - $ref: '#/components/parameters/createdAtParam'
      - $ref: '#/components/parameters/updatedAtParam'
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/limitParam'
      - $ref: '#/components/parameters/populateParam'
      - $ref: '#/components/parameters/selectParam'
      responses:
        '200':
          description: List of appointment types
          content:
            application/json:
              schema:
                type: object
                required:
                - response
                - page
                - size
                properties:
                  response:
                    type: array
                    minItems: 0
                    items:
                      $ref: '#/components/schemas/AppointmentTypeResponse'
                  page:
                    type: integer
                    format: int32
                    minimum: 1
                  size:
                    type: integer
                    format: int32
                    minimum: 0
                additionalProperties: false
        '401':
          description: Not authenticated
        '403':
          description: Access token does not have the required scope
    post:
      summary: Create appointment type
      operationId: appointmentTypeCreate
      tags:
      - appointmentTypes
      requestBody:
        description: Create an appointment type
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppointmentTypeRequestCreate'
      responses:
        '201':
          description: Successful creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppointmentTypeResponse'
        '401':
          description: Not authenticated
        '403':
          description: Access token does not have the required scope
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  parameters:
    pageParam:
      in: query
      name: page
      required: false
      type: integer
      format: int32
      default: 1
      minimum: 1
      schema:
        type: integer
        format: int32
        default: 1
        minimum: 1
    createdAtParam:
      in: query
      name: createdAt
      type: string
      format: date-time
      schema:
        type: string
        format: date-time
      required: false
      description: The date/time when this object was created.
    updatedAtParam:
      in: query
      name: updatedAt
      type: string
      format: date-time
      schema:
        type: string
        format: date-time
      required: false
      description: The date/time when this object was updated.
    updatedByParam:
      in: query
      name: updatedBy
      required: false
      type: string
      pattern: '[0-9a-f]'
      minLength: 24
      maxLength: 24
      schema:
        type: string
        pattern: '[0-9a-f]'
        minLength: 24
        maxLength: 24
      description: The ID of the user who updated this object.
    createdByParam:
      in: query
      name: createdBy
      type: string
      pattern: '[0-9a-f]'
      minLength: 24
      maxLength: 24
      schema:
        type: string
        pattern: '[0-9a-f]'
        minLength: 24
        maxLength: 24
      required: false
      description: The ID of the user who created this object.
    populateParam:
      name: _populate
      in: query
      description: Response properties which will be replaced by the referenced objects, separated by commas.
      required: false
      type: string
      schema:
        type: string
    selectParam:
      name: _select
      in: query
      description: Response properties that should be returned, separated by commas.
      required: false
      type: string
      schema:
        type: string
    deletedParam:
      in: query
      name: deleted
      required: false
      type: number
      enum:
      - 0
      - 1
      schema:
        type: number
        enum:
        - 0
        - 1
      description: Flag for logical deletion where 1 means deleted.
    limitParam:
      name: limit
      in: query
      description: How many items to fetch per page
      required: false
      type: integer
      format: int32
      default: 500
      minimum: 1
      maximum: 1000
      schema:
        type: integer
        format: int32
        default: 500
        minimum: 1
        maximum: 1000
    userParam:
      in: query
      name: user
      required: false
      type: string
      pattern: '[0-9a-f]'
      minLength: 24
      maxLength: 24
      schema:
        type: string
        pattern: '[0-9a-f]'
        minLength: 24
        maxLength: 24
      description: The ID of the root account user.
  schemas:
    userParam:
      in: query
      name: user
      required: false
      type: string
      pattern: '[0-9a-f]'
      minLength: 24
      maxLength: 24
      schema:
        type: string
        pattern: '[0-9a-f]'
        minLength: 24
        maxLength: 24
      description: The ID of the root account user.
    Error:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
    AppointmentTypeResponse:
      type: object
      description: An Appointment Type defines a category of visit that a provider or facility offers, such as a routine office visit or a telehealth consult, along with its default duration, visibility, and optional patient intake forms (checklist). It can also declare dependent appointment types and matching rules used to determine facility or availability logic when a related follow-up appointment needs to be scheduled.
      properties:
        _id:
          $ref: '#/components/schemas/idParam'
        user:
          $ref: '#/components/schemas/userParam'
        deleted:
          $ref: '#/components/schemas/deletedParam'
        createdBy:
          $ref: '#/components/schemas/createdByParam'
        updatedBy:
          $ref: '#/components/schemas/updatedByParam'
        createdAt:
          $ref: '#/components/schemas/createdAtParam'
        updatedAt:
          $ref: '#/components/schemas/updatedAtParam'
        name:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        alternativeName:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        description:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        duration:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        externalId:
          $ref: '#/components/schemas/ExternalId'
        visible:
          type: integer
          format: int32
          default: 15
        dependents:
          type: array
          items:
            type: object
            properties:
              appointmentType:
                type: string
                pattern: '[0-9a-f]'
                minLength: 24
                maxLength: 24
              rules:
                type: object
                properties:
                  findAvailabilityAfter:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                        default: true
                      maxMinutes:
                        type: number
                        default: 30
                      minMinutes:
                        type: number
                  facilityMatch:
                    type: object
                    properties:
                      criteria:
                        type: string
                        enum:
                        - _id
                        - postcode
    idParam:
      in: query
      name: _id
      type: string
      pattern: '[0-9a-f]'
      minLength: 24
      maxLength: 24
      required: false
      schema:
        type: string
        pattern: '[0-9a-f]'
        minLength: 24
        maxLength: 24
      description: Luma's internal ID of an object.
    updatedAtParam:
      in: query
      name: updatedAt
      type: string
      format: date-time
      schema:
        type: string
        format: date-time
      required: false
      description: The date/time when this object was updated.
    createdAtParam:
      in: query
      name: createdAt
      type: string
      format: date-time
      schema:
        type: string
        format: date-time
      required: false
      description: The date/time when this object was created.
    updatedByParam:
      in: query
      name: updatedBy
      required: false
      type: string
      pattern: '[0-9a-f]'
      minLength: 24
      maxLength: 24
      schema:
        type: string
        pattern: '[0-9a-f]'
        minLength: 24
        maxLength: 24
      description: The ID of the user who updated this object.
    AppointmentTypeRequestUpdate:
      type: object
      properties:
        _id:
          $ref: '#/components/schemas/idParam'
        user:
          $ref: '#/components/schemas/userParam'
        deleted:
          $ref: '#/components/schemas/deletedParam'
        createdBy:
          $ref: '#/components/schemas/createdByParam'
        updatedBy:
          $ref: '#/components/schemas/updatedByParam'
        createdAt:
          $ref: '#/components/schemas/createdAtParam'
        updatedAt:
          $ref: '#/components/schemas/updatedAtParam'
        name:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        alternativeName:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        description:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        duration:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        externalId:
          $ref: '#/components/schemas/ExternalId'
        visible:
          type: integer
          format: int32
          default: 15
        dependents:
          type: array
          items:
            type: object
            properties:
              appointmentType:
                type: string
                pattern: '[0-9a-f]'
                minLength: 24
                maxLength: 24
              rules:
                type: object
                properties:
                  findAvailabilityAfter:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                        default: true
                      maxMinutes:
                        type: number
                        default: 30
                      minMinutes:
                        type: number
                  facilityMatch:
                    type: object
                    properties:
                      criteria:
                        type: string
                        enum:
                        - _id
                        - postcode
    AppointmentTypeRequestCreate:
      type: object
      required:
      - name
      properties:
        _id:
          $ref: '#/components/schemas/idParam'
        user:
          $ref: '#/components/schemas/userParam'
        deleted:
          $ref: '#/components/schemas/deletedParam'
        createdBy:
          $ref: '#/components/schemas/createdByParam'
        updatedBy:
          $ref: '#/components/schemas/updatedByParam'
        createdAt:
          $ref: '#/components/schemas/createdAtParam'
        updatedAt:
          $ref: '#/components/schemas/updatedAtParam'
        name:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        alternativeName:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        description:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        duration:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        externalId:
          $ref: '#/components/schemas/ExternalId'
        visible:
          type: integer
          format: int32
          default: 15
        dependents:
          type: array
          items:
            type: object
            properties:
              appointmentType:
                type: string
                pattern: '[0-9a-f]'
                minLength: 24
                maxLength: 24
              rules:
                type: object
                properties:
                  findAvailabilityAfter:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                        default: true
                      maxMinutes:
                        type: number
                        default: 30
                      minMinutes:
                        type: number
                  facilityMatch:
                    type: object
                    properties:
                      criteria:
                        type: string
                        enum:
                        - _id
                        - postcode
    ExternalId:
      type: object
      properties:
        source:
          description: externalId.source
          type: string
          enum:
          - gcalendar
          - successehs
          - drchrono
          - dentrix
          - webpt
          - theraoffice
          - mi7
          - practicefusion
          - advancedmd
          - acomrapidpm
          - kareo
          - nextech
          - mwtherapy
          - clinicient
          - carecloud
          - eclinicalmobile
          - duxware
          - labretriever
          - optimispt
          - referral
          - recall
          - allscriptspm
          - lytec
          - brightree
          - fullslate
          - nuemd
          - centricityps
          - officeally
          - greenwayintergy
          - compulink
          - adspm
          - dsnpm
          - lumamock
          - medicalmastermind
          - meditouch
          - healthnautica
          - ezemrx
          - hl7
          - amazingcharts
          - greenwayprimesuite
          - raintree
          - athenahealth
          - revflow
          - eclinicalworks10e
          - hl7pickup
          - mindbody
          - eclinicalworkssql
          - nextgen
          - practiceperfect
          - avimark
          - clinix
          - keymedical
          - mdoffice
          - webedoctor
          - emapm
          - medinformatix
          - imsgo
          - emds
          - allscriptsunity
          - medevolve
          - caretracker
          - clearpractice
          - valant
          - micromd
          - systemedx
          - medicalmaster
          - athenamdp
          - gmed
          - roche
          - onetouch
          - somnoware
          - managementplus
          - lumacare
          - nextechfhir
          - curemd
          - epic
          - phoenixortho
          - ezderm
          - ggastromobile
          - epicconfirmationpickup
          - cerner
          - allmeds
          - oncoemrfilepickup
          - imedicware
          - modmedfhir
          - clinux
          - acuityscheduling
          - medstreaming
          - isalus
          - meditechexpanse
          - openemr
          - genericfhir
          - nextechpracticeplus
          - sms
          - voice
          - email
          - none
        value:
          description: externalId.value
          type: string
    deletedParam:
      in: query
      name: deleted
      required: false
      type: number
      enum:
      - 0
      - 1
      schema:
        type: number
        enum:
        - 0
        - 1
      description: Flag for logical deletion where 1 means deleted.
    createdByParam:
      in: query
      name: createdBy
      type: string
      pattern: '[0-9a-f]'
      minLength: 24
      maxLength: 24
      schema:
        type: string
        pattern: '[0-9a-f]'
        minLength: 24
        maxLength: 24
      required: false
      description: The ID of the user who created this object.
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT