Failover
Provider failover (#806): state of the LLM A/B and transcriber failover targets, manual trigger/cancel, and on-demand health probes.
GET /failover
Section titled “GET /failover”Get failover state, probes, policy, and recent events
Snapshot of the three failover targets (llm-a, llm-b, transcriber), the five health probes that drive them (llm-a, llm-b, llm-failover, transcriber, transcriber-failover), the auto-trigger/recovery policy, and the most recent manual/auto/probe events (#806). Reads committed control state without running health probes.
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Failover overview | FailoverOverview |
POST /failover/{target}/trigger
Section titled “POST /failover/{target}/trigger”Manually trigger failover for one target
Switches target onto its failover configuration. Fails with 409 when the target’s failover config is not set up, so a manual trigger can never land on an endpoint with nowhere to go.
Parameters
Section titled “Parameters”target(path, string, one ofllm-a,llm-b,transcriber, required)
Request body (application/json)
Section titled “Request body (application/json)”reason(string): Free-text note recorded on the failover event.
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Triggered (or already active) | object |
| 400 | Invalid JSON body or non-string reason | |
| 404 | Unknown failover target | |
| 409 | Target has no failover configuration (error: failover_not_configured), or llm-b is disabled (error: failover_target_disabled) | |
| 503 | State could not be saved (error: failover_transition_failed) |
200 response body
Section titled “200 response body”target(string)state(FailoverTargetState)
POST /failover/{target}/cancel
Section titled “POST /failover/{target}/cancel”Manually cancel failover for one target
Switches target back onto its original configuration.
Parameters
Section titled “Parameters”target(path, string, one ofllm-a,llm-b,transcriber, required)
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Cancelled (or already inactive) | object |
| 404 | Unknown failover target | |
| 503 | State could not be saved (error: failover_transition_failed) |
200 response body
Section titled “200 response body”target(string)state(FailoverTargetState)
POST /failover/probe
Section titled “POST /failover/probe”Run an on-demand health probe of every enabled target
Probes every currently enabled target (see enabled_probe_targets), records the result, and applies the same auto-trigger/auto-recovery rules as the background probe tick. A local transcription diagnostic decode requested from a web request is never run inline: it is handed to the background worker to run on its next tick, and this response carries that target’s last stored verdict instead of a fresh one.
Responses
Section titled “Responses”| Status | Description | Body |
|---|---|---|
| 200 | Updated probe states | object |
200 response body
Section titled “200 response body”probes(map of FailoverProbe)