2026-06-18 08:25:00 +02:00
---
title : Health & Stats
2026-07-10 08:31:54 +02:00
description : GET /, GET /health and GET /stats — status and monitoring endpoints.
2026-06-18 08:25:00 +02:00
---
# Health & Stats
2026-07-10 08:31:54 +02:00
These endpoints require no authentication and are safe to expose to monitoring tools.
---
## `GET /`
FlareSolverr-style readiness message — confirms the API process is up (does not wait on the browser pool).
### Response
```json
{
"msg" : "TRAWL is ready!" ,
2026-08-10 19:21:14 +02:00
"version" : "1.4.0" ,
2026-07-10 08:31:54 +02:00
"uptime" : 42
}
```
### Curl
```bash
curl -s http://localhost:8191/
```
2026-06-18 08:25:00 +02:00
---
## `GET /health`
Full system health check. Used by Docker Compose health checks and monitoring systems.
### Response
```json
{
"status" : "ok" ,
"uptime" : 3842 ,
"pool" : {
"total" : 5 ,
"busy" : 1 ,
"available" : 4 ,
"restarts" : 0 ,
2026-07-27 02:40:41 +02:00
"avgRestarts" : 0 ,
"stalled" : 0 ,
"live" : 5
2026-06-18 08:25:00 +02:00
}
}
```
2026-07-11 17:00:29 +02:00
| Field | Type | Description |
| ------------------ | ------ | ---------------------------------------- |
2026-07-27 02:40:41 +02:00
| `status` | string | `"ok"` when the pool has live capacity; otherwise `"starting"` |
2026-07-11 17:00:29 +02:00
| `uptime` | number | Seconds since the API process started |
| `pool.total` | number | Total browser instances in the pool |
| `pool.busy` | number | Browsers currently processing a request |
| `pool.available` | number | Browsers ready to accept a request |
| `pool.restarts` | number | Total browser restarts since worker boot |
| `pool.avgRestarts` | number | Average restarts per browser |
2026-07-27 02:40:41 +02:00
| `pool.stalled` | number | Checked-out browsers past their deadline |
| `pool.live` | number | Connected, non-stalled browser capacity |
2026-06-18 08:25:00 +02:00
2026-07-27 02:40:41 +02:00
`/health` returns HTTP 503 while the pool is warming up or has no live browser capacity. A saturated but healthy pool remains ready because active, connected requests still count as live.
2026-06-18 08:25:00 +02:00
### Curl
```bash
curl -s http://localhost:8191/health | jq
```
---
## `GET /stats`
Lightweight public stats for dashboards and landing pages.
### Response
```json
{
"browsers" : 5 ,
"available" : 4 ,
"busy" : 1 ,
2026-07-27 02:40:41 +02:00
"restarts" : 0 ,
"stalled" : 0 ,
"live" : 5
2026-06-18 08:25:00 +02:00
}
```
2026-07-11 17:00:29 +02:00
| Field | Type | Description |
| ----------- | ------ | ------------------------------------ |
| `browsers` | number | Total browser pool size |
| `available` | number | Idle browsers |
| `busy` | number | Browsers in use |
| `restarts` | number | Total browser restarts since startup |
2026-07-27 02:40:41 +02:00
| `stalled` | number | Checked-out browsers past their deadline |
| `live` | number | Connected, non-stalled browser capacity |
2026-06-18 08:25:00 +02:00
### Curl
```bash
curl -s http://localhost:8191/stats | jq
```
### Prometheus / uptime monitoring
2026-07-11 17:00:29 +02:00
Point an uptime monitor (e.g. UptimeRobot, Uptime Kuma) at `/health` . A 200 response with `"status": "ok"` confirms full operation.
2026-06-18 08:25:00 +02:00
For Prometheus, scrape `/stats` and parse the JSON — or add a `/metrics` endpoint as a future extension.