Status endpoint
GET /v1/status is public and costs 0. It reports whether new fetches can run, plus relay, translation, capacity, serving-strategy, and canary state. It never returns relay addresses, credentials, proxy byte totals, or customer data.
curl https://api.scripthaul.com/v1/status
status: "degraded" means new cold work is impaired or paused. Cached transcript reads may still work. Translation shedding does not by itself mark all plain transcript delivery degraded.
The page at api.scripthaul.com/status renders this endpoint. Its latency object reports the rolling 24-hour p50 and p95 upper bounds after 20 authenticated API-request observations. The values come from privacy-safe five-minute D1 histograms of measured Worker handling time; per-request events remain in Workers Analytics Engine. transcript_cache_hits contains successful responses explicitly labelled HIT; transcript_cold contains successful deliveries and bounded 202 hand-offs explicitly labelled MISS. Errors remain in the honest all-request measurement but in neither transcript cohort, so a validation or outage response cannot masquerade as cold-fetch latency. Before the minimum sample count, the percentile values are null and the page says it is still collecting measurements.
Read health in four languages
Status is public: none of these requests sends a credential. Maintained runnable variants are in the examples directory.
curl https://api.scripthaul.com/v1/status
import json, urllib.request
with urllib.request.urlopen("https://api.scripthaul.com/v1/status") as response:
status = json.load(response)
print(status["status"], status["capacity"])
const response = await fetch("https://api.scripthaul.com/v1/status");
const status = await response.json();
console.log(status.status, status.capacity);
response, err := http.Get("https://api.scripthaul.com/v1/status")
if err != nil { log.Fatal(err) }
defer response.Body.Close()
io.Copy(os.Stdout, response.Body)