---
title: "List Integrations"
method: GET
path: "/integrations/v2/use-cases"
tags: ["Integrations Use Cases V2"]
---

# List Integrations

`GET /integrations/v2/use-cases`

## Query parameters

- `filters` IntegrationsUseCasesFilters, required
  - `integrationId` string, nullable — Reference to the associated integration
  - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
  - `type` 'appointment_reminder_with_sheet' | 'lab_reminder_with_sheet' | 'appointment_reminder' | 'final_appointment_notification' | 'lab_reminder' | 'appointment_scheduling' | 'appointment_cancellation' | 'appointment_rescheduling' | 'appointment_scheduling_with_waitlist' | 'medication_refill' | 'invoice_enquiry' | 'web_scheduling' | 'insurance_reminder' | 'appointment_enquiry' — Defines the type of use-case for an integration.
- `size` integer — Number of items per page
- `page` integer — Page number
- `search` string, nullable — Search keywords
- `start` string, date-time, nullable — Filter by start time (ISO 8601 format)
- `end` string, date-time, nullable — Filter by end time (ISO 8601 format)

## Response `200`

Successful Response

- IntegrationsUseCasesListResponse — Response model for a list of integrations use cases. Contains a list of IntegrationsUseCasesModel objects.
  - `integration` IntegrationsModel — Main integration model holding configuration and audit details.
    - `teamId` string, nullable — ID of the team that owns this record
    - `createdBy` string, nullable — ID of the user who created this record
    - `updatedBy` string, nullable — ID of the user who last updated this record
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `_id` string, nullable — MongoDB document ObjectID
    - `logicalId` string, nullable — Unique identifier for the integration
    - `provider` 'microsoft' | 'google' | 'athena' | 'ecw' | 'slack' | 'okta' — Supported integration providers.
    - `name` string, nullable — Friendly name for the integration (e.g., 'Google Calendar Sync').
    - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
    - `access` 'personal' | 'team' | 'system' — Indicates who can access this integration.
    - `config` union — Provider-specific configuration schema determined by 'provider'.
      - IntegrationMicrosoftConfig — Microsoft OAuth-based integration configuration.
        - `scope` string, nullable — List of permission scopes authorized for the integration.
        - `accessToken` string, nullable — Access token issued by the provider.
        - `refreshToken` string, nullable — Refresh token for obtaining a new access token.
        - `tokenType` string, nullable — Type of token, e.g., 'Bearer'.
        - `expiresAt` string, date-time, nullable — Expiration time of the access token in ISO 8601 format. Ex: 2023-10-05T14:48:00.000Z
        - `connectedAt` string, date-time, nullable — Connection time of the OAuth integration in ISO 8601 format. Ex: 2023-10-05T14:48:00.000Z
        - `renewedAt` string, date-time, nullable — Last renewal time of the access token in ISO 8601 format. Ex: 2023-10-05T14:48:00.000Z
        - `errorMessage` string, nullable — Error message if token exchange or renewal failed.
        - `provider` 'microsoft' — Integration provider identifier. Always 'microsoft'.
        - `authType` 'basic' | 'oauth' | 'oauth2' — Defines the authentication type used for the integration.
        - `authUserEmail` string, nullable — Email address associated with the connected Microsoft account.
        - `authUserName` string, nullable — Display name of the connected Microsoft account user.
      - IntegrationAthenaConfigOutput — Athena API key-based integration configuration.
        - `baseUrl` string, nullable — Base URL path/domain for the Integration Client Requests.
        - `authKey` string, nullable — Key name used for authorization in API requests.
        - `authAddTo` 'headers' | 'query', nullable — Where to include the key-value pair in API requests (headers or query).
        - `clientId` string, nullable — OAuth2 client identifier issued by the authorization server.
        - `clientSecret` string, nullable — Confidential client secret used together with the client ID.
        - `audience` string, nullable — OAuth2 audience / API identifier for which the access token is requested.
        - `grantType` 'client_credentials' — OAuth2 grant type used when requesting the access token.
        - `scopes` string, nullable — Space-separated list of OAuth2 scopes requested for the access token.
        - `tokenUrl` string, nullable — URL used to obtain the OAuth2 token for the Integration Client.
        - `provider` 'athena' — Integration provider identifier. Always 'athena'.
        - `isSandbox` boolean, nullable — Indicates if the integration is in sandbox mode. Turn off for production use. For Sandbox mode we will sync limited data for easy testing.
        - `authType` 'basic' | 'oauth' | 'oauth2' — Defines the authentication type used for the integration.
        - `sourceId` string, nullable — Unique source identifier for Athena integration.
        - `connectorId` string, nullable — Unique connector identifier for Athena integration.
        - `dataSynchronizer` 'xcaliber_health' | 'interactly_ehr_gateway' | 'ellkay' | 'direct_athena' — Defines the type of data synchronization.
        - `ehrTenantId` string, nullable — EHR Tenant identifier sent as the x-tenant-id request header in API calls.
        - `ehrInstance` string, nullable — EHR instance identifier sent as the X-Ehr-Instance request header in API calls.
        - `apiKey` string, nullable — API key for authenticating with ECW. This is required if authType is set to 'basic'.
        - `branding` IntegrationBranding
          - `name` string, nullable — Name of the integration as it should appear in the UI.
          - `logoUrl` string, nullable — URL to the logo image of the integration. You can provide any static image URL.
          - `iconUrl` string, nullable — URL to the favicon representing the integration. You can provide any static image URL.
          - `primaryColor` string, nullable — Hex code or color name representing the primary brand color of the integration.
          - `supportNumber` string, nullable — Contact phone number for support related to the integration.
          - `supportEmail` string, nullable — Contact email address for support related to the integration.
          - `receiverEmails` string[] — List of email addresses that should receive notifications related to the integration.
          - `subDomain` string, nullable — Sub Domain for this integration, ex: ehr-client. So we create https://ehr-client.interactly.ai Route53 CNAME record pointing to interactly.ai. It should be unique across all integrations.
          - `templateId` 'scheduling-session-v2' — Defines the UI templates available for integrations.
          - `disclaimerMessage` string, nullable — Custom disclaimer message to be displayed during the web session.
          - `websiteUrl` string, nullable — Official website URL of the integration or organization. We will use this site for redirection links.
          - `privacyPolicyUrl` string, nullable — Official privacy policy and terms URL of the integration or organization. We will use this site for redirection links.
        - `insurance` IntegrationInsurance
          - `organizationName` string, nullable — Name of the insurance organization associated with this integration. Stedi will use this information when processing insurance verifications.
          - `organizationNpi` string, nullable — NPI of the insurance organization associated with this integration. Stedi will use this information when processing insurance verifications.
          - `stediApiKey` string, nullable — Per-integration Stedi API key. Used for eligibility checks. Falls back to the platform-wide STEDI_TEST_API_KEY / STEDI_PROD_API_KEY env vars (chosen by sandbox flag) when blank.
      - IntegrationECWConfigOutput — ECW API key-based integration configuration.
        - `baseUrl` string, nullable — Base URL path/domain for the Integration Client Requests.
        - `authKey` string, nullable — Key name used for authorization in API requests.
        - `authAddTo` 'headers' | 'query', nullable — Where to include the key-value pair in API requests (headers or query).
        - `clientId` string, nullable — OAuth2 client identifier issued by the authorization server.
        - `clientSecret` string, nullable — Confidential client secret used together with the client ID.
        - `audience` string, nullable — OAuth2 audience / API identifier for which the access token is requested.
        - `grantType` 'client_credentials' — OAuth2 grant type used when requesting the access token.
        - `scopes` string, nullable — Space-separated list of OAuth2 scopes requested for the access token.
        - `tokenUrl` string, nullable — URL used to obtain the OAuth2 token for the Integration Client.
        - `provider` 'ecw' — Integration provider identifier. Always 'ecw'.
        - `isSandbox` boolean, nullable — Indicates if the integration is in sandbox mode. Turn off for production use. For Sandbox mode we will sync limited data for easy testing.
        - `authType` 'basic' | 'oauth' | 'oauth2' — Defines the authentication type used for the integration.
        - `sourceId` string, nullable — Unique source identifier for ECW integration.
        - `connectorId` string, nullable — Unique connector identifier for ECW integration.
        - `dataSynchronizer` 'xcaliber_health' | 'interactly_ehr_gateway' | 'ellkay' | 'direct_athena' — Defines the type of data synchronization.
        - `ehrTenantId` string, nullable — EHR Tenant identifier sent as the x-tenant-id request header in API calls.
        - `ehrInstance` string, nullable — EHR instance identifier sent as the X-Ehr-Instance request header in API calls.
        - `apiKey` string, nullable — API key for authenticating with ECW. This is required if authType is set to 'basic'.
        - `branding` IntegrationBranding
          - `name` string, nullable — Name of the integration as it should appear in the UI.
          - `logoUrl` string, nullable — URL to the logo image of the integration. You can provide any static image URL.
          - `iconUrl` string, nullable — URL to the favicon representing the integration. You can provide any static image URL.
          - `primaryColor` string, nullable — Hex code or color name representing the primary brand color of the integration.
          - `supportNumber` string, nullable — Contact phone number for support related to the integration.
          - `supportEmail` string, nullable — Contact email address for support related to the integration.
          - `receiverEmails` string[] — List of email addresses that should receive notifications related to the integration.
          - `subDomain` string, nullable — Sub Domain for this integration, ex: ehr-client. So we create https://ehr-client.interactly.ai Route53 CNAME record pointing to interactly.ai. It should be unique across all integrations.
          - `templateId` 'scheduling-session-v2' — Defines the UI templates available for integrations.
          - `disclaimerMessage` string, nullable — Custom disclaimer message to be displayed during the web session.
          - `websiteUrl` string, nullable — Official website URL of the integration or organization. We will use this site for redirection links.
          - `privacyPolicyUrl` string, nullable — Official privacy policy and terms URL of the integration or organization. We will use this site for redirection links.
        - `insurance` IntegrationInsurance
          - `organizationName` string, nullable — Name of the insurance organization associated with this integration. Stedi will use this information when processing insurance verifications.
          - `organizationNpi` string, nullable — NPI of the insurance organization associated with this integration. Stedi will use this information when processing insurance verifications.
          - `stediApiKey` string, nullable — Per-integration Stedi API key. Used for eligibility checks. Falls back to the platform-wide STEDI_TEST_API_KEY / STEDI_PROD_API_KEY env vars (chosen by sandbox flag) when blank.
        - `utm` IntegrationUTMDetails
          - `utm_source_id` string, nullable — UTM source label id for miscellaneous-information-item. This is used to track the source of traffic for the integration.
          - `utm_medium_id` string, nullable — UTM medium label id for miscellaneous-information-item. This is used to track the medium of traffic for the integration.
          - `utm_campaign_id` string, nullable — UTM campaign label id for miscellaneous-information-item. This is used to track the campaign of traffic for the integration.
      - IntegrationGoogleConfig — Google OAuth-based integration configuration.
        - `scope` string, nullable — List of permission scopes authorized for the integration.
        - `accessToken` string, nullable — Access token issued by the provider.
        - `refreshToken` string, nullable — Refresh token for obtaining a new access token.
        - `tokenType` string, nullable — Type of token, e.g., 'Bearer'.
        - `expiresAt` string, date-time, nullable — Expiration time of the access token in ISO 8601 format. Ex: 2023-10-05T14:48:00.000Z
        - `connectedAt` string, date-time, nullable — Connection time of the OAuth integration in ISO 8601 format. Ex: 2023-10-05T14:48:00.000Z
        - `renewedAt` string, date-time, nullable — Last renewal time of the access token in ISO 8601 format. Ex: 2023-10-05T14:48:00.000Z
        - `errorMessage` string, nullable — Error message if token exchange or renewal failed.
        - `provider` 'google' — Integration provider identifier. Always 'google'.
        - `authType` 'basic' | 'oauth' | 'oauth2' — Defines the authentication type used for the integration.
        - `authUserEmail` string, nullable — Email address associated with the connected Google account.
        - `authUserName` string, nullable — Display name of the connected Google account user.
      - IntegrationSlackConfig — Slack OAuth-based integration configuration.
        - `scope` string, nullable — List of permission scopes authorized for the integration.
        - `accessToken` string, nullable — Access token issued by the provider.
        - `refreshToken` string, nullable — Refresh token for obtaining a new access token.
        - `tokenType` string, nullable — Type of token, e.g., 'Bearer'.
        - `expiresAt` string, date-time, nullable — Expiration time of the access token in ISO 8601 format. Ex: 2023-10-05T14:48:00.000Z
        - `connectedAt` string, date-time, nullable — Connection time of the OAuth integration in ISO 8601 format. Ex: 2023-10-05T14:48:00.000Z
        - `renewedAt` string, date-time, nullable — Last renewal time of the access token in ISO 8601 format. Ex: 2023-10-05T14:48:00.000Z
        - `errorMessage` string, nullable — Error message if token exchange or renewal failed.
        - `provider` 'slack' — Integration provider identifier. Always 'slack'.
        - `authType` 'basic' | 'oauth' | 'oauth2' — Defines the authentication type used for the integration.
        - `botUserId` string, nullable — Slack bot user ID associated with this app.
        - `appId` string, nullable — Slack app ID of the connected application.
        - `authedTeam` IntegrationSlackTeam — Slack team details.
          - `id` string, nullable — Slack workspace/team ID.
          - `name` string, nullable — Name of the Slack workspace/team.
        - `authedUser` IntegrationSlackUser — Slack user authentication details.
          - `id` string, nullable — Slack user ID.
          - `scope` string[], nullable — Scopes authorized for the user.
          - `accessToken` string, nullable — Access token for the authenticated Slack user.
          - `tokenType` string, nullable — Type of token, e.g., 'Bearer'.
      - IntegrationOktaConfig — Okta client-credentials integration configuration for obtaining bearer tokens.
        - `baseUrl` string, nullable — Base URL path/domain for the Integration Client Requests.
        - `authKey` string, nullable — Key name used for authorization in API requests.
        - `authAddTo` 'headers' | 'query', nullable — Where to include the key-value pair in API requests (headers or query).
        - `clientId` string, nullable — OAuth2 client identifier issued by the authorization server.
        - `clientSecret` string, nullable — Confidential client secret used together with the client ID.
        - `audience` string, nullable — OAuth2 audience / API identifier for which the access token is requested.
        - `grantType` 'client_credentials' — OAuth2 grant type used when requesting the access token.
        - `scopes` string, nullable — Space-separated list of OAuth2 scopes requested for the access token.
        - `tokenUrl` string, nullable — URL used to obtain the OAuth2 token for the Integration Client.
        - `provider` 'okta' — Integration provider identifier. Always 'okta'.
        - `tokenRequestFormat` 'form' | 'json' — Format for the token request payload. 'form' for form-encoded, 'json' for JSON.
        - `authType` 'basic' | 'oauth' | 'oauth2' — Defines the authentication type used for the integration.
    - `timezone` string, nullable — IANA timezone string (e.g., 'America/New_York', 'Asia/Kolkata').
    - `flowTemplate` IntegrationFlowTemplateOutput — Fully defines an integration's non-default flow behavior. Every field independently selects one named+versioned strategy; unset fields resolve to the literal default/legacy behavior. A `None` IntegrationFlowTemplate on the Integration document means every one of these strategies is the default — i.e. byte-identical to pre-template code.
      - `logicalId` string, nullable
      - `name` string, nullable — Display name, e.g. 'eCW Generic Scheduling Resource (FIN-style)'.
      - `slotResourceStrategy` 'practitioner_record_v1' | 'provider_resource_v1' — How free-slot search and appointment-creation resolve the FHIR actor used as the 'Practitioner' slot-search actor / appointment participant.
      - `patientPayloadStrategy` 'location_practitioner_v1' | 'provider_resource_v1' — How the eCW Patient-creation payload resolves its facility/pcg-provider actors.
      - `appointmentPayloadStrategy` 'location_practitioner_patient_v1' | 'provider_resource_patient_v1' — How the Appointment-creation FHIR payload builds its participant/actor list.
      - `insuranceNotesRoutingStrategy` 'billing_notes_extension_v1' | 'appointment_description_v1' — Where the post-booking Stedi insurance-eligibility summary gets written on the Appointment resource.
      - `schedulingCapacityRule` SlotCapacityRuleConfigOutput — Declarative capacity/exclusion rule for how many appointments may occupy the same nominal calendar slot. Flat, explicit fields only — not a rule DSL — so it stays hand-authorable per integration/template.
        - `enabled` boolean — Off by default. A resource/integration with no rule enabled is a no-op — identical to today's behavior, never new permissiveness.
        - `scope` 'resource' | 'location' — 'resource': occupancy is counted only against this resource's own appointments (matches the FHIR Slot model, which is inherently per-practitioner). 'location': occupancy is pooled across every resource sharing the same location — only enable this with explicit client sign-off, since it is not addressed by FIN's confirmed rule.
        - `maxOccupantsPerSlot` integer — Maximum total appointments allowed to overlap the same candidate window, regardless of type mix. FIN confirmed value: 2.
        - `perTypeRules` AppointmentTypeSlotRuleOutput[] — Capacity/compatibility rule per appointment type (matched against an AppointmentType resource record's `appointmentType` value, e.g. 'NP', 'F/U'). Every appointment type an integration uses for scheduling should have an entry here so the capacity rule can be enforced correctly for that type — an appointment type with no entry falls back to `unclassifiedTypeExcludedWithAll`.
          - `appointmentType` string, required — References an AppointmentType resource record's own id (not its display text) — matches the `allowed_appointment_type_ids` convention used elsewhere in this codebase, so it's immune to the display text later being renamed and gets the same UI picker for free.
          - `maxOccupantsOfThisType` integer — How many appointments of THIS type may share the same candidate window together. E.g. FIN's 'NP' type: 1 (never two New Patients together); 'F/U' type: 2.
          - `excludedWithTypes` string[] — Other appointment types (by resource record id) that cannot share a slot with this one at all, regardless of maxOccupantsPerSlot headroom (e.g. a type that must never be double-booked with anything). Checked in both directions — declaring it on either type in the pair is sufficient. Leave empty when this type may freely share with any other type, subject only to maxOccupantsPerSlot and each type's own maxOccupantsOfThisType.
          - `blocksEntireParentSlot` boolean — When True, an occupant of this type (e.g. a New Patient visit taking the whole 30-minute block) makes the WHOLE `SlotCapacityRuleConfig.parentSlotMinutes`-aligned block subject to the flat maxOccupantsPerSlot cap — every other candidate anywhere in that block is evaluated against the whole block, not just its own overlapping window. With no blocking-type occupant present, candidates are evaluated against their own overlapping window only (the existing, unchanged behavior), which is what lets e.g. two Follow-ups each independently occupy a different half of the block.
        - `unclassifiedTypeExcludedWithAll` boolean — Fail-closed default: if an occupant's or candidate's appointment type can't be matched to an entry in perTypeRules, treat it as incompatible with every other occupant (including another unclassified one) rather than silently allowing an unclassified pairing. Does not affect maxOccupantsPerSlot, which always applies.
        - `excludedVisitStatusCodes` string[] — Occupant visit-status codes that don't count toward occupancy (e.g. cancelled/no-show appointments free the slot).
        - `parentSlotMinutes` integer, nullable — Alignment granularity (e.g. 30) used to group candidates into a nominal block for any type with `blocksEntireParentSlot=True`. Required for that flag to have any effect; leave unset if no type in perTypeRules sets it.
        - `adjacencyRules` AdjacencyGapRuleOutput[] — Minimum-gap rules between appointment types in different, non-overlapping blocks (e.g. no back-to-back New Patients). See AdjacencyGapRule.
          - `typeA` string, required
          - `typeB` string, required — Same as typeA to express a gap rule against occurrences of its own type (e.g. New Patient vs New Patient).
          - `minGapMinutes` integer, required — Minimum time that must separate the end of one and the start of the other, in either order. A candidate of typeA within this gap of an existing typeB occupant (or vice versa) is rejected, even though the two windows don't overlap.
        - `occupancyFetchStrategy` 'location_v1' | 'practitioner_v1' — How `SlotCapacityRuleConfig`'s occupancy pre-fetch queries already-booked appointments.
  - `integration_use_cases` IntegrationsUseCasesModel[] — List of integrations use cases
    - `teamId` string, nullable — ID of the team that owns this record
    - `createdBy` string, nullable — ID of the user who created this record
    - `updatedBy` string, nullable — ID of the user who last updated this record
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `_id` string, nullable — MongoDB document ObjectID
    - `logicalId` string, nullable — Unique identifier for the integration use-case
    - `integrationId` string, nullable — Reference to the associated integration
    - `schedulerNames` string[] — List of associated scheduler names
    - `config` union — type-specific configuration schema determined by 'type'.
      - AppointmentReminderWithSheetUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'appointment_reminder_with_sheet' — Type of the use-case. Must be 'appointment_reminder_with_sheet'
        - `name` string, nullable — Reminders for newly scheduled patient appointments
        - `sheetLink` string, nullable — Link to the appointment data sheet
        - `actions` UseCasesActionsConfig[] — List of actions associated with the use-case
          - `logicalId` string, nullable — Unique identifier for the use case action
          - `templateName` string, nullable — Name of the template used for the action
          - `communicationPreference` 'call' | 'sms' | 'email' | 'call_and_sms' | 'call_and_email' | 'sms_and_email' | 'call_and_sms_and_email' | 'call_or_sms' | 'call_or_email' | 'sms_or_email' | 'call_or_sms_or_email', nullable — Defines the communication preferences for a use-case.
          - `context` string, nullable — Contextual information for the action
          - `reportEmails` string[], nullable — List of email addresses to send the reports to
          - `daysWindow` integer, nullable — Number of days in advance to check for the action
          - `status` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `schedule` union — You can schedule actions to run at specific times or intervals.
            - OneTimeTriggerRule
              - …
            - DaysTriggerRule
              - …
      - LabReminderWithSheetUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'lab_reminder_with_sheet' — Type of the use-case. Must be 'lab_reminder_with_sheet'
        - `name` string, nullable — Notifications for lab results availability
        - `sheetLink` string, nullable — Link to the lab results data sheet
        - `actions` UseCasesActionsConfig[] — List of actions associated with the use-case
          - `logicalId` string, nullable — Unique identifier for the use case action
          - `templateName` string, nullable — Name of the template used for the action
          - `communicationPreference` 'call' | 'sms' | 'email' | 'call_and_sms' | 'call_and_email' | 'sms_and_email' | 'call_and_sms_and_email' | 'call_or_sms' | 'call_or_email' | 'sms_or_email' | 'call_or_sms_or_email', nullable — Defines the communication preferences for a use-case.
          - `context` string, nullable — Contextual information for the action
          - `reportEmails` string[], nullable — List of email addresses to send the reports to
          - `daysWindow` integer, nullable — Number of days in advance to check for the action
          - `status` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `schedule` union — You can schedule actions to run at specific times or intervals.
            - OneTimeTriggerRule
              - …
            - DaysTriggerRule
              - …
      - AppointmentReminderUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'appointment_reminder' — Type of the use-case. Must be 'appointment_reminder'
        - `name` string, nullable — Reminders for newly scheduled patient appointments
        - `allowedLocations` string[], nullable — List of location ids for which the appointment reminder use-case applies.
        - `allowedPractitioners` string[], nullable — List of practitioner ids for which the appointment reminder use-case applies.
        - `allowedVisitStatuses` IntegrationAppointmentVisitStatus[] — (Legacy) List of visit statuses of the appointments for which the appointment reminder use-case applies.
        - `allowedVisitStatusesIds` string[], nullable — List of visit status codes for which the appointment reminder use-case applies.
        - `allowedAppointmentTypeIds` string[], nullable — List of appointment type resource record ids for which the appointment reminder use-case applies.
        - `allowedAppointmentTypes` IntegrationAppointmentTypes[] — Deprecated legacy appointment type names kept for backwards compatibility. TODO: remove after migrating to allowedAppointmentTypeIds.
        - `actions` UseCasesActionsConfig[] — List of actions associated with the use-case
          - `logicalId` string, nullable — Unique identifier for the use case action
          - `templateName` string, nullable — Name of the template used for the action
          - `communicationPreference` 'call' | 'sms' | 'email' | 'call_and_sms' | 'call_and_email' | 'sms_and_email' | 'call_and_sms_and_email' | 'call_or_sms' | 'call_or_email' | 'sms_or_email' | 'call_or_sms_or_email', nullable — Defines the communication preferences for a use-case.
          - `context` string, nullable — Contextual information for the action
          - `reportEmails` string[], nullable — List of email addresses to send the reports to
          - `daysWindow` integer, nullable — Number of days in advance to check for the action
          - `status` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `schedule` union — You can schedule actions to run at specific times or intervals.
            - OneTimeTriggerRule
              - …
            - DaysTriggerRule
              - …
      - FinalAppointmentNotificationUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'final_appointment_notification' — Type of the use-case. Must be 'final_appointment_notification'
        - `name` string, nullable — Final notifications for scheduled patient appointments
        - `allowedLocations` string[], nullable — List of location ids for which the final notification should be sent.
        - `allowedPractitioners` string[], nullable — List of practitioner ids for which the final notification should be sent.
        - `allowedVisitStatuses` IntegrationAppointmentVisitStatus[] — (Legacy) List of visit statuses of the appointments for which the final notification should be sent.
        - `allowedVisitStatusesIds` string[], nullable — List of visit status codes for which the final notification should be sent.
        - `allowedAppointmentTypeIds` string[], nullable — List of appointment type resource record ids for which the final notification should be sent.
        - `allowedAppointmentTypes` IntegrationAppointmentTypes[] — Deprecated legacy appointment type names kept for backwards compatibility. TODO: remove after migrating to allowedAppointmentTypeIds.
        - `actions` UseCasesActionsConfig[] — List of actions associated with the use-case
          - `logicalId` string, nullable — Unique identifier for the use case action
          - `templateName` string, nullable — Name of the template used for the action
          - `communicationPreference` 'call' | 'sms' | 'email' | 'call_and_sms' | 'call_and_email' | 'sms_and_email' | 'call_and_sms_and_email' | 'call_or_sms' | 'call_or_email' | 'sms_or_email' | 'call_or_sms_or_email', nullable — Defines the communication preferences for a use-case.
          - `context` string, nullable — Contextual information for the action
          - `reportEmails` string[], nullable — List of email addresses to send the reports to
          - `daysWindow` integer, nullable — Number of days in advance to check for the action
          - `status` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `schedule` union — You can schedule actions to run at specific times or intervals.
            - OneTimeTriggerRule
              - …
            - DaysTriggerRule
              - …
      - LabReminderUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'lab_reminder' — Type of the use-case. Must be 'lab_reminder'
        - `name` string, nullable — Notifications for lab results availability
        - `actions` UseCasesActionsConfig[] — List of actions associated with the use-case
          - `logicalId` string, nullable — Unique identifier for the use case action
          - `templateName` string, nullable — Name of the template used for the action
          - `communicationPreference` 'call' | 'sms' | 'email' | 'call_and_sms' | 'call_and_email' | 'sms_and_email' | 'call_and_sms_and_email' | 'call_or_sms' | 'call_or_email' | 'sms_or_email' | 'call_or_sms_or_email', nullable — Defines the communication preferences for a use-case.
          - `context` string, nullable — Contextual information for the action
          - `reportEmails` string[], nullable — List of email addresses to send the reports to
          - `daysWindow` integer, nullable — Number of days in advance to check for the action
          - `status` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `schedule` union — You can schedule actions to run at specific times or intervals.
            - OneTimeTriggerRule
              - …
            - DaysTriggerRule
              - …
      - AppointmentSchedulingUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'appointment_scheduling' — Type of the use-case. Must be 'appointment_scheduling'
        - `name` string, nullable — Notifications for appointment scheduling
        - `communicationPreference` 'sms' | 'email' | 'sms_and_email' | 'sms_or_email', nullable — SMS and Email communication preferences only (no call).
        - `insurance_flow_settings` object, nullable — Optional configuration for insurance flow settings to be applied during appointment scheduling
          - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
          - `patient_types` IntegrationPatientTypes[] — List of patient types that this insurance flow settings applies to
          - `verification_phase` 'before_appointment' | 'after_appointment', nullable — Defines verification phases for insurance verification.
          - `upload_insurance_cards` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `do_stedi_verification` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `is_stedi_sandbox` boolean, nullable — Whether to use the Stedi sandbox environment (test API key) instead of production for eligibility checks. Turn off for production use.
          - `skip_card_upload` boolean, nullable — Whether patients can submit insurance details without uploading a card image, and without an existing EHR patient record. Enables pre-appointment outreach to be sent before the patient has been created in the EHR.
          - `stedi_npi_source` 'group_npi' | 'provider_npi', nullable — Defines which NPI to send when calling Stedi for insurance verification.
          - `ocr_workflow_id` string, nullable — Workflow used to read insurance cards. Leave empty to use the built-in OCR service. Selecting one moves the extraction prompt, model and fallbacks into the workflow, where they can be changed without a deploy.
          - `ocr_workflow_version` integer, nullable — Version of the OCR workflow to run. Pin a version so an edit in the dashboard does not reach production until it is promoted here; leave empty to always run the latest.
          - `ocr_fallback_to_service` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `update_result_on` IntegrationInsuranceUpdateResultOn[] — List of insurance flow events that should trigger an update to the insurance information to billing notes section in the EHR. Empty list means insurance information will not be updated to billing notes.
          - `upload_stedi_responses` IntegrationInsuranceUploadStediResponseOn[] — List of insurance flow events that should trigger an upload of Stedi responses to the EHR. Empty list means no Stedi responses will be uploaded.
          - `failure_reminder` 'no_reminders' | 'remind_once' | 'remind_until_verification_success' — Defines triggers for sending reminders to patients on insurance verification failure.
          - `allowed_visit_statuses` IntegrationAppointmentVisitStatus[] — (Legacy) List of visit statuses of the appointments for which the insurance flow settings should be applied.
          - `allowed_visit_statuses_ids` string[], nullable — List of visit status codes for which the insurance flow settings should be applied.
          - `allowed_appointment_type_ids` string[], nullable — List of appointment type resource record ids for which the insurance flow settings should be applied.
          - `allowed_appointment_types` IntegrationAppointmentTypes[] — Deprecated legacy appointment type names kept for backwards compatibility. TODO: remove after migrating to allowed_appointment_type_ids.
          - `allowed_locations` string[], nullable — List of location ids for which the insurance flow settings apply.
          - `allowed_practitioners` string[], nullable — List of practitioner ids for which the insurance flow settings apply.
      - AppointmentCancellationUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'appointment_cancellation' — Type of the use-case. Must be 'appointment_cancellation'
        - `name` string, nullable — Notifications for appointment cancellation
        - `communicationPreference` 'sms' | 'email' | 'sms_and_email' | 'sms_or_email', nullable — SMS and Email communication preferences only (no call).
      - AppointmentReschedulingUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'appointment_rescheduling' — Type of the use-case. Must be 'appointment_rescheduling'
        - `name` string, nullable — Notifications for appointment rescheduling
        - `communicationPreference` 'sms' | 'email' | 'sms_and_email' | 'sms_or_email', nullable — SMS and Email communication preferences only (no call).
      - AppointmentSchedulingWithWaitlistUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'appointment_scheduling_with_waitlist' — Type of the use-case. Must be 'appointment_scheduling_with_waitlist'
        - `name` string, nullable — Notifications for appointment scheduling with waitlist
      - MedicationRefillUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'medication_refill' — Type of the use-case. Must be 'medication_refill'
        - `name` string, nullable — Medication refills
      - InvoiceBillingUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'invoice_enquiry' — Type of the use-case. Must be 'invoice_enquiry'
        - `name` string, nullable — Invoice and billing notifications
      - WebSchedulingUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'web_scheduling' — Type of the use-case. Must be 'web_scheduling'
        - `name` string, nullable — Web scheduling for patient appointments
        - `start_offset_days` integer — Number of days to offset the first available appointment shown to patients
        - `disclaimer_message` string — Disclaimer displayed alongside the scheduling experience to guide patients
        - `redirect_url` string — URL, patient is redirected if he/she is an existing patient
        - `insurance_flow_settings` object, nullable — Optional configuration for insurance flow settings to be applied during web scheduling
          - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
          - `patient_types` IntegrationPatientTypes[] — List of patient types that this insurance flow settings applies to
          - `verification_phase` 'before_appointment' | 'after_appointment', nullable — Defines verification phases for insurance verification.
          - `upload_insurance_cards` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `do_stedi_verification` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `is_stedi_sandbox` boolean, nullable — Whether to use the Stedi sandbox environment (test API key) instead of production for eligibility checks. Turn off for production use.
          - `skip_card_upload` boolean, nullable — Whether patients can submit insurance details without uploading a card image, and without an existing EHR patient record. Enables pre-appointment outreach to be sent before the patient has been created in the EHR.
          - `stedi_npi_source` 'group_npi' | 'provider_npi', nullable — Defines which NPI to send when calling Stedi for insurance verification.
          - `ocr_workflow_id` string, nullable — Workflow used to read insurance cards. Leave empty to use the built-in OCR service. Selecting one moves the extraction prompt, model and fallbacks into the workflow, where they can be changed without a deploy.
          - `ocr_workflow_version` integer, nullable — Version of the OCR workflow to run. Pin a version so an edit in the dashboard does not reach production until it is promoted here; leave empty to always run the latest.
          - `ocr_fallback_to_service` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `update_result_on` IntegrationInsuranceUpdateResultOn[] — List of insurance flow events that should trigger an update to the insurance information to billing notes section in the EHR. Empty list means insurance information will not be updated to billing notes.
          - `upload_stedi_responses` IntegrationInsuranceUploadStediResponseOn[] — List of insurance flow events that should trigger an upload of Stedi responses to the EHR. Empty list means no Stedi responses will be uploaded.
          - `failure_reminder` 'no_reminders' | 'remind_once' | 'remind_until_verification_success' — Defines triggers for sending reminders to patients on insurance verification failure.
          - `allowed_visit_statuses` IntegrationAppointmentVisitStatus[] — (Legacy) List of visit statuses of the appointments for which the insurance flow settings should be applied.
          - `allowed_visit_statuses_ids` string[], nullable — List of visit status codes for which the insurance flow settings should be applied.
          - `allowed_appointment_type_ids` string[], nullable — List of appointment type resource record ids for which the insurance flow settings should be applied.
          - `allowed_appointment_types` IntegrationAppointmentTypes[] — Deprecated legacy appointment type names kept for backwards compatibility. TODO: remove after migrating to allowed_appointment_type_ids.
          - `allowed_locations` string[], nullable — List of location ids for which the insurance flow settings apply.
          - `allowed_practitioners` string[], nullable — List of practitioner ids for which the insurance flow settings apply.
      - InsuranceReminderUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'insurance_reminder' — Type of the use-case. Must be 'insurance_reminder'
        - `name` string, nullable — Reminding patients about insurance
        - `allowedVisitStatuses` IntegrationAppointmentVisitStatus[] — (Legacy) List of visit statuses of the appointments for which the insurance reminder use-case applies.
        - `allowedVisitStatusesIds` string[], nullable — List of visit status codes for which the insurance reminder use-case applies..
        - `allowedAppointmentTypeIds` string[], nullable — List of appointment type resource record ids for which the final notification should be sent.
        - `allowedAppointmentTypes` IntegrationAppointmentTypes[] — Deprecated legacy appointment type names kept for backwards compatibility. TODO: remove after migrating to allowedAppointmentTypeIds.
        - `reminderMaxAttempts` integer, nullable — Maximum number of reminder attempts before giving up.
        - `actions` UseCasesActionsConfig[] — List of actions associated with the use-case
          - `logicalId` string, nullable — Unique identifier for the use case action
          - `templateName` string, nullable — Name of the template used for the action
          - `communicationPreference` 'call' | 'sms' | 'email' | 'call_and_sms' | 'call_and_email' | 'sms_and_email' | 'call_and_sms_and_email' | 'call_or_sms' | 'call_or_email' | 'sms_or_email' | 'call_or_sms_or_email', nullable — Defines the communication preferences for a use-case.
          - `context` string, nullable — Contextual information for the action
          - `reportEmails` string[], nullable — List of email addresses to send the reports to
          - `daysWindow` integer, nullable — Number of days in advance to check for the action
          - `status` 'active' | 'inactive', nullable — Represents whether the integration is active or inactive.
          - `schedule` union — You can schedule actions to run at specific times or intervals.
            - OneTimeTriggerRule
              - …
            - DaysTriggerRule
              - …
      - AppointmentEnquiryUseCaseConfigOutput
        - `displayName` string, nullable — Friendly name for the use-case. You can change this to better identify the use-case.
        - `assistantId` string, nullable — ID of the assistant associated with this use-case
        - `status` 'active' | 'inactive' — Represents whether the integration is active or inactive.
        - `timezone` string, nullable — Timezone for scheduling and notifications
        - `type` 'appointment_enquiry' — Type of the use-case. Must be 'appointment_enquiry'
        - `name` string, nullable — Notifications for appointment enquiry
  - `total` integer, nullable — Total number of integrations use cases available without pagination.

## Other responses

- `422` — Validation Error

## Changes

- **2026-08-27** `d69c17f1f601` — 1 info
  - added the optional property `integration/anyOf[subschema #1: IntegrationsModel]/flowTemplate` to the response with the `200` status
- **2026-08-20** `686433cd5a70` — 2 info
  - added the optional property `integration_use_cases/items/config/anyOf[subschema #1]/oneOf[subschema #12: Web Scheduling Use Case Configuration]/insurance_flow_settings/anyOf[subschema #1: IntegrationInsuranceFlowSettings]/skip_card_upload` to the response with the `200` status
  - added the optional property `integration_use_cases/items/config/anyOf[subschema #1]/oneOf[subschema #6: Appointment Scheduling Use Case Configuration]/insurance_flow_settings/anyOf[subschema #1: IntegrationInsuranceFlowSettings]/skip_card_upload` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/interactly/apis/interactly-api-4/changes/integrations/v2/use-cases/get.md)

---

[API](https://skmtc.dev/interactly/apis/interactly-api-4.md) · [All operations](https://skmtc.dev/interactly/apis/interactly-api-4/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/interactly/interactly-api-4/revisions/d69c17f1f601/schema)
