WinSTT logoWinSTT
Settings

Integrations

Add API keys to unlock optional cloud speech-to-text (ElevenLabs) and LLM cleanup (Ollama, OpenRouter). Keys are verified, stored encrypted on your device, and only ever sent to the provider you choose.

The Integrations tab holds every external credential WinSTT can use: the local Ollama endpoint, plus API keys for ElevenLabs and OpenRouter. Local transcription needs none of these — they only unlock cloud STT and LLM cleanup.

2
API keys (ElevenLabs · OpenRouter)
1
Shared Ollama endpoint
HTTPS
Direct to the provider you pick
0
Keys stored in plain text
Paste a key, WinSTT confirms it works, then stores it encrypted on your device — afterward you only see its status, never the secret again.

What each credential unlocks

WinSTT surfaces two API keys plus the Ollama endpoint. ElevenLabs is cloud speech-to-text only. OpenRouter is the shared LLM key — it powers text cleanup and unlocks OpenRouter cloud transcription models. Ollama is local-only.

Cloud is optional — and your keys stay on your device

Adding a key lets you reach for a cloud provider when you want it — ElevenLabs Scribe for cloud speech-to-text, or OpenRouter for cleanup and hosted transcription models. When you use one, your audio and your key go straight from your device to that provider over an encrypted (HTTPS) connection — there's no WinSTT server in between, and no third party in the middle. Keys are stored encrypted on your device and are never shown again after you enter them. Prefer to keep everything local? Skip the keys entirely — on-device models need none of this.

Ollama endpoint

The base URL for your local Ollama server. This is shared infrastructure — one endpoint serves both dictation cleanup and text transforms.

The External Integrations sections: a Language Models group with an Ollama endpoint field and an OpenRouter API-key password field, then a Cloud Speech-to-Text group with an ElevenLabs API-key field — each key showing a verification pill.
Every external credential in one place — the Ollama endpoint plus the two API keys (OpenRouter, ElevenLabs), each with its own verify pill.
Endpointdefault http://localhost:11434
llm.endpoint

Any HTTP(S) URL. It is not validated when you type it and there is no verify pill — an unreachable address persists silently until a feature actually calls it. Changing it does not auto-reconnect; features keep using the old value until the next call. A reset button restores the default.

Ollama models are discovered dynamically

WinSTT does not hard-code a small Ollama model list. The picker reads installed models from /api/tags, enriches them with /api/show capabilities, then browses the Ollama library and model tags for pullable variants. Newly published Ollama models appear as the upstream library exposes them.

Cloud STT key (ElevenLabs)

ElevenLabs is the only key in the Cloud Speech-to-Text section — OpenRouter's cloud transcription reuses the shared LLM key above. The key gets its own password field with a reveal toggle. It persists on every keystroke — switching tabs mid-typing can never lose it. A background probe then verifies the key and drives the status pill; it never blocks typing or reverts the value, so a rejected key stays in the field for you to fix in place.

ElevenLabs API Keydefault (empty)
integrations.elevenlabs.apiKey

Unlocks ElevenLabs cloud transcription (Scribe v1). Verified against GET /v1/user using the custom xi-api-key header — not Bearer auth.

The ElevenLabs key also stores two metadata fields the rest of the app reads: integrations.elevenlabs.verified (true / false / null = never probed) and integrations.elevenlabs.lastVerifiedAt (epoch-ms of the last successful check). Both reset to null on every keystroke and update after each probe.

Verification

Verification runs 600 ms after your last keystroke — long enough that pasting a key fires a single probe, short enough that you see the verdict before navigating away.

A pill only appears once a key is present. The same five states apply to both the ElevenLabs and OpenRouter keys.
PillMeaningColor
(none)Field is empty — no key to verify.
VerifyingProbe in flight (spinner).Muted
VerifiedProvider accepted the key.Green
InvalidProvider rejected the key (auth / malformed). Hover for the error.Red
Couldn't verifyNetwork or transport failure — the key may still be valid. Hover for the error.Yellow

A failed probe never deletes your key

An "invalid" or "couldn't verify" result leaves the key exactly as you typed it. Fix a typo inline and the next 600 ms probe re-checks it — no need to re-paste. Only the Remove button (below) clears a stored key.

Removing a key

A Remove button appears below the field whenever a key is stored. Removing clears the key, resets verified / lastVerifiedAt, and drops the pill back to idle.

Removing the active cloud key is gated

If the provider you're removing is your current main STT model, a confirmation dialog blocks the removal first — yanking the key out from under dictation would silently break your next utterance. If that provider isn't the active model, removal is immediate with no prompt. Clearing the key by hand while the cloud model is active instead surfaces a sticky banner telling you the current pick is now broken.

OpenRouter key (shared)

OpenRouter is a router for hosted LLMs used by dictation cleanup and text transforms. The same key also unlocks OpenRouter cloud transcription models in the Model tab's Cloud source — these run batch-only, with no streaming. It lives in the Language Models (LLM) section alongside the Ollama endpoint.

OpenRouter API Keydefault (empty)
llm.openrouterApiKey

Password field with a reveal toggle and a "Get API key" link to openrouter.ai/keys. Persists on every keystroke; verified 600 ms after the last keystroke with the same five pill states as the ElevenLabs key. Removing it while an LLM feature (dictation cleanup or transforms) is set to OpenRouter first prompts a confirmation dialog; otherwise it clears immediately. Clearing the field by hand auto-reverts those features back to Ollama.

Encryption at rest

Every key — ElevenLabs and OpenRouter — is encrypted before it touches disk.

Protected by your operating system

Keys are encrypted with your operating system's own secure storage before they're saved — on Windows that's the built-in Data Protection API, tied to your user account, so the saved file is useless to anyone else. In the current alpha this is wired up on Windows only; on other platforms WinSTT declines to save a key rather than ever store it in plain text.

On this page