# List health

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

> Reports that the plans subsystem is mounted and serving.

`GET /v1/plan/health`

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

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

Reports that the plans subsystem is mounted and serving. It answers from
the process itself and consults neither the catalog bundle nor the goja host,
so it stays "ok" while either is degraded.

## Request

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

## Response

| Status    | Body            | Meaning |
| --------- | --------------- | ------- |
| `200`     | plan.planHealth | ok      |
| `default` | problem-details | refused |

`200` body — 2 fields.

| Field     | In   | Type   | Always | Description                                        |
| --------- | ---- | ------ | ------ | -------------------------------------------------- |
| `service` | body | string | —      | Service names the subsystem that answered.         |
| `status`  | body | string | —      | Status is "ok" whenever this subsystem is mounted. |

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

## Examples

**CLI**

```bash
hanzo plan health
```

**SDK**

**.ts**

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

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

**.py**

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

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

**.go**

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

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

**.rs**

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

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

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

**.java**

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

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

var result = new PlanApi(client).getPlanHealth();
```

**HTTP**

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

**MCP**

Tool `plan`, op `get_plan_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": "plan",
         "arguments": {
           "op": "get_plan_health",
           "input": {}
         }
       }
     }'
```

---

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