{"status":"operational","service":"yt-transcript-studio","brand":"Toucora","generated_at":"2026-09-30T13:24:19.150Z","links":{"status_page":"/api/status","docs":"/api/docs","openapi":"/openapi.json","health":"/api/health","readiness":"/api/health/ready"},"objectives":[{"id":"availability","name":"API availability","target":"99.5% of requests succeed","objective":99.5,"unit":"percent","window":"30-day rolling","signal":"availability","met_when":"non_5xx_ratio >= 99.5%","description":"Share of API requests that return a response other than a 5xx, over a 30-day rolling window.","status":"monitored","current":null},{"id":"response_time","name":"Response time — cached and metadata endpoints","target":"p95 ≤ 500 ms","objective":500,"unit":"ms","window":"30-day rolling","signal":"latency","met_when":"p95 <= 500 ms","description":"Cached transcripts, /api/health, /api/plans and other metadata reads. Liveness must never block on a third-party call.","status":"monitored","current":null},{"id":"extraction_time","name":"Response time — uncached extraction","target":"p95 ≤ 8 s","objective":8000,"unit":"ms","window":"30-day rolling","signal":"latency","met_when":"p95 <= 8 s","description":"A first-time transcript extraction (YouTube caption fetch) for a single public video. Cached repeats are served from the response-time objective above.","status":"monitored","current":null},{"id":"egress_probe","name":"YouTube egress probe latency","target":"p95 ≤ 2,000 ms","objective":2000,"unit":"ms","window":"rolling probe","signal":"egress_probe_latency","met_when":"probe latency <= 2,000 ms","description":"Latency of the background egress probe reported at /api/health and /api/health/egress. A rising probe is an early warning that extraction will degrade.","status":"met","current":53},{"id":"extraction_failures","name":"Consecutive extraction failures","target":"0 (alert at 3)","objective":0,"unit":"consecutive_failures","window":"live","signal":"extraction_consecutive_failures","met_when":"consecutive_failures < 3","description":"Consecutive failed extractions before an operator alert fires. Any run of three is treated as a dependency incident, not a user error.","status":"met","current":0},{"id":"error_rate","name":"Server error rate","target":"< 1% of requests are 5xx","objective":1,"unit":"percent","window":"30-day rolling","signal":"error_rate","met_when":"5xx_ratio < 1%","description":"Share of API requests that return a 5xx. Expected extraction failures (blocked/unavailable videos) return a mapped 4xx and are not counted here.","status":"monitored","current":null},{"id":"liveness_latency","name":"Liveness response time","target":"≤ 100 ms","objective":100,"unit":"ms","window":"live","signal":"liveness","met_when":"liveness responds <= 100 ms","description":"GET /api/health and GET /api/health/ready must answer immediately; dependency state is reported, not awaited, on the liveness path.","status":"monitored","current":null}],"checks":{"liveness":"ok","readiness":"ok","egress":true},"egress":{"mode":"env_proxy","healthy":true,"last_probe":{"ok":true,"status":200,"reason":null,"checked_at":"2026-09-30T13:22:49.057Z","latency_ms":53},"extraction":{"consecutive_failures":0,"last_success_at":"2026-09-30T13:04:15.132Z","last_failure_at":null,"last_failure_code":null}},"active_alerts":[],"limits":{"plans":[{"key":"free","label":"Free","credits":10000,"rate_limit_per_min":120},{"key":"starter","label":"Starter","credits":1000,"rate_limit_per_min":240},{"key":"pro","label":"Pro","credits":10000,"rate_limit_per_min":600},{"key":"scale","label":"Scale","credits":50000,"rate_limit_per_min":1500},{"key":"enterprise","label":"Enterprise","credits":0,"rate_limit_per_min":3000}],"free_credits":10000,"free_rate_limit_per_min":120,"anonymous_credits_per_day":600,"batch_max_videos":50,"egress_probe_seconds":120,"failure_alert_threshold":3}}