# List health

URL: https://docs.hanzo.ai/docs/openapi/experiment/get-experiment-health

> Whether the experiments subsystem is mounted and serving in this process.

`GET /v1/experiment/health`

> [Experiment →](https://docs.hanzo.ai/docs/openapi/experiment) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                             |
| ------------- | ------------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/experiment/health` |
| **Method**    | `GET`                                       |
| **Operation** | `get_experiment_health`                     |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY`      |

Whether the experiments subsystem is mounted and serving in this
process.

It answers unconditionally. It proves exactly one thing — that this binary
registered the experiments routes and is dispatching them — and deliberately no
more: it reads no principal, opens no per-org registry, and touches neither the
flags engine nor the analytics plane, so a 200 here says nothing about whether a
given tenant's store will open or whether an analysis can run. It is the only
route on this surface that needs no org.

The static path is registered ahead of the /:id read, so it always wins the
first-match scan. "health" is a legal experiment id, which means an experiment
created under that id can never be fetched by id — pick another.

## Request

`GET /v1/experiment/health` takes no parameters and no body — the credential is the whole request.

## Response

| Status    | Body              | Meaning |
| --------- | ----------------- | ------- |
| `200`     | experiment.health | ok      |
| `default` | problem-details   | refused |

`200` body — 2 fields.

| Field       | In   | Type    | Always | Description                                                                                                                      |
| ----------- | ---- | ------- | ------ | -------------------------------------------------------------------------------------------------------------------------------- |
| `ok`        | body | boolean | —      | OK is true whenever this route answers at all: reaching the handler IS the proof that the routes are registered and dispatching. |
| `subsystem` | body | string  | —      | Subsystem names what answered, so a health response read out of context still says which surface it came from.                   |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

```bash
hanzo experiment health
```

**SDK**

**.ts**

```ts
import { Configuration, ExperimentApi } from 'hanzoai';

const api = new ExperimentApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getExperimentHealth();
```

**.py**

```python
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import ExperimentApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = ExperimentApi(client).get_experiment_health()
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.ExperimentAPI.GetExperimentHealth(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
use hanzo_client::apis::{configuration::Configuration, experiment_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = experiment_api::get_experiment_health(&cfg, Default::default()).await?;
```

**.java**

```java
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.ExperimentApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new ExperimentApi(client).getExperimentHealth();
```

**HTTP**

```bash
curl https://api.hanzo.ai/v1/experiment/health \
  -H "Authorization: Bearer $HANZO_API_KEY"
```

**MCP**

Tool `experiment`, op `get_experiment_health` — POST the JSON-RPC envelope to `https://api.hanzo.ai/v1/mcp`.

```bash
curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "experiment",
         "arguments": {
           "op": "get_experiment_health",
           "input": {}
         }
       }
     }'
```

---

[Experiment API](https://docs.hanzo.ai/docs/openapi/experiment) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
