# Status

> How to read megachad's live status. The page https://megachadcua.com/status is live data; these JSON endpoints are its source.

The page at https://megachadcua.com/status draws live data from two public JSON endpoints. No key needed. Read them directly; they are the status.

```bash
curl https://api.megachadcua.com/v1/status
```

Response (200, cached 10 s):

```json
{"model": "up", "voice": "up", "slots": 3, "in_use": 1, "free": 2, "demo": true, "today": {"decisions": 1834, "fastest_ms": 14.2}}
```

- `model`: the text model behind `/v1/decide`. `"up"`, `"down"` or `"unconfigured"`.
- `voice`: speech recognition (audio on `/v1/listen`). `"up"`, `"down"` or `"unknown"` (not checked yet). Checked every 5 minutes and by live sessions. It can be `"down"` while `model` is `"up"`: then send text (`/v1/decide`, or `text` frames on the socket). Always `"down"` while `model` is.
- `slots`, `in_use`, `free`: voice slots in total, taken, open. `free: 0` means new voice sessions wait in line. Text decisions have their own pool and don't use these. `slots` and `free` are `null` when there's no cap.
- `demo`: whether the keyless demo on the site is on.
- `today`: calls served since midnight UTC and the fastest model time in ms (`null` before the first).
- Other keys may appear; ignore keys you don't know.

Before a burst of work, an agent can check `model == "up"` (and `voice` for audio). Don't poll it to decide whether to retry a single call; retry with backoff instead.

```bash
curl "https://api.megachadcua.com/v1/status/history?days=2"
```

Response (200, cached 60 s):

```json
{
  "days": [{"date": "2026-10-09", "up_pct": 100, "checks": 288}, {"date": "2026-10-10", "up_pct": 99.65, "checks": 288}],
  "last24h": [{"at": 1791374700000, "model": "up", "voice": "up", "decide_p50_ms": 96}],
  "incidents": [{"start": 1791331200000, "end": 1791332700000, "minutes": 25}],
  "voice": {"days": [{"date": "2026-10-09", "up_pct": 100, "checks": 288}, {"date": "2026-10-10", "up_pct": 100, "checks": 288}], "incidents": []}
}
```

- `days` (1 to 90, default 90): oldest first, UTC days, today last. `up_pct` is the share of 5-minute checks that found the model up; `null` on a day with no checks.
- `last24h`: every check in the last 24 hours. `decide_p50_ms`: median wall time of `/v1/decide` calls in that 5-minute window, `null` when none finished.
- `incidents`: the latest 10 runs of failed checks, newest first. Times are ms since the epoch. `end` is `null` while it's still down.
- `voice`: the same for speech recognition.

Incidents as RSS: https://megachadcua.com/status.rss.
