---
title: "PATCH /clinic-config/ai - Update AI settings"
method: PATCH
path: "/clinic-config/ai"
tags: ["ClinicConfig"]
---

# PATCH /clinic-config/ai - Update AI settings

`PATCH /clinic-config/ai`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/clinic-config/ai`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/clinic-config/ai/patch.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- AiSettingsDto: AI feature settings
  - `modelTiers` boolean: True on every response from a Business API that reads model tiers. The web disables the tier picker when it is missing, i.e. an API from before tiers answered during a rollout (docs/ai-model-tiers.md). Ignored on requests.
  - `patientSummariesEnabled` boolean
  - `chartNotesGenerationEnabled` boolean
  - `defaultSummaryTemplate` string
  - `displayAiLabels` boolean
  - `displayConfidenceScores` boolean
  - `aiEmailResponsesEnabled` boolean
  - `publicPortalChatbotEnabled` boolean
  - `chatbotPersona` string
  - `aiLabAnalysisEnabled` boolean
  - `aiRadiologyAnalysisEnabled` boolean
  - `anonymizeForAiProcessing` boolean
  - `shareAnonymizedDataGlobalMcp` boolean
  - `requireDoctorReviewForAi` boolean
  - `ga4ClarityEnabled` boolean
  - `triageModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `assistantModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `vipModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `noteStyleInstructions` string, nullable: Practice-wide house style for AI-drafted clinical notes — wording and layout only. Empty or absent leaves note drafting exactly as it was.
  - `soapNotesModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `dischargeDocsModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `widgetChatbot` WidgetChatbotConfigDto: B.O.N.D. (Best Optimal Needs Determination) Widget Chatbot configuration
    - `enabled` boolean
    - `welcomeMessage` string, nullable
    - `schedulingEnabled` boolean
    - `medicationRefillEnabled` boolean
    - `triageEnabled` boolean
    - `intakeEnabled` boolean
    - `requireVerificationForScheduling` boolean
    - `maxConversationTurns` union
      - integer
      - string, int32
    - `autoEscalateEmergencies` boolean
    - `emergencyReferralName` string, nullable
    - `emergencyReferralPhone` string, nullable
    - `emergencyReferralAddress` string, nullable
    - `model` AiModelConfigDto: Configuration for an AI model (provider + model ID)
      - `provider` string: AI provider: "openai" or "anthropic"
      - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
      - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).

## Response `200`

OK

- AiSettingsDto: AI feature settings
  - `modelTiers` boolean: True on every response from a Business API that reads model tiers. The web disables the tier picker when it is missing, i.e. an API from before tiers answered during a rollout (docs/ai-model-tiers.md). Ignored on requests.
  - `patientSummariesEnabled` boolean
  - `chartNotesGenerationEnabled` boolean
  - `defaultSummaryTemplate` string
  - `displayAiLabels` boolean
  - `displayConfidenceScores` boolean
  - `aiEmailResponsesEnabled` boolean
  - `publicPortalChatbotEnabled` boolean
  - `chatbotPersona` string
  - `aiLabAnalysisEnabled` boolean
  - `aiRadiologyAnalysisEnabled` boolean
  - `anonymizeForAiProcessing` boolean
  - `shareAnonymizedDataGlobalMcp` boolean
  - `requireDoctorReviewForAi` boolean
  - `ga4ClarityEnabled` boolean
  - `triageModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `assistantModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `vipModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `noteStyleInstructions` string, nullable: Practice-wide house style for AI-drafted clinical notes — wording and layout only. Empty or absent leaves note drafting exactly as it was.
  - `soapNotesModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `dischargeDocsModel` AiModelConfigDto: Configuration for an AI model (provider + model ID)
    - `provider` string: AI provider: "openai" or "anthropic"
    - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
    - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).
  - `widgetChatbot` WidgetChatbotConfigDto: B.O.N.D. (Best Optimal Needs Determination) Widget Chatbot configuration
    - `enabled` boolean
    - `welcomeMessage` string, nullable
    - `schedulingEnabled` boolean
    - `medicationRefillEnabled` boolean
    - `triageEnabled` boolean
    - `intakeEnabled` boolean
    - `requireVerificationForScheduling` boolean
    - `maxConversationTurns` union
      - integer
      - string, int32
    - `autoEscalateEmergencies` boolean
    - `emergencyReferralName` string, nullable
    - `emergencyReferralPhone` string, nullable
    - `emergencyReferralAddress` string, nullable
    - `model` AiModelConfigDto: Configuration for an AI model (provider + model ID)
      - `provider` string: AI provider: "openai" or "anthropic"
      - `modelId` string: Model identifier (e.g., "claude-sonnet-4-6", "gpt-5.4-mini"). Empty = use the infra-configured default. Model ids live in the ModelCatalog config, not hardcoded.
      - `tier` string, nullable: The clinic's tier for a tiered feature ("standard" / "premium"); null = the feature's default tier. On save it is the only field read — provider and model id are ignored and come back as the tier's model (docs/ai-model-tiers.md).

## Changes

- **2026-10-28** `099cf36186e0`: 42 info
  - added the new optional request property `assistantModel/tier` (media type: application/json)
  - added the new optional request property `assistantModel/tier` (media type: text/json)
  - added the new optional request property `assistantModel/tier` (media type: application/*+json)
  - added the new optional request property `dischargeDocsModel/tier` (media type: application/json)
  - …38 more
- **2026-10-07** `021fabd866ff`: 18 info
  - added the new optional request property `widgetChatbot/oneOf[#/components/schemas/WidgetChatbotConfigDto]/emergencyReferralAddress` (media type: application/json)
  - added the new optional request property `widgetChatbot/oneOf[#/components/schemas/WidgetChatbotConfigDto]/emergencyReferralAddress` (media type: text/json)
  - added the new optional request property `widgetChatbot/oneOf[#/components/schemas/WidgetChatbotConfigDto]/emergencyReferralAddress` (media type: application/*+json)
  - added the new optional request property `widgetChatbot/oneOf[#/components/schemas/WidgetChatbotConfigDto]/emergencyReferralName` (media type: application/json)
  - …14 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/clinic-config/ai/patch.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) - [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
