Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.corti.ai/llms.txt

Use this file to discover all available pages before exploring further.

Use this page when you want practical examples for the current Embedded API configuration options. If you need to combine branding, UI, and interaction defaults in one setup flow, jump to I need to configure several settings together.

Intended usage pattern

  • Call configureApp() for app-level settings.
  • Call setInteractionOptions() before the user starts or opens an interaction.
If you are moving from configure() or configureSession(), use the Config Migration Guide. For timelines and compatibility, see Scheduled Deprecations.

I want to hide the interaction title

Use this when the interaction title is already shown elsewhere in your product and you do not want to repeat it inside the embedded assistant.
await api.configureApp({
  ui: {
    interactionTitle: false,
  },
});

I want to disable document feedback

Use this when you do not want clinicians to submit document feedback from inside the embedded assistant.
await api.configureApp({
  ui: {
    documentFeedback: false,
  },
});

I want to remove AI chat from the embedded assistant

Use this when your workflow does not allow in-product AI chat or when you want to keep the embedded experience focused on recording and documentation only.
await api.configureApp({
  ui: {
    aiChat: false,
  },
});

I want to keep users inside the current interaction

Use this when you do not want clinicians to open settings, browse older interactions, or navigate away from the flow controlled by your host application.
await api.configureApp({
  ui: {
    navigation: false,
  },
});

I want to enable the debug panel during development

Use this when you need the embedded Assistant debug panel while developing or troubleshooting an integration locally.
await api.configureApp({
  debug: true,
});
debug is only intended for development. Do not enable it in staging or production.

I want a focused embedded UI with only the core workflow visible

Use this when your product already provides the surrounding navigation and context, and you want the embedded assistant to stay limited to the current interaction.
await api.configureApp({
  ui: {
    interactionTitle: false,
    aiChat: false,
    documentFeedback: false,
    navigation: false,
  },
});

I want to change the primary accent color

Use this when you want the embedded experience to match your product branding.
Always ensure WCAG 2.2 AA conformance when customizing appearance
await api.configureApp({
  appearance: {
    primaryColor: "#0f766e",
  },
});

I want to set the current interface language

Use this when you want to control the language of the embedded UI.
await api.configureApp({
  locale: {
    interfaceLanguage: "da-DK",
  },
});

I want new sessions to start with a specific dictation language

Use this when you want the embedded experience to start with a specific dictation language.
await api.configureApp({
  locale: {
    dictationLanguage: "da",
  },
});

I want to override specific interface text

Use this when you need to replace specific interface strings with product-specific wording.
await api.configureApp({
  locale: {
    overrides: {
      "interview.document.syncDocument.label": "Sync Document",
    },
  },
});

I want the embedded assistant to use a custom WebSocket endpoint

Use this only for proxy setups that need a custom WebSocket endpoint. See the Proxy guide.
await api.configureApp({
  network: {
    websocketBaseUrl: "wss://proxy.example.com",
  },
});

I want sessions to default to in-person mode

Use this when you want to set the initial interaction mode while keeping both modes available.
await api.setInteractionOptions({
  mode: {
    fallback: "in-person",
    options: ["in-person", "virtual"],
  },
});

I want to allow both in-person and virtual modes while setting a fallback

Use this when users should still be able to switch modes, but one mode should be the default.
await api.setInteractionOptions({
  mode: {
    fallback: "virtual",
    options: ["in-person", "virtual"],
  },
});

I want to lock the embedded instance to only virtual mode or only in-person mode

Use this when your workflow only supports one interaction type.
await api.setInteractionOptions({
  mode: {
    fallback: "virtual",
    options: ["virtual"],
  },
});

I want sessions to start with a specific spoken language

Use this when a session should default to a specific spoken language.
await api.setInteractionOptions({
  spokenLanguage: {
    fallback: "da",
  },
});

I want new sessions to fall back to a default template

Use this when you want to provide a fallback standard template for new sessions using the fully resolved template id. It is used only when the user does not already have their own default template set.
await api.setInteractionOptions({
  templates: {
    defaultTemplate: {
      behaviour: "fallback",
      template: {
        source: "standard",
        id: "corti-soap-en",
      },
    },
  },
});
If your old integration used defaultTemplateKey: "corti-soap" together with defaultOutputLanguage: "en", the new template.id should be "corti-soap-en".

I want clinicians to be able to use personal templates

Use this when you want to keep or remove access to personal templates through the existing template editor capability.
await api.setInteractionOptions({
  templates: {
    sources: {
      personal: {
        enabled: true,
      },
    },
  },
});

I want to show the document sync action

Use this when you want to show or hide the document sync action inside the embedded experience.
await api.setInteractionOptions({
  documents: {
    actions: {
      sync: true,
    },
  },
});

I need to configure several settings together

Use this when you need to apply several settings together. If the settings all belong to configureApp(), you can group them into one call or chain multiple configureApp() calls. Because configureApp() is patchable, both patterns are valid.
await api.configureApp({
  ui: {
    interactionTitle: true,
    aiChat: false,
    navigation: false,
  },
  appearance: {
    primaryColor: "#0f766e",
  },
  locale: {
    interfaceLanguage: "da-DK",
    dictationLanguage: "da",
  },
});
await api.configureApp({
  ui: {
    interactionTitle: true,
    aiChat: false,
  },
});

await api.configureApp({
  appearance: {
    primaryColor: "#0f766e",
  },
});

await api.configureApp({
  locale: {
    interfaceLanguage: "da-DK",
    dictationLanguage: "da",
  },
});
If you need both app-level settings and interaction-level settings, group app-level settings inside configureApp() as needed, then call setInteractionOptions() before the user starts or opens an interaction.
await api.configureApp({
  ui: {
    navigation: false,
    documentFeedback: false,
  },
  locale: {
    interfaceLanguage: "da-DK",
  },
});

await api.setInteractionOptions({
  mode: {
    fallback: "virtual",
    options: ["in-person", "virtual"],
  },
  spokenLanguage: {
    fallback: "da",
  },
  documents: {
    actions: {
      sync: true,
    },
  },
});
A practical rule is: optional app-level settings can be grouped or split across configureApp() calls, but interaction options should be finalized in setInteractionOptions() before the interaction is opened.

Scheduled Deprecations

Review timing, compatibility expectations, and rollout guidance.

API Reference

Review method-level details for configureApp() and setInteractionOptions().