Health & metrics GET¶
| Endpoint | Response | Use |
|---|---|---|
GET /healthz |
200 {"ok":true,"uptime_s":1234,"workers_ready":4,"workers":4} |
process is up |
GET /readyz |
200 ready when every worker is warm, else 503 workers warming up |
load-balancer and your own checks |
GET /metrics |
Prometheus text format | scraping |
No key is needed for these three.
Metrics¶
| Metric | Type | Meaning |
|---|---|---|
vtts_streams_active |
gauge | synthesis streams running right now |
vtts_queue_depth |
gauge | requests waiting for a worker |
vtts_workers |
gauge | worker threads (one stream each) |
vtts_requests_total{endpoint,status} |
counter | by tts / ws and status code |
vtts_errors_total{kind} |
counter | busy, queue_timeout, engine |
vtts_ttfa_seconds{scope="engine"} |
histogram | engine-side time to first audio (worker pickup → first frame) |
vtts_rtf{scope="stream"} |
histogram | wall seconds per audio second per stream |
vtts_audio_seconds_total |
counter | audio synthesised |
vtts_chars_total |
counter | normalised characters synthesised |
vtts_prefill_cache_hits_total, vtts_prefill_cache_misses_total |
counter | text prefill cache |
Per-customer usage (what you see in the portal) comes from the server's request log, not from these aggregate metrics.