<div class="docs-content" data-render>
# Reading service data
This page is the answer to "what are the AI statistics of the services that are running?" Live status and metrics for every background service are available over HTTP, admin-only, and refreshed every few seconds from the `service_state` table. See also the [Services overview](/docs/services.html).
> Audience: administrators and maintainers. All endpoints here require an administrator; non-admins get redirected or a 403.
## All services at once
```
GET /admin/services/data
```
Returns `{ "services": [ ... ] }` where each entry is the service's full `describe()`:
| Field | Meaning |
|-------|---------|
| `name` | Internal service name (`openai`, `devii`, `news`, `bots`). |
| `title`, `description` | Human labels. |
| `enabled` | Whether the service is configured to run. |
| `status` | `running`, `stopped`, or `stalled` (heartbeat older than 15s). |
| `interval_seconds` | Current run interval. |
| `last_run`, `next_run`, `heartbeat` | ISO timestamps. |
| `uptime` | Time since the service started, when running. |
| `log_buffer` | The recent log lines. |
| `metrics` | The service-specific data (see below). This is where the live AI statistics live. |
| `fields`, `field_groups` | The configuration specs. |
This single call is the right source when asked for the running statistics of all services. The per-service `metrics` block is the running AI statistics, already computed.
## One service
```
GET /admin/services/{name}/data
```
Returns `{ "service": { ... } }` with the same `describe()` shape for a single service, for example `GET /admin/services/openai/data` for the AI gateway or `GET /admin/services/devii/data` for the assistant.
## What is in each metrics block
The gateway and the bots report rich metrics; Devii reports session and spend counters; news reports none (its health is the status and log tail).
**`openai` (AI gateway)** reports a runtime block (`requests`, `errors`, `in_flight`, `peak_in_flight`, `vision_calls`, `last_status`, `last_latency_ms`, `pool`, `circuit_open`) and a rolled-up 24h summary (`requests`, `success_pct`, `error_pct`, `cost_hour`, `cost_24h`, `tokens_24h`, `avg_latency_ms`, `avg_tps`, `peak_concurrency`, `top_model`, `top_caller`). Presented as a labelled stats list.
**`devii`** reports a stats list: active sessions, open connections, 24h spend, the user/guest/admin caps, whether guests are allowed, and the model name.
**`bots`** reports a stats list (bots running, fleet cost, cost rate, projected 24h cost, LLM calls, tokens in and out, posts, comments, votes) plus a per-bot table (bot, user, persona, status, posts, comments, votes, calls, cost).
## Deeper AI analytics (gateway)
The headline gateway numbers are summaries. The full analytics, the same data shown on the `/admin/ai-usage` page, come from:
```
GET /admin/ai-usage/data
```
This returns the `GatewayUsageOut` payload: per-hour buckets, token and latency percentiles, error breakdowns, cost projections, top models and callers, and behavior stats. For one user's AI usage:
```
GET /admin/users/{uid}/ai-usage
```
For platform-wide counts (members, active windows, signups, totals, top authors):
```
GET /admin/analytics
```
## How Devii should answer service-stats questions
When asked about running services or their AI statistics, the answer is `GET /admin/services/data`, not the in-session cost tracker. The `cost_stats` tool reports only the current Devii conversation's token usage; it is not the platform's service statistics. For gateway depth use `GET /admin/ai-usage/data`; for platform counts use `GET /admin/analytics`. Devii can reach all three through its `http` action because the platform enforces admin access, not the agent.
## Controlling a service
Each of these is an admin POST and is mirrored by the buttons on `/admin/services/{name}`:
```
POST /admin/services/{name}/start
POST /admin/services/{name}/stop
POST /admin/services/{name}/run run once now
POST /admin/services/{name}/clear-logs
POST /admin/services/{name}/config save configuration fields
```
</div>