Skip to main content
Finesse exposes an endpoint that follows OpenAI’s POST /audio/speech shape. Anything that can talk to OpenAI text-to-speech (the official SDKs, LiteLLM, Open WebUI, Dify, LibreChat, n8n) can use Finesse voices: point its OpenAI TTS setting at the Finesse base URL and use your Finesse API key. Like OpenAI, it returns MP3 when response_format is omitted, so tools work with their default settings.

Base URL and authentication

The SDKs append the endpoint path themselves, so this is the value to use wherever a tool asks for an OpenAI “base URL”. It serves: Authenticate with a workspace API key (flv_…) as a bearer token, which is what the OpenAI SDKs send:
The X-API-Key: flv_... header used by the rest of the Finesse API also works here. Dashboard session tokens are not accepted. Speech needs a key with the tts scope, and counts against your plan’s rate limits like any other synthesis.

Quick start

The response body is the raw audio, not JSON. With no response_format, it’s MP3 (audio/mpeg).

Request body

string
required
Any value is accepted; use finesse-v1. Values that tools hardcode, such as tts-1, are routed to the default Finesse model rather than rejected.
string
required
The text to synthesize. Maximum 10,000 characters.
string
required
A voice alias (for example charlizie) or a voice id. See Choosing a voice.
string
mp3 (the default), wav or pcm. See Formats.
string
Finesse extension, not part of the OpenAI API. A language code such as en or hi. Defaults to the voice’s primary language; set it for voices that speak several languages. With the Python SDK, pass it through extra_body={"language": "hi"}.
number
Accepted for compatibility and ignored.
string
Accepted for compatibility and ignored.

Formats

On a deployment without an MP3 encoder available, mp3 (including the omitted default) returns 400 unsupported_response_format with a message asking for wav or pcm. Pass one of those explicitly if you see it.

Streaming

When your plan includes streaming, every supported format (mp3, wav and pcm) is sent as it’s generated, so you can start playback before the whole clip is ready. Without streaming on your plan, the request still succeeds: the whole clip is synthesized first and returned in one response. Use pcm for real-time playback: it has no header and every chunk is playable samples.

Choosing a voice

voice takes either:
  • An alias: a short, stable name for a public Finesse voice, such as charlizie. Aliases are lowercase letters, digits and hyphens.
  • A voice id: the id of any voice your workspace can use, including your own cloned voices.
A voice that doesn’t exist, or that belongs to another workspace, returns 404. To see what’s available, call List voices. It returns your workspace’s voices first, then the public platform voices, which carry an alias field. The list is paginated with page and page_size:
OpenAI voice names such as alloy or nova are not Finesse voices. Replace them with a Finesse alias or voice id in any copied configuration.

Errors

Errors use OpenAI’s shape, so OpenAI clients surface error.message as-is:
The message text above is illustrative; branch on status and code, not on the message.

Use with tools

Every tool below needs the same four values: Field names differ between tools and versions, so match them by meaning. The default response format (mp3) works, so you can leave a tool’s format setting as it is.
In Open WebUI’s admin audio settings, set the text-to-speech engine to OpenAI, then fill in the OpenAI API base URL, API key, TTS model and TTS voice with the values in the table above.
Add Finesse to your proxy config as an openai/ model with api_base set to the Finesse base URL:
config.yaml
Then call the proxy’s /audio/speech endpoint with model: "finesse-tts" and a Finesse voice.
Add a model provider that speaks the OpenAI API with a custom endpoint (for example the OpenAI-API-compatible provider), and add a text-to-speech model to it: model name finesse-v1, the Finesse base URL as the endpoint, your API key, and a Finesse alias as the voice. Then select that model as the workspace’s or app’s text-to-speech model.
Configure the OpenAI text-to-speech provider in the speech section of librechat.yaml:
librechat.yaml
Check LibreChat’s speech documentation for your version to confirm whether url expects the base URL or the full /audio/speech endpoint.
Create an OpenAI credential with your Finesse API key and set its base URL to the Finesse base URL. In the OpenAI node, use the audio “generate” operation with model finesse-v1 and a Finesse voice.