HTTP API
TypeWhisper includes a local REST API for automation and integration with external tools. In macOS 1.0, this is an advanced surface: documented /v1/* endpoints are intended to remain stable across 1.x. Enable it in Settings > Advanced (default port: 8978).
Note: The API is disabled by default, binds to localhost only, and is designed for local automation rather than public network access.
Check Status
# Check if the API is ready
curl http://localhost:8978/v1/status
{
"status": "ready",
"engine": "whisper",
"model": "openai_whisper-large-v3_turbo",
"supports_streaming": true,
"supports_translation": true
}Transcribe Audio
# Send an audio file for transcription
curl -X POST http://localhost:8978/v1/transcribe \
-F "file=@recording.wav" \
-F "language=en" \
-F "target_language=de"
{
"text": "Hello, world!",
"language": "en",
"duration": 2.5,
"processing_time": 0.8,
"engine": "whisper",
"model": "openai_whisper-large-v3_turbo"
}Optional Parameters
language- ISO 639-1 code (e.g., en, de). Omit for auto-detection.task- transcribe (default) or translate (to English, WhisperKit only).target_language- ISO 639-1 code for translation target language (e.g., de, fr). Used with Apple Translate.
List Models
# Get available models
curl http://localhost:8978/v1/models
{
"models": [
{
"id": "openai_whisper-large-v3_turbo",
"engine": "whisper",
"ready": true
}
]
}History
# Search history
curl "http://localhost:8978/v1/history?q=meeting&limit=10&offset=0"
# Delete a history entry
curl -X DELETE "http://localhost:8978/v1/history?id=<uuid>"
Profiles
# List all profiles
curl http://localhost:8978/v1/profiles
# Toggle a profile on or off
curl -X PUT "http://localhost:8978/v1/profiles/toggle?id=<uuid>"
Dictation Control
# Start dictation
curl -X POST http://localhost:8978/v1/dictation/start
# Stop dictation
curl -X POST http://localhost:8978/v1/dictation/stop
# Check dictation status
curl http://localhost:8978/v1/dictation/status
Error Responses
The API returns standard HTTP status codes with a JSON error body:
{
"error": "No model loaded",
"code": "MODEL_NOT_LOADED"
}Common Error Codes
400- Missing or invalid file input, unsupported audio format, or invalid parameter value.503- No model is currently loaded.500- Internal transcription error. Check the app's logs or diagnostics export for more detail.