Engines and models
curl -X GET "https://example.com/model/status"{
"status": "string",
"checkpoint": "string",
"loaded_at": "string",
"sub_stage": "string",
"detail": "string",
"error": "string"
}List all currently loaded models for the flush dropdown (MM2-04).
Thin delegation to the model_lifecycle facade — shape unchanged:
{models, count}.
Response Body
application/json
curl -X GET "https://example.com/model/loaded"nullUnload a specific model by id (MM2-04). Delegates to model_lifecycle;
an unknown id maps to HTTP 400. tts | diarization |
sidecar:<id> | sidecars.
Path Parameters
Response Body
application/json
application/json
curl -X POST "https://example.com/model/unload/string"nullcurl -X GET "https://example.com/engines"nullcurl -X GET "https://example.com/engines/tts"nullcurl -X GET "https://example.com/engines/asr"nullcurl -X GET "https://example.com/engines/llm"nullReturn available DSP effect presets for the dub pipeline.
Each preset is a named chain of audio effects (EQ, compressor, reverb, etc.) that can be applied to generated TTS audio on a per-segment basis.
Response Body
application/json
curl -X GET "https://example.com/engines/effects/presets"{
"presets": [
{
"id": "string",
"label": "string",
"icon": "string",
"description": "string"
}
]
}Translation engines with per-engine pip-package availability.
Separate from the tts/asr/llm "family" endpoints because these are pip-installable on demand rather than select-from-what's-available. The UI uses this to show a one-click Install chip when the user picks an engine whose Python dependency isn't importable yet.
Response Body
application/json
curl -X GET "https://example.com/engines/translation"nullcurl -X POST "https://example.com/engines/translation/string/install"nullcurl -X DELETE "https://example.com/engines/translation/string"nullStart (or report) the one-click install for a sidecar engine.
Returns {status: "started"|"already_running"|"already_installed"}.
404 for engines that have no sidecar installer — the response names the
translation-engine route so a mis-aimed client can self-correct.
Path Parameters
Response Body
application/json
application/json
curl -X POST "https://example.com/engines/sidecar/string/install"nullRemove an app-managed sidecar install (checkout + venv + weights) and clear the persisted path. Refuses user-managed installs (a clone the user made themselves) and installs with a job still running.
Path Parameters
Response Body
application/json
application/json
curl -X DELETE "https://example.com/engines/sidecar/string/install"nullStep-by-step status of the sidecar install job (poll while running).
Shape: {engine_id, installed, managed, install_dir, job} where job is
null before the first run, else {state, steps[], log[], error, remediation, weights_progress, started_at, finished_at}.
Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/engines/sidecar/string/install/status"nullSpawn-and-ping a SubprocessBackend; is_available() for the rest.
Returns: { id, ok, message, latency_ms }
Never raises through to a 500: backend diagnostics stay in the local
log and the response carries a fixed failure message, so the UI can
render a per-row failure without exposing private data. Unknown engine
ids return 404.Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/engines/string/health"nullRun a bounded, real synthesis on an available in-process TTS engine.
404 for an unknown TTS id; 400 when the engine is subprocess-isolated or
not currently available (a real synth on either is meaningless). Never
raises through to a 500 on a synth failure — the exception is captured into
ok=False / message so the panel renders a per-row failure.
Path Parameters
Response Body
application/json
application/json
curl -X POST "https://example.com/engines/string/selftest"{
"id": "string",
"ok": true,
"message": "string",
"duration_ms": 0,
"sample_rate": 0,
"num_samples": 0,
"audio_seconds": 0,
"timed_out": false
}Persist a family's engine pick to prefs.json. Refuses unknown backends,
backends whose deps aren't installed, AND backends that cannot run on THIS
host's hardware (routing_status == "unavailable") — so the UI can't silently
brick a pipeline by picking an engine that needs a GPU this machine lacks.
A cpu_fallback pick is allowed (it runs, just slower) — only a hard
unavailable is blocked. LLM is never routing-gated (its status is "n/a").
Request Body
application/json
Response Body
application/json
application/json
curl -X POST "https://example.com/engines/select" \
-H "Content-Type: application/json" \
-d '{
"family": "string",
"backend_id": "string"
}'{
"family": "string",
"active": "string",
"env_override": true,
"routing_status": "cpu_only",
"effective_device": "cpu",
"routing_reason": "string"
}Catalogue every known model + its on-disk install state.
Uses a 10 s response cache to avoid repeated scan_cache_dir() disk
walks when the frontend polls.
Response Body
application/json
curl -X GET "https://example.com/models"nullDownload one HF repo snapshot; progress goes through the shared
/setup/download-stream SSE feed.
Request Body
application/json
Response Body
application/json
application/json
curl -X POST "https://example.com/models/install" \
-H "Content-Type: application/json" \
-d '{
"repo_id": "string"
}'nullRequest cancellation of an in-flight install (FDL-11).
Best-effort: stops further retry attempts and marks the row cancelled. A single in-flight snapshot_download/Xet fetch isn't interruptible mid-file in hf_hub 1.7.2, so an already-streaming file finishes; the cancel takes effect at the next retry boundary. Clears the cooldown so the user can immediately restart.
Request Body
application/json
Response Body
application/json
application/json
curl -X POST "https://example.com/models/install/cancel" \
-H "Content-Type: application/json" \
-d '{
"repo_id": "string"
}'nullRemove every cached revision of a repo from the HF cache.
Path Parameters
Response Body
application/json
application/json
curl -X DELETE "https://example.com/models/string"null