# List status

URL: https://docs.hanzo.ai/docs/openapi/ingress/get-ingress-status

> Reports the ingress edge's live posture: the role this instance runs in (app or edge), whether its listeners are bound and on which addresses, the ACME posture (staging flag and certificate cache directory), how many hosts the compiled route table currently serves, and how many the ACME HostPolicy will issue a certificate for.

`GET /v1/ingress/status`

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

|               |                                          |
| ------------- | ---------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/ingress/status` |
| **Method**    | `GET`                                    |
| **Operation** | `get_ingress_status`                     |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY`   |

Reports the ingress edge's live posture: the role this instance runs in
(app or edge), whether its listeners are bound and on which addresses, the ACME
posture (staging flag and certificate cache directory), how many hosts the
compiled route table currently serves, and how many the ACME HostPolicy will
issue a certificate for.

## Request

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

## Response

| Status    | Body                  | Meaning |
| --------- | --------------------- | ------- |
| `200`     | ingress.ingressStatus | ok      |
| `default` | problem-details       | refused |

`200` body — 9 fields.

| Field          | In   | Type            | Always | Description                                                                  |
| -------------- | ---- | --------------- | ------ | ---------------------------------------------------------------------------- |
| `acmeCacheDir` | body | string          | —      | ACMECacheDir is where autocert persists accounts and certificates.           |
| `acmeStaging`  | body | boolean         | —      | ACMEStaging is true when certificates are issued from Let's Encrypt staging. |
| `edgeEnabled`  | body | boolean         | —      | EdgeEnabled is true when the edge listeners are actually bound.              |
| `httpAddr`     | body | string          | —      | HTTPAddr is the address the ACME HTTP-01 + HTTP router listens on.           |
| `httpsAddr`    | body | string          | —      | HTTPSAddr is the address the SNI TLS terminator listens on.                  |
| `liveHosts`    | body | integer (int64) | —      | LiveHosts is how many hosts the compiled table routes.                       |
| `proxy`        | body | string          | —      | Proxy names the reverse-proxy implementation behind every route.             |
| `role`         | body | string          | —      | Role is "edge" when CLOUD\_INGRESS\_EDGE\_ENABLED is set, else "app".        |
| `tlsHosts`     | body | integer (int64) | —      | TLSHosts is how many hosts the ACME HostPolicy will issue a certificate for. |

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

## Examples

**CLI**

```bash
hanzo ingress status
```

**SDK**

**.ts**

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

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

**.py**

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

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

**.go**

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

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

**.rs**

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

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

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

**.java**

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

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

var result = new IngressApi(client).getIngressStatus();
```

**HTTP**

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

**MCP**

Tool `ingress`, op `get_ingress_status` — 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": "ingress",
         "arguments": {
           "op": "get_ingress_status",
           "input": {}
         }
       }
     }'
```

---

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