The same API the canvas UI uses. JSON over HTTP, served on `health_check_port` (default
`3000`).

| Method & path | Description |
| --- | --- |
| `GET /api/health` / `/api/ready` | Liveness / readiness + poller status. |
| `GET /api/sources` | Configured sources + live status. |
| `POST /api/sources/{key}/inject` | Manually fire an inject source. |
| `GET /api/transform` | Transform caps + default + routes. |
| `GET/PUT /api/transform/default` | Read / hot-replace the default route. |
| `GET/PUT/DELETE /api/transform/routes/{key}` | Manage a per-source route. |
| `POST /api/transform/validate` | Syntax-check a candidate script (JS or DSL). |
| `POST /api/transform/test` | Dry-run a script against a sample record. |
| `POST /api/transform/generate` | AI-generate a transform from a description. |
| `GET /api/devices` / `/api/data` | Known devices + recent retained events. |
| `GET /api/flows` / `PUT /api/flows/{id}` | Canvas flow layouts. |
| `GET /api/config` / `/api/config/reload` | Read / hot-reload `config.yaml`. |
| `GET /api/obs/{traces,series,alerts}` | Native traces, history, alerts. |
| `GET /metrics` | Prometheus scrape endpoint. |
| `WS /api/ws/live` | Live event stream (canvas preview). |