Stable
Windows is a stable desktop release. The Windows API is available for local tooling and automation.
HTTP API
Control transcription, dictation, recorder, history, and dictionary through a local HTTP interface.
Enable the server
- Open Settings > Advanced > API Server.
- Enable the API server and keep port 8978, or choose another available local port.
- Check the status from PowerShell:

Discovery and token
When it starts, the server writes two discovery files to %LOCALAPPDATA%\TypeWhisper-UserData: api-discovery.json with version, port, and token, plus the legacy api-port.
{
"version": 1,
"port": 8978,
"token": "..."
}Token authentication is optional. When Require API Token is enabled, only /v1/status remains public. Send the token with every other request as a bearer token or the X-TypeWhisper-API-Token header.
$discovery = Get-Content "$env:LOCALAPPDATA\TypeWhisper-UserData\api-discovery.json" | ConvertFrom-Json
curl.exe -H "Authorization: Bearer $($discovery.token)" "http://localhost:$($discovery.port)/v1/models"
Transcribe audio
Send a file as multipart/form-data. language and language_hint are mutually exclusive; language_hint may be repeated in priority order.
curl.exe -X POST http://localhost:8978/v1/transcribe ` -F "file=@recording.wav" ` -F "language_hint=de" ` -F "language_hint=en" ` -F "response_format=verbose_json"
Additional fields: task (transcribe or translate), target_language, prompt, engine, and model. Add await_download=1 to wait for a supported local engine to download or restore the model.
For files already on this machine, /v1/transcribe/local-file accepts a Windows path as JSON. This avoids uploading a large local file through the API process.
Stable endpoints
| Method | Route | Purpose |
|---|---|---|
| GET | /v1/status | Server, engine, and model status |
| GET | /v1/models | Available local and cloud models |
| POST | /v1/transcribe | Transcribe multipart or raw audio |
| POST | /v1/transcribe/local-file | Transcribe a local Windows file path |
| GET | /v1/history | Search and paginate history |
| DELETE | /v1/history | Delete a history entry by ID |
| POST | /v1/dictation/start | Start dictation recording |
| POST | /v1/dictation/stop | Stop dictation recording |
| GET | /v1/dictation/status | Read current dictation state |
| GET | /v1/dictation/transcription | Poll a dictation result by session ID |
| POST | /v1/recorder/start | Start a recorder session |
| POST | /v1/recorder/stop | Stop a recorder session |
| GET | /v1/recorder/status | Read recorder state |
| GET | /v1/recorder/session | Read a recorder session by ID |
| GET | /v1/dictionary/terms | List enabled dictionary terms |
| PUT | /v1/dictionary/terms | Append or replace dictionary terms |
| DELETE | /v1/dictionary/terms | Delete one dictionary term |
| GET | /v1/dictionary/corrections | List enabled dictionary corrections |
| PUT | /v1/dictionary/corrections | Create or update a correction |
| DELETE | /v1/dictionary/corrections | Delete a correction |
Workflow compatibility routes
/v1/rules and /v1/profiles and their PUT /toggle routes remain available for existing integrations. Both expose the current workflow configuration; new interfaces and documentation call the concept Workflows.