Luma Health Providers API

Luma Health providers

Operations 5

GET /providers Show a list of providers #
POST /providers Create a provider #
GET /providers/{providerId} Get provider by id #
PUT /providers/{providerId} Update a provider #
DELETE /providers/{providerId} Delete a provider #

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-providers-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-providers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.0.0
  title: Rest-Service Providers 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: providers
  description: Luma Health providers
paths:
  /providers:
    get:
      summary: Show a list of providers
      operationId: listProviders
      tags:
      - providers
      parameters:
      - name: searchByPartialName
        description: 'If this parameter is passed, we perform a search by name, limited by parameter ''limit''.

          '
        in: query
        schema:
          type: string
      - name: npiSearch
        description: 'If this parameter is passed, we perform a search by name on the NPI registry.

          All other parameters are ignored.

          '
        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: Returns a list of providers
          content:
            application/json:
              schema:
                type: object
                required:
                - response
                - page
                - size
                properties:
                  response:
                    type: array
                    minItems: 0
                    items:
                      $ref: '#/components/schemas/ProviderResponse'
                  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
        default:
          description: unexpected error - need to finalize the error codes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      summary: Create a provider
      operationId: providerCreate
      tags:
      - providers
      requestBody:
        description: Create a provider
        required: true
        content:
          application:json:
            schema:
              $ref: '#/components/schemas/ProviderRequestCreate'
      responses:
        '201':
          description: Successful creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResponse'
        '401':
          description: Not authenticated
        '403':
          description: Access token does not have the required scope
  /providers/{providerId}:
    get:
      summary: Get provider by id
      operationId: providerGet
      tags:
      - providers
      parameters:
      - name: providerId
        in: path
        required: true
        schema:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
      responses:
        '200':
          description: Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResponse'
        '401':
          description: Not authenticated
        '403':
          description: Access token does not have the required scope
    put:
      summary: Update a provider
      operationId: providerUpdate
      tags:
      - providers
      parameters:
      - name: providerId
        in: path
        required: true
        schema:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
      requestBody:
        description: A provider (full or partial) to be updated
        required: true
        content:
          application:json:
            schema:
              $ref: '#/components/schemas/ProviderRequestUpdate'
      responses:
        '200':
          description: Provider updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResponse'
        '401':
          description: Not authenticated
        '403':
          description: Access token does not have the required scope
    delete:
      summary: Delete a provider
      operationId: providerDelete
      tags:
      - providers
      parameters:
      - name: providerId
        in: path
        required: true
        schema:
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
      responses:
        '200':
          description: Deleted provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResponse'
        '401':
          description: Not authenticated
        '403':
          description: Access token does not have the required scope
components:
  schemas:
    ProviderRequestUpdate:
      type: object
      properties:
        name:
          description: name
          type: string
        normalizedName:
          description: normalizedName
          type: string
        firstname:
          description: firstname
          type: string
        lastname:
          description: lastname
          type: string
        middlename:
          description: middlename
          type: string
        displayPhone:
          description: displayPhone
          type: string
        displayStatus:
          description: displayStatus
          type: string
          default: pending
          enum:
          - active
          - pending
          - suspended
        email:
          description: email
          type: string
        safeId:
          description: safeId
          type: string
        type:
          description: type
          type: string
          enum:
          - doctor
          - staff
          - guest
          - patient
        roles:
          description: roles
          type: array
          items:
            type: string
        rolesByUser:
          $ref: '#/components/schemas/RolesByUser'
        organization:
          description: ID of Organization
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        contact:
          description: contact
          type: array
          items:
            type: object
            properties:
              type:
                description: type
                type: string
                default: email
                enum:
                - inapp
                - sms
                - voice
                - email
                - fax
                - whatsapp
              value:
                description: value
                type: string
              active:
                description: active
                type: boolean
              archived:
                description: archived
                type: boolean
              archivedReason:
                description: archivedReason
                type: string
                default: none
                enum:
                - none
                - unreachable
                - do-not-contact
              archivedMessage:
                description: ID of Message
                type: string
                pattern: '[0-9a-f]'
                minLength: 24
                maxLength: 24
        doNotContact:
          description: doNotContact
          type: boolean
        doNotContactMessage:
          description: ID of Message
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        groups:
          description: groups
          type: array
          items:
            type: string
            pattern: '[0-9a-f]'
            minLength: 24
            maxLength: 24
        stripeCustomerId:
          description: stripeCustomerId
          type: string
        stripeSubscriptionId:
          description: stripeSubscriptionId
          type: string
        salesforceId:
          description: salesforceId
          type: string
        lastLogin:
          description: lastLogin
          type: string
          format: date-time
        active:
          description: active
          type: number
        master:
          description: master
          type: boolean
        language:
          description: language
          type: string
          default: en
        address:
          description: address
          type: string
        city:
          description: city
          type: string
        state:
          description: state
          type: string
        country:
          description: country
          type: string
          default: US
        postcode:
          description: postcode
          type: string
        gender:
          description: gender
          type: string
          default: unknown
          enum:
          - male
          - female
          - unknown
          - nonbinary
        allowedIps:
          description: allowedIps
          type: array
          items:
            type: string
        avatar:
          description: ID of FileUpload
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        publicKey:
          description: publicKey
          type: string
        directMessagingEmail:
          description: directMessagingEmail
          type: string
        demoConfiguration:
          type: object
          properties:
            type:
              type: string
              enum:
              - default
        website:
          description: website
          type: string
        deptCode:
          description: deptCode
          type: string
        phonetic:
          description: phonetic
          type: string
        alternativeName:
          description: alternativeName
          type: string
        schedulable:
          description: schedulable
          type: boolean
          default: true
        isReferringProvider:
          description: isReferringProvider
          type: boolean
        isRenderingProvider:
          description: isRenderingProvider
          type: boolean
        visible:
          description: visible
          type: boolean
          default: true
        npi:
          description: npi
          type: number
        source:
          description: source
          type: string
          default: integrator
          enum:
          - upload
          - patient-referral-form
          - ui
          - integrator
        biography:
          description: biography
          type: string
        biographyUrl:
          description: biographyUrl
          type: string
        headshot:
          description: ID of FileUpload
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        billingType:
          description: billingType
          type: string
          default: unknown
          enum:
          - resource
          - part-time
          - full-time
          - non-billed
          - duplicate
          - no-longer-employed
          - unknown
        mergedInto:
          description: ID of Provider
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        telehealthVendors:
          description: telehealthVendors
          type: object
          properties:
            zoom:
              type: object
              properties:
                id:
                  type: string
                status:
                  type: string
                  enum:
                  - active
                  - inactive
                  - pending
        specialInstructions:
          description: specialInstructions
          type: string
        salesforceData:
          $ref: '#/components/schemas/SalesforceData'
        externalId:
          $ref: '#/components/schemas/ExternalId'
        secondaryExternalId:
          $ref: '#/components/schemas/ExternalId'
        dateOfBirth:
          type: object
          properties:
            year:
              description: dateOfBirth.year
              type: number
            month:
              description: dateOfBirth.month
              type: number
            day:
              description: dateOfBirth.day
              type: number
        twoFactorAuthSecret:
          type: object
          properties:
            enabled:
              description: twoFactorAuthSecret.enabled
              type: boolean
        stats:
          type: object
          properties:
            oldestAppointment:
              description: stats.oldestAppointment
              type: string
              format: date-time
    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.
    ProviderRequestCreate:
      type: object
      required:
      - name
      - email
      - type
      - doNotContact
      - active
      - country
      - gender
      - visible
      properties:
        name:
          description: name
          type: string
        normalizedName:
          description: normalizedName
          type: string
        firstname:
          description: firstname
          type: string
        lastname:
          description: lastname
          type: string
        middlename:
          description: middlename
          type: string
        displayPhone:
          description: displayPhone
          type: string
        displayStatus:
          description: displayStatus
          type: string
          default: pending
          enum:
          - active
          - pending
          - suspended
        email:
          description: email
          type: string
        safeId:
          description: safeId
          type: string
        type:
          description: type
          type: string
          enum:
          - doctor
          - staff
          - guest
          - patient
        roles:
          description: roles
          type: array
          items:
            type: string
        rolesByUser:
          $ref: '#/components/schemas/RolesByUser'
        organization:
          description: ID of Organization
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        contact:
          description: contact
          type: array
          items:
            type: object
            properties:
              type:
                description: type
                type: string
                default: email
                enum:
                - inapp
                - sms
                - voice
                - email
                - fax
                - whatsapp
              value:
                description: value
                type: string
              active:
                description: active
                type: boolean
              archived:
                description: archived
                type: boolean
              archivedReason:
                description: archivedReason
                type: string
                default: none
                enum:
                - none
                - unreachable
                - do-not-contact
              archivedMessage:
                description: ID of Message
                type: string
                pattern: '[0-9a-f]'
                minLength: 24
                maxLength: 24
        doNotContact:
          description: doNotContact
          type: boolean
        doNotContactMessage:
          description: ID of Message
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        groups:
          description: groups
          type: array
          items:
            type: string
            pattern: '[0-9a-f]'
            minLength: 24
            maxLength: 24
        stripeCustomerId:
          description: stripeCustomerId
          type: string
        stripeSubscriptionId:
          description: stripeSubscriptionId
          type: string
        salesforceId:
          description: salesforceId
          type: string
        lastLogin:
          description: lastLogin
          type: string
          format: date-time
        active:
          description: active
          type: number
        master:
          description: master
          type: boolean
        language:
          description: language
          type: string
          default: en
        address:
          description: address
          type: string
        city:
          description: city
          type: string
        state:
          description: state
          type: string
        country:
          description: country
          type: string
          default: US
        postcode:
          description: postcode
          type: string
        gender:
          description: gender
          type: string
          default: unknown
          enum:
          - male
          - female
          - unknown
          - nonbinary
        allowedIps:
          description: allowedIps
          type: array
          items:
            type: string
        avatar:
          description: ID of FileUpload
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        publicKey:
          description: publicKey
          type: string
        directMessagingEmail:
          description: directMessagingEmail
          type: string
        demoConfiguration:
          type: object
          properties:
            type:
              type: string
              enum:
              - default
        website:
          description: website
          type: string
        deptCode:
          description: deptCode
          type: string
        phonetic:
          description: phonetic
          type: string
        alternativeName:
          description: alternativeName
          type: string
        schedulable:
          description: schedulable
          type: boolean
          default: true
        isReferringProvider:
          description: isReferringProvider
          type: boolean
        isRenderingProvider:
          description: isRenderingProvider
          type: boolean
        visible:
          description: visible
          type: boolean
          default: true
        npi:
          description: npi
          type: number
        source:
          description: source
          type: string
          default: integrator
          enum:
          - upload
          - patient-referral-form
          - ui
          - integrator
        biography:
          description: biography
          type: string
        biographyUrl:
          description: biographyUrl
          type: string
        headshot:
          description: ID of FileUpload
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        billingType:
          description: billingType
          type: string
          default: unknown
          enum:
          - resource
          - part-time
          - full-time
          - non-billed
          - duplicate
          - no-longer-employed
          - unknown
        mergedInto:
          description: ID of Provider
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        telehealthVendors:
          description: telehealthVendors
          type: object
          properties:
            zoom:
              type: object
              properties:
                id:
                  type: string
                status:
                  type: string
                  enum:
                  - active
                  - inactive
                  - pending
        specialInstructions:
          description: specialInstructions
          type: string
        salesforceData:
          $ref: '#/components/schemas/SalesforceData'
        externalId:
          $ref: '#/components/schemas/ExternalId'
        secondaryExternalId:
          $ref: '#/components/schemas/ExternalId'
        dateOfBirth:
          type: object
          properties:
            year:
              description: dateOfBirth.year
              type: number
            month:
              description: dateOfBirth.month
              type: number
            day:
              description: dateOfBirth.day
              type: number
        twoFactorAuthSecret:
          type: object
          properties:
            enabled:
              description: twoFactorAuthSecret.enabled
              type: boolean
        stats:
          type: object
          properties:
            oldestAppointment:
              description: stats.oldestAppointment
              type: string
              format: date-time
    Error:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
    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.
    RolesByUser:
      type: object
      description: Object containing 2 keys, referringProvider and renderingProvider. The value for each key is an array. The content of the array should be the root account ids under the same organization, where this user has the role with the same name of the key.
      required: []
      properties:
        referringProvider:
          type: array
          description: List of root account IDs under an organization where the user has the role referringProvider
          items:
            type: string
            pattern: '[0-9a-f]'
            minLength: 24
            maxLength: 24
        renderingProvider:
          type: array
          description: List of root account IDs under an organization where the user has the role renderingProvider
          items:
            type: string
            pattern: '[0-9a-f]'
            minLength: 24
            maxLength: 24
    SalesforceData:
      type: object
      description: Salesforce internal meta data for this account.
      required:
      - respectProvisioning
      properties:
        customerSuccessManager:
          type: object
          properties:
            name:
              type: string
            email:
              type: string
            phone:
              type: string
        provisioning:
          type: array
          items:
            type: string
            enum:
            - reminder
            - waitlist
            - feedback
            - followup
            - referral
            - outbound-referral
            - chat
            - scheduler
            - recall
            - insurance
            - broadcast
            - form
            - intake-form
            - prequal-form
            - branding
            - upload
            - telehealth
            - waiting-room
            - luma-pay
            - insurance-verification
        respectProvisioning:
          type: boolean
          default: true
        lifeline:
          type: string
          enum:
          - trial
          - converted
          - active
          - churn
        mrr:
          type: number
        arr:
          type: number
        renewalDate:
          type: string
          format: date-time
        providers:
          type: number
        specialty:
          type: string
        referralTrialLimit:
          type: number
        recordType:
          type: string
        domesticAccessRequired:
          type: boolean
        goLiveAt:
          type: string
          format: date-time
        fullyImplementedAt:
          type: string
          format: date-time
        contractSignedAt:
          type: string
          format: date-time
        contractLength:
          type: number
        healthStatus:
          type: string
          default: green
          enum:
          - green
          - yellow
          - red
          - poor fit
          - Healthy
          - Neutral
          - Churn Risk
          - Advocate
        boardSegment:
          type: string
          default: Unknown
          enum:
          - Reseller
          - Strategic
          - Majors
          - Core
          - Sub 20
          - Unknown
        onboardingState:
          type: string
          default: Customer Success Introduction
          enum:
          - Customer Success Introduction
          - Kickoff
          - Integration
          - Discovery Call
          - Customization
          - Testing
          - Staff Training
          - Ready To Launch
          - Go-Live
          - Fully Implemented
        accountLifeline:
          type: string
          default: Active
          enum:
          - Unassigned
          - Assigned
          - Sales Accepted
          - Working
          - Sales Qualified
          - Open Opportunity
          - Nurture
          - Disqualified
          - Trial
          - Converted
          - Active
          - Churned
          - Partnered
          - Trial Ended (No Conversion)
    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.
    ProviderResponse:
      type: object
      description: A Provider represents a doctor, clinician, or other care team member (including referring or rendering providers) within a Luma Health customer's practice. It tracks scheduling eligibility, appointment type durations, billing classification, and contact details used across scheduling, referrals, and patient communications.
      required:
      - _id
      - 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:
          description: name
          type: string
        normalizedName:
          description: normalizedName
          type: string
        firstname:
          description: firstname
          type: string
        lastname:
          description: lastname
          type: string
        middlename:
          description: middlename
          type: string
        displayPhone:
          description: displayPhone
          type: string
        displayStatus:
          description: displayStatus
          type: string
          default: pending
          enum:
          - active
          - pending
          - suspended
        email:
          description: email
          type: string
        safeId:
          description: safeId
          type: string
        type:
          description: type
          type: string
          enum:
          - doctor
          - staff
          - patient
          - guest
        roles:
          description: roles
          type: array
          items:
            type: string
        rolesByUser:
          $ref: '#/components/schemas/RolesByUser'
        organization:
          description: ID of Organization
          type: string
          pattern: '[0-9a-f]'
          minLength: 24
          maxLength: 24
        contact:
          description: contact
          type: array
          items:
            type: object
            properties:
              type:
                description: type
                type: string
                default: email
                enum:
                - inapp
                - sms
                - voice
                - email
                - fax
                - whatsapp
              value:
                description: value
                type: string
              active:
                description: active
                type: boolean
              archived:
                description: archived
                type: boolean
              archivedReason:
                description: archivedReason
                type: string
                defaul

# --- truncated at 32 KB (122 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/luma-health/refs/heads/main/openapi/luma-health-providers-api-openapi.yml