FlowiseAI/Flowise · error · Error

Unsupported TTS provider: ${provider}

Error message

Unsupported TTS provider: ${provider}

What it means

Thrown by the default case of a switch on provider inside getVoices(). It fires when the provider string does not match any known TextToSpeechType enum member (e.g. PLAYHT_TTS, OPENAI_TTS, ELEVEN_LABS_TTS). It indicates an unknown or unsupported TTS provider value reached voice enumeration.

Source

Thrown at packages/components/src/textToSpeech.ts:238

            const client = new ElevenLabsClient({
                apiKey: credentialData.elevenLabsApiKey
            })

            const voices = await client.voices.search({
                pageSize: 100,
                voiceType: 'default',
                category: 'premade'
            })

            return voices.voices.map((voice) => ({
                id: voice.voiceId,
                name: voice.name,
                category: voice.category
            }))
        }

        default:
            throw new Error(`Unsupported TTS provider: ${provider}`)
    }
}

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Inspect textToSpeechConfig / the chatflow node data to see the actual provider string being passed.
  2. Compare the value against the TextToSpeechType enum values in the codebase and correct the config to a supported provider.
  3. Add the missing provider as a new case if you are extending TTS support.
  4. If the value is empty/undefined, reconfigure the TTS node in the chatflow editor.

Example fix

// before — only known providers, default throws
switch (provider) {
  case TextToSpeechType.OPENAI_TTS: { ... }
  case TextToSpeechType.ELEVEN_LABS_TTS: { ... }
  default: throw new Error(`Unsupported TTS provider: ${provider}`)
}

// after — validate upstream and surface allowed values
const ALLOWED = Object.values(TextToSpeechType)
if (!ALLOWED.includes(provider)) {
  throw new Error(`Unsupported TTS provider: "${provider}". Supported: ${ALLOWED.join(', ')}`)
}
Defensive patterns

Strategy: validation

Validate before calling

import { TextToSpeechType } from './textToSpeech'
const ALLOWED_PROVIDERS = new Set(Object.values(TextToSpeechType))
function isValidTtsProvider(p: unknown): p is string {
  return typeof p === 'string' && ALLOWED_PROVIDERS.has(p as any)
}

Type guard

function isSupportedTtsProvider(provider: unknown): provider is (typeof TextToSpeechType)[keyof typeof TextToSpeechType] {
  return typeof provider === 'string' && provider in TextToSpeechType
}

Try / catch

if (!isSupportedTtsProvider(provider)) {
  throw new Error(`Unsupported TTS provider: "${String(provider)}". Supported: ${[...ALLOWED_PROVIDERS].join(', ')}`)
}

Prevention

When it happens

Trigger: The chatflow TTS config holds a provider string that isn't in the TextToSpeechType enum (typo, stale value from an older Flowise version, or a provider whose support was removed); an empty/undefined provider passed because the config was only partially saved; a custom provider string injected via API without enum validation.

Common situations: Migrating a chatflow from an older Flowise version that supported a provider since removed; manually editing the chatflow JSON with a misspelled provider; third-party plugin registering a provider name that this build doesn't recognise.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/00cbd927ad741f4a. Report an issue: GitHub.