---
title: "List providers associated with a specialty"
method: GET
path: "/specialties/{specialtyId}/providers"
tags: ["specialties"]
---

# List providers associated with a specialty

`GET /specialties/{specialtyId}/providers`

## Request

- Base URL: `https://api.lumahealth.io/api/v2`
- URL: `https://api.lumahealth.io/api/v2/specialties/{specialtyId}/providers`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/lumahealth/apis/rest-service/docs/specialties/:specialtyId/providers/get.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

- `page` integer
- `limit` integer

## Response `200`

List of providers

- object
  - `response` ProviderResponse[], required
    - `_id` string, required: Luma's internal ID of an object.
    - `user` string: The ID of the root account user.
    - `deleted` 0 | 1: Flag for logical deletion where 1 means deleted.
    - `createdBy` string: The ID of the user who created this object.
    - `updatedBy` string: The ID of the user who updated this object.
    - `createdAt` string, date-time: The date/time when this object was created.
    - `updatedAt` string, date-time: The date/time when this object was updated.
    - `name` string, required: name
    - `normalizedName` string: normalizedName
    - `firstname` string: firstname
    - `lastname` string: lastname
    - `middlename` string: middlename
    - `displayPhone` string: displayPhone
    - `displayStatus` 'active' | 'pending' | 'suspended': displayStatus
    - `email` string: email
    - `safeId` string: safeId
    - `type` 'doctor' | 'staff' | 'patient' | 'guest': type
    - `roles` string[]: roles
    - `rolesByUser` RolesByUser: 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.
      - `referringProvider` string[]: List of root account IDs under an organization where the user has the role referringProvider
      - `renderingProvider` string[]: List of root account IDs under an organization where the user has the role renderingProvider
    - `organization` string: ID of Organization
    - `contact` object[]: contact
      - `type` 'inapp' | 'sms' | 'voice' | 'email' | 'fax' | 'whatsapp': type
      - `value` string: value
      - `active` boolean: active
      - `archived` boolean: archived
      - `archivedReason` 'none' | 'unreachable' | 'do-not-contact': archivedReason
      - `archivedMessage` string: ID of Message
    - `doNotContact` boolean: doNotContact
    - `doNotContactMessage` string: ID of Message
    - `groups` string[]: groups
    - `stripeCustomerId` string: stripeCustomerId
    - `stripeSubscriptionId` string: stripeSubscriptionId
    - `salesforceId` string: salesforceId
    - `lastLogin` string, date-time: lastLogin
    - `active` number: active
    - `master` boolean: master
    - `language` string: language
    - `setting` string: ID of Setting
    - `settings` SettingProperty
      - `session` object
        - `logoutTimeout` number: settings.session.logoutTimeout
      - `welcome` object
        - `currentStep` number: settings.welcome.currentStep
        - `termsAgreementDate` string, date-time: settings.welcome.termsAgreementDate
      - `telehealth` object
        - `enabled` boolean: settings.telehealth.enabled
        - `sessionReminderMinutes` number: settings.telehealth.sessionReminderMinutes
        - `sessionFinalReminderMinutes` number: settings.telehealth.sessionFinalReminderMinutes
        - `maximumNoShowMinutes` number: settings.telehealth.maximumNoShowMinutes
        - `vendor` 'twilio' | 'zoom': settings.telehealth.vendor
        - `vendors` object
          - `zoom` object
            - `apiKey` string: settings.telehealth.vendors.zoom.apiKey
            - `apiSecret` string: settings.telehealth.vendors.zoom.apiSecret
            - `type` 'free' | 'pro' | 'business': settings.telehealth.vendors.zoom.type
        - `showTimer` boolean: settings.telehealth.showTimer
        - `requireProviderLogin` boolean: settings.telehealth.requireProviderLogin
        - `telehealthGroup` object
          - `createDefaultGroup` object
            - `enabled` boolean: settings.telehealth.telehealthGroup.createDefaultGroup.enabled
          - `addProviderToDefaultGroup` object
            - `enabled` boolean: settings.telehealth.telehealthGroup.addProviderToDefaultGroup.enabled
      - `labs` object
        - `enabled` boolean: settings.labs.enabled
      - `lumabot` object
        - `enabled` boolean: settings.lumabot.enabled
        - `includePoweredByLuma` boolean: settings.lumabot.includePoweredByLuma
        - `placement` string: settings.lumabot.placement
        - `name` string: settings.lumabot.name
        - `header` string: settings.lumabot.header
        - `prompt` string: settings.lumabot.prompt
        - `avatar` string: ID of FileUpload
        - `agentic` object
          - `enabled` boolean: settings.lumabot.agentic.enabled
        - `theme` object
          - `palette` object
            - `primary` object
              - …
            - `secondary` object
              - …
            - `tertiary` object
              - …
            - `background` object
              - …
      - `communication` object
        - `defaultChatVisibility` 'public' | 'internal': settings.communication.defaultChatVisibility
        - `defaultChatCommunicationSecurity` object
          - `level` 'secure' | 'insecure': settings.communication.defaultChatCommunicationSecurity.level
          - `acknowledgedBy` string: ID of User
          - `acknowledgedAt` string, date-time: settings.communication.defaultChatCommunicationSecurity.acknowledgedAt
        - `useFacilityPhoneAsFromNumber` boolean: settings.communication.useFacilityPhoneAsFromNumber
        - `useFacilityAlternativePhoneAsFromNumber` boolean: settings.communication.useFacilityAlternativePhoneAsFromNumber
        - `useFacilityNumberFallback` object
          - `enabled` boolean: settings.communication.useFacilityNumberFallback.enabled
          - `phone` string: settings.communication.useFacilityNumberFallback.phone
        - `unsubscribedMessages` unknown[]: settings.communication.unsubscribedMessages
          - unknown
        - `blockedContacts` unknown[]: settings.communication.blockedContacts
          - unknown
        - `limitedContacts` unknown[]: settings.communication.limitedContacts
          - unknown
        - `expirePatientData` object
          - `enabled` boolean: settings.communication.expirePatientData.enabled
          - `maxAgeInDays` number: settings.communication.expirePatientData.maxAgeInDays
        - `urlReplacers` object[]: settings.communication.urlReplacers
          - `find` string: find
          - `replace` string: replace
          - `_id` string: _id
        - `disableAutomaticLinkShortening` boolean: settings.communication.disableAutomaticLinkShortening
        - `filterPatientMessageHistory` unknown[]: settings.communication.filterPatientMessageHistory
          - unknown
        - `staffDisabledChannels` string[]: settings.communication.staffDisabledChannels
        - `reopenChatsForUnclassifiedReplies` boolean: settings.communication.reopenChatsForUnclassifiedReplies
        - `minLengthToReopenChat` number: settings.communication.minLengthToReopenChat
        - `minLengthToReopenChatPerTemplate` unknown
        - `reopenChatsWithStatusUnassigned` boolean: settings.communication.reopenChatsWithStatusUnassigned
        - `sendAfterHoursMessageForInboundChats` boolean: settings.communication.sendAfterHoursMessageForInboundChats
        - `broadcastSkipPatientLookup` boolean: settings.communication.broadcastSkipPatientLookup
        - `officeHoursPerDay` object[]: settings.communication.officeHoursPerDay
          - `weekDay` number: weekDay
          - `beginAt` number: beginAt
          - `endAt` number: endAt
          - `_id` string: _id
        - `customHolidays` object: settings.communication.customHolidays
          - `dates` object[]: settings.communication.customHolidays.dates
            - `date` string, date-time: date
            - `description` string: description
            - `closed` boolean: closed
            - `sendAppointmentReminders` 'before' | 'as-scheduled': sendAppointmentReminders
            - `sendReferralReminders` 'after' | 'as-scheduled': sendReferralReminders
            - `_id` string: _id
        - `officeHours` object
          - `beginAt` number: settings.communication.officeHours.beginAt
          - `endAt` number: settings.communication.officeHours.endAt
        - `numberMasking` object
          - `enabled` boolean: settings.communication.numberMasking.enabled
        - `emailMasking` object
          - `enabled` boolean: settings.communication.emailMasking.enabled
          - `fromName` string: settings.communication.emailMasking.fromName
          - `fromEmail` string: settings.communication.emailMasking.fromEmail
        - `contactVerification` object
          - `enabled` boolean: settings.communication.contactVerification.enabled
        - `patientInitiatedTexting` object
          - `enabled` boolean: settings.communication.patientInitiatedTexting.enabled
          - `lookupCallerId` boolean: settings.communication.patientInitiatedTexting.lookupCallerId
          - `useRandomNumbersAsGeneratedName` boolean: settings.communication.patientInitiatedTexting.useRandomNumbersAsGeneratedName
        - `searchByToAndFrom` boolean: settings.communication.searchByToAndFrom
        - `systemMessagesExpiration` object
          - `enabled` boolean: settings.communication.systemMessagesExpiration.enabled
          - `value` number: settings.communication.systemMessagesExpiration.value
          - `unit` 'years' | 'months' | 'weeks' | 'days' | 'hours': settings.communication.systemMessagesExpiration.unit
        - `inboundMessageReplies` object
          - `length` number: settings.communication.inboundMessageReplies.length
          - `keys` unknown[]: settings.communication.inboundMessageReplies.keys
            - unknown
        - `outboundMessages` object
          - `allowRetries` boolean: settings.communication.outboundMessages.allowRetries
          - `skipSmsToLandline` boolean: settings.communication.outboundMessages.skipSmsToLandline
          - `allowSmsOverLongCode` object
            - `enabled` boolean: settings.communication.outboundMessages.allowSmsOverLongCode.enabled
          - `multiChannelRetries` object
            - `enabled` boolean: settings.communication.outboundMessages.multiChannelRetries.enabled
            - `shouldSmsNumberBeRetriedAsVoice` object
              - …
            - `channels` string[]: settings.communication.outboundMessages.multiChannelRetries.channels
            - `failuresToIgnoreByChannel` string[]: settings.communication.outboundMessages.multiChannelRetries.failuresToIgnoreByChannel
            - `refs` unknown[]: settings.communication.outboundMessages.multiChannelRetries.refs
              - …
            - `number` number: settings.communication.outboundMessages.multiChannelRetries.number
        - `filterChatsByGroupsFacilities` boolean: settings.communication.filterChatsByGroupsFacilities
        - `suppressMessagesByProvisioning` boolean: settings.communication.suppressMessagesByProvisioning
        - `sortMessagesBy` 'unreadMessages' | 'priorityUpdatedAt': settings.communication.sortMessagesBy
        - `chatAssignmentOnHubSend` 'reassign' | 'keepAssignee': settings.communication.chatAssignmentOnHubSend
        - `chatAssignmentOnProfileSend` 'reassign' | 'keepAssignee': settings.communication.chatAssignmentOnProfileSend
        - `useFixedNumber` object
          - `enabled` boolean: settings.communication.useFixedNumber.enabled
          - `vendor` 'twilio' | 'bandwidth': settings.communication.useFixedNumber.vendor
          - `number` string: settings.communication.useFixedNumber.number
          - `allowAutoReplacement` boolean: settings.communication.useFixedNumber.allowAutoReplacement
          - `numbers` object[]: settings.communication.useFixedNumber.numbers
            - `enabled` boolean: enabled
            - `default` boolean: default
            - `vendor` 'twilio' | 'bandwidth': vendor
            - `number` string: number
            - `allowAutoReplacement` boolean: allowAutoReplacement
            - `_id` string: _id
        - `enableInboundCallForwardingToFacilityPhone` boolean: settings.communication.enableInboundCallForwardingToFacilityPhone
        - `enableInboundCallForwardingToFacilityAlternativePhone` boolean: settings.communication.enableInboundCallForwardingToFacilityAlternativePhone
        - `useExistentLumaContactOnBroadcastsWithEmptyValues` boolean: settings.communication.useExistentLumaContactOnBroadcastsWithEmptyValues
        - `broadcast` object
          - `patientsBatchLimit` object
            - `enabled` boolean: settings.communication.broadcast.patientsBatchLimit.enabled
            - `value` number: settings.communication.broadcast.patientsBatchLimit.value
            - `interval` object
              - …
          - `rolesToBeNotifiedOnRequiredAction` object
            - `shouldNotifyByGroup` boolean: settings.communication.broadcast.rolesToBeNotifiedOnRequiredAction.shouldNotifyByGroup
            - `roles` string[]: settings.communication.broadcast.rolesToBeNotifiedOnRequiredAction.roles
          - `messagesOverrides` object
            - `enabled` boolean: settings.communication.broadcast.messagesOverrides.enabled
          - `uploadMapper` object
            - `enabled` boolean: settings.communication.broadcast.uploadMapper.enabled
          - `statusChangesNotifications` object
            - `enabled` boolean: settings.communication.broadcast.statusChangesNotifications.enabled
        - `ignoreInactiveContactsToSendMessage` object
          - `enabled` boolean: settings.communication.ignoreInactiveContactsToSendMessage.enabled
      - `timezone` string: settings.timezone
      - `useTimezoneFrom` 'user' | 'facility': settings.useTimezoneFrom
      - `localization` 'en-US' | 'pt-BR': settings.localization
      - `scheduler` object
        - `enabled` boolean: settings.scheduler.enabled
        - `alwaysHideToolbar` boolean: settings.scheduler.alwaysHideToolbar
        - `zipcodeMaxDistance` number: settings.scheduler.zipcodeMaxDistance
        - `daysAheadToShowAvailability` number: settings.scheduler.daysAheadToShowAvailability
        - `hoursAheadToShowAvailability` number: settings.scheduler.hoursAheadToShowAvailability
        - `maxDaysToShow` number: settings.scheduler.maxDaysToShow
        - `skipResettingAvailabilities` boolean: settings.scheduler.skipResettingAvailabilities
        - `skipTwoFactorAuthentication` boolean: settings.scheduler.skipTwoFactorAuthentication
        - `skipHeatMap` boolean: settings.scheduler.skipHeatMap
        - `requireForm` boolean: settings.scheduler.requireForm
        - `confirmationQrcode` object
          - `enabled` boolean: settings.scheduler.confirmationQrcode.enabled
          - `value` string: settings.scheduler.confirmationQrcode.value
        - `providerAvailabilityFilter` object[]: settings.scheduler.providerAvailabilityFilter
          - `dayOfMonth` number: dayOfMonth
          - `dayOfWeek` number: dayOfWeek
          - `startTime` string, date-time: startTime
          - `endTime` string, date-time: endTime
          - `_id` string: _id
        - `availabilityBlocks` object[]: settings.scheduler.availabilityBlocks
          - `dayOfWeek` number: dayOfWeek
          - `startTime` number: startTime
          - `endTime` number: endTime
          - `_id` string: _id
        - `maxAvailablitiesToRender` number: settings.scheduler.maxAvailablitiesToRender
        - `patientAddress` object
          - `required` boolean: settings.scheduler.patientAddress.required
          - `visible` boolean: settings.scheduler.patientAddress.visible
        - `patientEmailAddress` object
          - `required` boolean: settings.scheduler.patientEmailAddress.required
        - `reschedulerRespectsSchedulerRules` boolean: settings.scheduler.reschedulerRespectsSchedulerRules
        - `createPatientOnLookupFailure` boolean: settings.scheduler.createPatientOnLookupFailure
        - `minimumIntervalRequiredForBooking` number: settings.scheduler.minimumIntervalRequiredForBooking
        - `forceAppointmentTypeDuration` boolean: settings.scheduler.forceAppointmentTypeDuration
        - `ignoreDurationOnAvailabilityLookup` boolean: settings.scheduler.ignoreDurationOnAvailabilityLookup
        - `useAppointmentDurationOnAvailabilityCoalescing` boolean: settings.scheduler.useAppointmentDurationOnAvailabilityCoalescing
        - `botResponses` object
          - `enabled` boolean: settings.scheduler.botResponses.enabled
        - `showChatOnCompletion` boolean: settings.scheduler.showChatOnCompletion
        - `preQualificationFormTemplate` string: ID of PatientFormTemplate
        - `allowMultiLinkedAppointments` boolean: settings.scheduler.allowMultiLinkedAppointments
        - `hideProviderDetails` boolean: settings.scheduler.hideProviderDetails
        - `queryRealtimeAvailaiblitiesFromIntegration` boolean: settings.scheduler.queryRealtimeAvailaiblitiesFromIntegration
        - `sampleAvailabilityQuery` boolean: settings.scheduler.sampleAvailabilityQuery
        - `embeddedWidgetHtml` string: settings.scheduler.embeddedWidgetHtml
        - `useDependentProviderOnAnchorAvailability` boolean: settings.scheduler.useDependentProviderOnAnchorAvailability
        - `singleUseSchedulerLink` object
          - `enabled` boolean: settings.scheduler.singleUseSchedulerLink.enabled
        - `onlyNotifyStaffOnAnchorApptBooking` boolean: settings.scheduler.onlyNotifyStaffOnAnchorApptBooking
        - `minimumDaysFromLastAppointment` object
          - `enabled` boolean: settings.scheduler.minimumDaysFromLastAppointment.enabled
          - `amount` number: settings.scheduler.minimumDaysFromLastAppointment.amount
          - `status` string[]: settings.scheduler.minimumDaysFromLastAppointment.status
      - `outboundReferral` object
        - `enabled` boolean: settings.outboundReferral.enabled
        - `attempts` number: settings.outboundReferral.attempts
        - `interval` number: settings.outboundReferral.interval
        - `sendReferralFax` boolean: settings.outboundReferral.sendReferralFax
        - `sendReferralFaxCoversheet` boolean: settings.outboundReferral.sendReferralFaxCoversheet
        - `botResponses` object
          - `enabled` boolean: settings.outboundReferral.botResponses.enabled
        - `displayVisitReasonDropdown` boolean: settings.outboundReferral.displayVisitReasonDropdown
      - `referral` object
        - `enabled` boolean: settings.referral.enabled
        - `attempts` number: settings.referral.attempts
        - `useOutreachExperience` object
          - `enabled` boolean: settings.referral.useOutreachExperience.enabled
        - `interval` number: settings.referral.interval
        - `schedulableWindow` object
          - `earliest` number: settings.referral.schedulableWindow.earliest
          - `latest` number: settings.referral.schedulableWindow.latest
        - `sendReferralFax` boolean: settings.referral.sendReferralFax
        - `sendReferralFaxCoversheet` boolean: settings.referral.sendReferralFaxCoversheet
        - `sendReferralFaxStatus` object
          - `scheduled` boolean: settings.referral.sendReferralFaxStatus.scheduled
          - `cancelled` boolean: settings.referral.sendReferralFaxStatus.cancelled
          - `incomplete` boolean: settings.referral.sendReferralFaxStatus.incomplete
        - `sendReferralEmail` boolean: settings.referral.sendReferralEmail
        - `requireFullMatchForAutoSchedule` boolean: settings.referral.requireFullMatchForAutoSchedule
        - `requireSpecificMatchForAutoSchedule` boolean: settings.referral.requireSpecificMatchForAutoSchedule
        - `skipAutoSchedule` boolean: settings.referral.skipAutoSchedule
        - `requireMaxHoursApartFromAppointmentForAutoSchedule` number: settings.referral.requireMaxHoursApartFromAppointmentForAutoSchedule
        - `includeInternalMessagingInFollowupFax` boolean: settings.referral.includeInternalMessagingInFollowupFax
        - `formLink` string: settings.referral.formLink
        - `botResponses` object
          - `enabled` boolean: settings.referral.botResponses.enabled
        - `recommendations` object
          - `timingPreferences` object
            - `enabled` boolean: settings.referral.recommendations.timingPreferences.enabled
        - `markReferralsIncompleteAfterLastOutreachInHours` number: settings.referral.markReferralsIncompleteAfterLastOutreachInHours
        - `useFacilityAlternativeNumber` boolean: settings.referral.useFacilityAlternativeNumber
        - `suppressExpiration` object
          - `enabled` boolean: settings.referral.suppressExpiration.enabled
      - `reminder` object
        - `multipleRemindersPerDay` 'onlySendEarliest' | 'multipleRemindersPerDay': settings.reminder.multipleRemindersPerDay
        - `onlySendEarliestForApptTypesWithRemindersEnabled` boolean: settings.reminder.onlySendEarliestForApptTypesWithRemindersEnabled
        - `multipleRemindersPerDayShouldOnlyConsiderResourcesWithRemindersEnabledInSquiggly` boolean: settings.reminder.multipleRemindersPerDayShouldOnlyConsiderResourcesWithRemindersEnabledInSquiggly
        - `multipleRemindersPerDayRepliesOverride` 'disabled' | 'allowed' | 'confirmationOnly' | 'none': settings.reminder.multipleRemindersPerDayRepliesOverride
        - `schedule` unknown[]: settings.reminder.schedule
          - unknown
        - `enabled` boolean: settings.reminder.enabled
        - `onConfirmation` 'skipFurtherReminders' | 'keepLastReminder': settings.reminder.onConfirmation
        - `repliesForLastReminder` 'allowed' | 'confirmationOnly' | 'none': settings.reminder.repliesForLastReminder
        - `replies` 'allowed' | 'confirmationOnly' | 'none': settings.reminder.replies
        - `enabledChannels` string[]: settings.reminder.enabledChannels
        - `treatCancellationsAsNoShows` number: settings.reminder.treatCancellationsAsNoShows
        - `offerToJoinWaitlistOnCancellation` 'disabled' | 'from-reminder' | 'from-integrator' | 'from-both': settings.reminder.offerToJoinWaitlistOnCancellation
        - `schedulableWindow` object
          - `earliest` number: settings.reminder.schedulableWindow.earliest
          - `latest` number: settings.reminder.schedulableWindow.latest
        - `allowSelfSchedule` boolean: settings.reminder.allowSelfSchedule
        - `allowSelfReschedule` boolean: settings.reminder.allowSelfReschedule
        - `allowSelfRescheduleAvailabilityFilter` string[]: settings.reminder.allowSelfRescheduleAvailabilityFilter
        - `allowSelfRescheduleExpiry` number: settings.reminder.allowSelfRescheduleExpiry
        - `rescheduleSundayToSaturday` boolean: settings.reminder.rescheduleSundayToSaturday
        - `forceVoiceCallsForSmsNonResponders` boolean: settings.reminder.forceVoiceCallsForSmsNonResponders
        - `cancelOrConfirmAllAppointmentsInDay` boolean: settings.reminder.cancelOrConfirmAllAppointmentsInDay
        - `cancelOrConfirmAppointmentsInDayOnlyIfTypeVisible` boolean: settings.reminder.cancelOrConfirmAppointmentsInDayOnlyIfTypeVisible
        - `shouldRespectCancelOrConfirmAllAppointmentsInDay` boolean: settings.reminder.shouldRespectCancelOrConfirmAllAppointmentsInDay
        - `allowConfirmAfterCancel` boolean: settings.reminder.allowConfirmAfterCancel
        - `allowCancelAfterConfirm` boolean: settings.reminder.allowCancelAfterConfirm
        - `allowCancelAfterAppointmentStart` boolean: settings.reminder.allowCancelAfterAppointmentStart
        - `strictConfirmCancelTextHandling` boolean: settings.reminder.strictConfirmCancelTextHandling
        - `skipRedundantConfirmCancel` boolean: settings.reminder.skipRedundantConfirmCancel
        - `disableCatchupReminders` boolean: settings.reminder.disableCatchupReminders
        - `botResponses` object
          - `enabled` boolean: settings.reminder.botResponses.enabled
        - `forceMessageTime` object
          - `enabled` boolean: settings.reminder.forceMessageTime.enabled
          - `until` string: settings.reminder.forceMessageTime.until
        - `sendReminderOnHolidays` object
          - `enabled` boolean: settings.reminder.sendReminderOnHolidays.enabled
      - `cancellation` object
        - `enabled` boolean: settings.cancellation.enabled
        - `expiration` number: settings.cancellation.expiration
        - `processAppointmentTypes` boolean: settings.cancellation.processAppointmentTypes
        - `requireFrontOfficeAcceptance` boolean: settings.cancellation.requireFrontOfficeAcceptance
        - `shadowAppointment` object
          - `enabled` boolean: settings.cancellation.shadowAppointment.enabled
        - `allowDoubleBooks` boolean: settings.cancellation.allowDoubleBooks
        - `skipAvailabilityCreateFromCancellationStatusSources` unknown[]: settings.cancellation.skipAvailabilityCreateFromCancellationStatusSources
          - unknown
        - `maxDaysAheadsToProcessCancellation` number: settings.cancellation.maxDaysAheadsToProcessCancellation
        - `minMinutesAheadsToProcessCancellation` number: settings.cancellation.minMinutesAheadsToProcessCancellation
        - `minMinutesAheadsToProcessCancellationProviderOverridePolicy` 'min' | 'max': settings.cancellation.minMinutesAheadsToProcessCancellationProviderOverridePolicy
        - `spotsDiscovery` object
          - `enabled` boolean: settings.cancellation.spotsDiscovery.enabled
          - `maxSpots` number: settings.cancellation.spotsDiscovery.maxSpots
          - `hoursAhead` number: settings.cancellation.spotsDiscovery.hoursAhead
          - `includeWhitespace` boolean: settings.cancellation.spotsDiscovery.includeWhitespace
        - `autoAddToWaitlist` object
          - `enabled` boolean: settings.cancellation.autoAddToWaitlist.enabled
          - `daysAhead` number: settings.cancellation.autoAddToWaitlist.daysAhead
          - `maxDaysAhead` number: settings.cancellation.autoAddToWaitlist.maxDaysAhead
          - `minDaysFromLastAcceptedOfferToJoinWaitlist` number: settings.cancellation.autoAddToWaitlist.minDaysFromLastAcceptedOfferToJoinWaitlist
        - `waitlistOfferFlexibility` 'strict' | 'facility-match' | 'provider-match' | 'any': settings.cancellation.waitlistOfferFlexibility
        - `waitlistOfferSortOrder` 'longest-waiting' | 'most-recent-added': settings.cancellation.waitlistOfferSortOrder
        - `waitlistLocationOfferLeadTimeOverrides` object[]: settings.cancellation.waitlistLocationOfferLeadTimeOverrides
          - `facilityId` unknown
          - `minimumLeadTimeDays` number: settings.cancellation.waitlistLocationOfferLeadTimeOverrides[].minimumLeadTimeDays
        - `sendYouveBeenAddedMessage` boolean: settings.cancellation.sendYouveBeenAddedMessage
        - `skipOfferBasedOnLastSentOffer` boolean: settings.cancellation.skipOfferBasedOnLastSentOffer
        - `maxOffersPerWaitlist` number: settings.cancellation.maxOffersPerWaitlist
        - `protocol` 'serial' | 'parallel': settings.cancellation.protocol
        - `offerToJoinDuration` number: settings.cancellation.offerToJoinDuration
        - `autoCreateWaitlists` boolean: settings.cancellation.autoCreateWaitlists
        - `delayOffers` object
          - `enabled` boolean: settings.cancellation.delayOffers.enabled
          - `until` string: settings.cancellation.delayOffers.until
          - `delayOn` 'weekdays' | 'all-days': settings.cancellation.delayOffers.delayOn
          - `weekdaysDelay` object
            - `enabled` boolean: settings.cancellation.delayOffers.weekdaysDelay.enabled
            - `until` string: settings.cancellation.delayOffers.weekdaysDelay.until
          - `weekendsDelay` object
            - `enabled` boolean: settings.cancellation.delayOffers.weekendsDelay.enabled
            - `until` string: settings.cancellation.delayOffers.weekendsDelay.until
        - `disableOnWeekends` boolean: settings.cancellation.disableOnWeekends
        - `cancelFutureAppointment` boolean: settings.cancellation.cancelFutureAppointment
        - `requireFutureAppointment` boolean: settings.cancellation.requireFutureAppointment
        - `botResponses` object
          - `enabled` boolean: settings.cancellation.botResponses.enabled
      - `appointment` object
        - `duration` number: settings.appointment.duration
        - `recommendations` object
          - `timingPreferences` object
            - `enabled` boolean: settings.appointment.recommendations.timingPreferences.enabled
        - `validateUpdatedAtTimestamp` boolean: settings.appointment.validateUpdatedAtTimestamp
      - `feedback` object
        - `multipleRemindersPerDay` 'onlySendEarliest' | 'multipleRemindersPerDay': settings.feedback.multipleRemindersPerDay
        - `enabled` boolean: settings.feedback.enabled
        - `promoter` object
          - `type` 'facebook' | 'yelp' | 'patientfusion' | 'betterdoctor' | 'zocdoc' | 'google' | 'generic' | 'healthgrades' | 'ratemds': settings.feedback.promoter.type
          - `url` string: settings.feedback.promoter.url
        - `promoterUrls` object[]: settings.feedback.promoterUrls
          - `type` 'facebook' | 'yelp' | 'patientfusion' | 'betterdoctor' | 'zocdoc' | 'google' | 'generic' | 'healthgrades' | 'ratemds': type
          - `url` string: url
          - `enabled` boolean: enabled
          - `_id` string: _id
        - `detractor` object
          - `type` 'google' | 'luma': settings.feedback.detractor.type
          - `url` string: settings.feedback.detractor.url
        - `detractorUrls` object[]: settings.feedback.detractorUrls
          - `type` 'google' | 'surveymonkey' | 'luma': type
          - `url` string: url
          - `enabled` boolean: enabled
          - `_id` string: _id
        - `schedule` number: settings.feedback.schedule
        - `interval` object
          - `enabled` boolean: settings.feedback.interval.enabled
          - `value` number: settings.feedback.interval.value
        - `limit` object
          - `enabled` boolean: settings.feedback.limit.enabled
          - `value` number: settings.feedback.limit.value
        - `allowFeedbackForPastAppointments` boolean: settings.feedback.allowFeedbackForPastAppointments
        - `forceMessageTime` object
          - `enabled` boolean: settings.feedback.forceMessageTime.enabled
          - `until` string: settings.feedback.forceMessageTime.until
        - `botResponses` object
          - `enabled` boolean: settings.feedback.botResponses.enabled
        - `recommendations` object
          - `timingPreferences` object
            - `enabled` boolean: settings.feedback.recommendations.timingPreferences.enabled
        - `forceSkipBlackoutRules` boolean: settings.feedback.forceSkipBlackoutRules
      - `followup` object
        - `enabled` boolean: settings.followup.enabled
        - `recommendations` object
          - `timingPreferences` object
            - `enabled` boolean: settings.followup.recommendations.timingPreferences.enabled
        - `sendMessageForceTimeUsingTimezone` boolean: settings.followup.sendMessageForceTimeUsingTimezone
        - `ignoreCustomActionOperationsModelsFields` object
          - `operations` unknown[]: settings.followup.ignoreCustomActionOperationsModelsFields.operations
            - unknown
          - `models` unknown[]: settings.followup.ignoreCustomActionOperationsModelsFields.models
            - unknown
          - `fields` string[]: settings.followup.ignoreCustomActionOperationsModelsFields.fields
        - `sendImmediatelyWithPastSendAt` boolean: settings.followup.sendImmediatelyWithPastSendAt
        - `triggerCustomActionForDeletion` boolean: Determines if database deletions should trigger custom actions
      - `integrator` object
        - `requireLock` boolean: settings.integrator.requireLock
        - `lockExpiryInMinutes` number: settings.integrator.lockExpiryInMinutes
        - `syncWindow` object
          - `earliest` number: settings.integrator.syncWindow.earliest
          - `latest` number: settings.integrator.syncWindow.latest
          - `days` number: settings.integrator.syncWindow.days
          - `currentWeekSyncPastDataInDays` number: settings.integrator.syncWindow.currentWeekSyncPastDataInDays
        - `writeDataToIntegrator` object
          - `createAppointments` boolean: settings.integrator.writeDataToIntegrator.createAppointments
          - `createAppointmentsMaxRetries` number: settings.integrator.writeDataToIntegrator.createAppointmentsMaxRetries
          - `updateAvailabilityExternalIdOnCreateAppointmentSuccess` boolean: settings.integrator.writeDataToIntegrator.updateAvailabilityExternalIdOnCreateAppointmentSuccess
          - `updateStatus` boolean: settings.integrator.writeDataToIntegrator.updateStatus
          - `updatePatientDemographics` boolean: settings.integrator.writeDataToIntegrator.updatePatientDemographics
          - `updatePatientDemographicsName` boolean: settings.integrator.writeDataToIntegrator.updatePatientDemographicsName
          - `updatePatientDemographicsDateOfBirth` boolean: settings.integrator.writeDataToIntegrator.updatePatientDemographicsDateOfBirth
          - `flushPatientMessageHistory` boolean: settings.integrator.writeDataToIntegrator.flushPatientMessageHistory
          - `flushPatientMessageHistoryDelay` number: settings.integrator.writeDataToIntegrator.flushPatientMessageHistoryDelay
          - `flushPatientMessageHistoryDayOfWeek` number: settings.integrator.writeDataToIntegrator.flushPatientMessageHistoryDayOfWeek
          - `updateAppointmentNotesWithTelehealthLink` boolean: settings.integrator.writeDataToIntegrator.updateAppointmentNotesWithTelehealthLink
          - `updateAppointmentWithReminderSentStatus` boolean: settings.integrator.writeDataToIntegrator.updateAppointmentWithReminderSentStatus
          - `createOutboundHl7MessageOn` string[]: settings.integrator.writeDataToIntegrator.createOutboundHl7MessageOn
          - `createPatient` boolean: settings.integrator.writeDataToIntegrator.createPatient
          - `cacheDeletedAppointments` boolean: settings.integrator.writeDataToIntegrator.cacheDeletedAppointments
        - `frequency` number: settings.integrator.frequency
        - `enforceProviderDeltaCheck` boolean: settings.integrator.enforceProviderDeltaCheck
        - `enforceAppointmentDeltaCheck` boolean: settings.integrator.enforceAppointmentDeltaCheck
        - `syncProcedures` boolean: settings.integrator.syncProcedures
        - `syncDiagnoses` boolean: settings.integrator.syncDiagnoses
        - `syncReferrals` boolean: settings.integrator.syncReferrals
        - `syncRecalls` boolean: settings.integrator.syncRecalls
        - `syncInsurances` boolean: settings.integrator.syncInsurances
        - `syncOrders` boolean: settings.integrator.syncOrders
        - `verifySlotIsOpenBeforeAppointmentCreation` boolean: settings.integrator.verifySlotIsOpenBeforeAppointmentCreation
        - `verifyWhitespaceIsOpenBeforeAppointmentCreation` boolean: settings.integrator.verifyWhitespaceIsOpenBeforeAppointmentCreation
        - `requireValueAndTypeMatchOnDemographicsUpdate` boolean: settings.integrator.requireValueAndTypeMatchOnDemographicsUpdate
        - `skipGetProvider` boolean: settings.integrator.skipGetProvider
        - `syncAppointmentExternalRawSource` boolean: settings.integrator.syncAppointmentExternalRawSource
        - `syncProviderUpdates` object
          - `enabled` boolean: settings.integrator.syncProviderUpdates.enabled
        - `syncPatientExternalRawSource` boolean: settings.integrator.syncPatientExternalRawSource
        - `syncAdditionalDemographicFields` boolean: settings.integrator.syncAdditionalDemographicFields
        - `externalCustomResourceOverrides` object[]: settings.integrator.externalCustomResourceOverrides
          - `resource` 'provider' | 'appointment-type' | 'facility': resource
          - `override` string[]: override
          - `_id` string: _id
        - `syncNewResourcesAs` object
          - `hiddenAfterDays` number: settings.integrator.syncNewResourcesAs.hiddenAfterDays
          - `hiddenResources` string[]: settings.integrator.syncNewResourcesAs.hiddenResources
          - `disabledAfterDays` number: settings.integrator.syncNewResourcesAs.disabledAfterDays
          - `disabledResources` string[]: settings.integrator.syncNewResourcesAs.disabledResources
        - `historicDataLoader` object
          - `daysToLoad` number: settings.integrator.historicDataLoader.daysToLoad
          - `daysPerLoad` number: settings.integrator.historicDataLoader.daysPerLoad
        - `disableDedupeIncomingPatientData` boolean: settings.integrator.disableDedupeIncomingPatientData
        - `disablePatientsGetByExternalTypeAndComponents` boolean: settings.integrator.disablePatientsGetByExternalTypeAndComponents
        - `sftpConfirmationRangeInHours` number: settings.integrator.sftpConfirmationRangeInHours
        - `syncReferralsDisableExpiryForMissingReferrals` boolean: settings.integrator.syncReferralsDisableExpiryForMissingReferrals
        - `uploadReferralsPerformCompleteDeltaCheck` boolean: settings.integrator.uploadReferralsPerformCompleteDeltaCheck
        - `syncAppointmentsInParallel` boolean: settings.integrator.syncAppointmentsInParallel
        - `updateReferralsWithExternalRawSource` boolean: settings.integrator.updateReferralsWithExternalRawSource
      - `patients` object
        - `maxTokenAge` number: settings.patients.maxTokenAge
        - `loginLookupInIntegrator` boolean: settings.patients.loginLookupInIntegrator
        - `loginRequireActiveContactMatch` boolean: settings.patients.loginRequireActiveContactMatch
        - `requireCaptcha` boolean: settings.patients.requireCaptcha
        - `useAtlasSearch` boolean: settings.patients.useAtlasSearch
        - `appointmentManagement` object
          - `enabled` boolean: settings.patients.appointmentManagement.enabled
      - `reporting` object
        - `eventTracking` object
          - `enabled` boolean: settings.reporting.eventTracking.enabled
          - `trackingModel` 'patient' | 'user' | 'user-and-patient': settings.reporting.eventTracking.trackingModel
          - `vendors` string[]: settings.reporting.eventTracking.vendors
        - `useUserTimezoneInReports` boolean: settings.reporting.useUserTimezoneInReports
      - `waitingRoom` object
        - `enabled` boolean: settings.waitingRoom.enabled
      - `settingsToOverrideFrom` object
        - `facilities` unknown[]: settings.settingsToOverrideFrom.facilities
          - unknown
        - `providers` unknown[]: settings.settingsToOverrideFrom.providers
          - unknown
        - `appointmentTypes` unknown[]: settings.settingsToOverrideFrom.appointmentTypes
          - unknown
        - `users` unknown[]: settings.settingsToOverrideFrom.users
          - unknown
      - `billing` object
        - `vendors` object
          - `paypal` object
            - `enabled` boolean: settings.billing.vendors.paypal.enabled
          - `instamed` object
            - `enabled` boolean: settings.billing.vendors.instamed.enabled
          - `salucro` object
            - `enabled` boolean: settings.billing.vendors.salucro.enabled
        - `contactNumber` string: settings.billing.contactNumber
        - `contactEmail` string, email: settings.billing.contactEmail
      - `patientForms` object
        - `filterPatientFormsByFacility` boolean: settings.patientForms.filterPatientFormsByFacility
        - `preventRefillingCompletedForms` boolean: settings.patientForms.preventRefillingCompletedForms
        - `allowPerQuestionTwoFactorSkip` boolean: settings.patientForms.allowPerQuestionTwoFactorSkip
        - `showMessageOnFormEnd` boolean: settings.patientForms.showMessageOnFormEnd
        - `sendDirectMessageForCcdaForms` object
          - `enabled` boolean: settings.patientForms.sendDirectMessageForCcdaForms.enabled
          - `vendor` 'datamotion': settings.patientForms.sendDirectMessageForCcdaForms.vendor
          - `minutesAheadsToLookForAppointments` number: settings.patientForms.sendDirectMessageForCcdaForms.minutesAheadsToLookForAppointments
          - `directMessagingEmail` string: settings.patientForms.sendDirectMessageForCcdaForms.directMessagingEmail
        - `allowWidgetUserToUploadFile` boolean: settings.patientForms.allowWidgetUserToUploadFile
        - `hideProgressBarOnFormsWithJump` boolean: settings.patientForms.hideProgressBarOnFormsWithJump
        - `insuranceFormTemplate` string: ID of PatientFormTemplate
      - `insurance` object
        - `verification` object
          - `enabled` boolean: settings.insurance.verification.enabled
          - `hoursAheadToVerifyInsurance` number: settings.insurance.verification.hoursAheadToVerifyInsurance
      - `branding` object
        - `themes` object[]
          - `enabled` boolean: settings.branding.themes[i].enabled
          - `scope` string, required: settings.branding.themes[i].scope
      - `estimate` object
        - `updateFileUploadPatient` boolean: Determines if the file upload document linked to an estimate document must be updated with the patient ID and the estimate ID.
    - `address` string: address
    - `city` string: city
    - `state` string: state
    - `country` string: country
    - `postcode` string: postcode
    - `gender` 'male' | 'female' | 'unknown' | 'nonbinary': gender
    - `allowedIps` string[]: allowedIps
    - `avatar` string: ID of FileUpload
    - `publicKey` string: publicKey
    - `directMessagingEmail` string: directMessagingEmail
    - `demoConfiguration` object
      - `type` 'default'
    - `website` string: website
    - `deptCode` string: deptCode
    - `phonetic` string: phonetic
    - `alternativeName` string: alternativeName
    - `schedulable` boolean: schedulable
    - `isReferringProvider` boolean: isReferringProvider
    - `isRenderingProvider` boolean: isRenderingProvider
    - `visible` boolean: visible
    - `npi` number: npi
    - `source` 'upload' | 'patient-referral-form' | 'ui' | 'integrator': source
    - `biography` string: biography
    - `biographyUrl` string: biographyUrl
    - `headshot` string: ID of FileUpload
    - `billingType` 'resource' | 'part-time' | 'full-time' | 'non-billed' | 'duplicate' | 'no-longer-employed' | 'unknown': billingType
    - `mergedInto` string: ID of Provider
    - `telehealthVendors` object: telehealthVendors
      - `zoom` object
        - `id` string
        - `status` 'active' | 'inactive' | 'pending'
    - `specialInstructions` string: specialInstructions
    - `salesforceData` SalesforceData: Salesforce internal meta data for this account.
      - `customerSuccessManager` object
        - `name` string
        - `email` string
        - `phone` string
      - `provisioning` string[]
      - `respectProvisioning` boolean, required
      - `lifeline` 'trial' | 'converted' | 'active' | 'churn'
      - `mrr` number
      - `arr` number
      - `renewalDate` string, date-time
      - `providers` number
      - `specialty` string
      - `referralTrialLimit` number
      - `recordType` string
      - `domesticAccessRequired` boolean
      - `goLiveAt` string, date-time
      - `fullyImplementedAt` string, date-time
      - `contractSignedAt` string, date-time
      - `contractLength` number
      - `healthStatus` 'green' | 'yellow' | 'red' | 'poor fit' | 'Healthy' | 'Neutral' | 'Churn Risk' | 'Advocate'
      - `boardSegment` 'Reseller' | 'Strategic' | 'Majors' | 'Core' | 'Sub 20' | 'Unknown'
      - `onboardingState` 'Customer Success Introduction' | 'Kickoff' | 'Integration' | 'Discovery Call' | 'Customization' | 'Testing' | 'Staff Training' | 'Ready To Launch' | 'Go-Live' | 'Fully Implemented'
      - `accountLifeline` 'Unassigned' | 'Assigned' | 'Sales Accepted' | 'Working' | 'Sales Qualified' | 'Open Opportunity' | 'Nurture' | 'Disqualified' | 'Trial' | 'Converted' | 'Active' | 'Churned' | 'Partnered' | 'Trial Ended (No Conversion)'
    - `externalId` ExternalId
      - `source` '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': externalId.source
      - `value` string: externalId.value
    - `secondaryExternalId` ExternalId
      - `source` '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': externalId.source
      - `value` string: externalId.value
    - `dateOfBirth` object
      - `year` number: dateOfBirth.year
      - `month` number: dateOfBirth.month
      - `day` number: dateOfBirth.day
    - `twoFactorAuthSecret` object
      - `enabled` boolean: twoFactorAuthSecret.enabled
    - `stats` object
      - `oldestAppointment` string, date-time: stats.oldestAppointment
  - `page` integer, required
  - `size` integer, required

## Other responses

- `401`: Not authenticated
- `403`: Access token does not have the required scope

## Changes

- **2026-10-17** `f19aeba84a26`: 4 info
  - added the optional property `response/items/settings/cancellation/waitlistLocationOfferLeadTimeOverrides` to the response with the `200` status
  - added the optional property `response/items/settings/lumabot/agentic` to the response with the `200` status
  - added the optional property `response/items/settings/patientForms/allowPerQuestionTwoFactorSkip` to the response with the `200` status
  - added the optional property `response/items/settings/reminder/skipRedundantConfirmCancel` to the response with the `200` status

[Operation history](https://skmtc.dev/lumahealth/apis/rest-service/changes/specialties/:specialtyId/providers/get.md)

---

[API](https://skmtc.dev/lumahealth/apis/rest-service.md) - [All operations](https://skmtc.dev/lumahealth/apis/rest-service/llms.txt) - [OpenAPI document](https://skmtc.dev/lumahealth/apis/rest-service/revisions/f19aeba84a26?raw)
