---
title: "Health check"
method: GET
path: "/health"
tags: ["Health"]
---

# Health check

`GET /health`

## Request

- Base URL: `https://agent.getaxonflow.com`
- URL: `https://agent.getaxonflow.com/health`
- Auth: none declared
- TypeScript: <https://skmtc.dev/getaxonflow/apis/axonflow-agent-api/docs/health/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns service health status. During startup, returns `status: starting`.
Once fully initialized, returns `status: healthy`.

This endpoint responds immediately even during initialization, allowing
ECS/ALB health checks to pass while the service starts up.

## Response `200`

Service health status

- HealthResponse
  - `status` 'healthy' | 'starting': Service health status (the handler emits only these two)
  - `service` string
  - `timestamp` string, date-time
  - `version` string: Platform version from AXONFLOW_VERSION env var
  - `tier` string: License tier of the deployment (e.g. community, evaluation, enterprise)
  - `capabilities` PlatformCapability[]: List of platform capabilities with the version that introduced them
    - `name` string: Capability identifier
    - `since` string: Platform version that introduced this capability
    - `description` string: Human-readable description
  - `sdk_compatibility` SDKCompatInfo: SDK version compatibility information. Each key in the maps below is one of `python` / `typescript` / `go` / `java` / `rust`. SDKs that find their own runtime version below `min_sdk_version[<their lang>]` log a one-time upgrade warning; below `recommended_sdk_version` is informational only. The examples below are the values this platform actually serves. They are not illustrative: a regression test compares them against platform/shared/sdkcompat, the single source of truth both /health planes read, so a stale example fails CI rather than misleading a reader.
    - `min_sdk_version` object: Per-language minimum SDK version compatible with this platform. Pre-v4.8.0 platforms returned a bare string; SDKs v6.0.0+ accept either shape.
    - `recommended_sdk_version` object: Per-language SDK version this platform was tested against.
  - `plugin_compatibility` PluginCompatInfo: Plugin version compatibility information. Mirrors `SDKCompatInfo` for the seven AxonFlow clients (`openclaw`, `claude-code`, `cursor`, `codex`, `claude-desktop`, `n8n`, `google-adk`). The first four read this from `/health` and warn when their runtime version is below `min_plugin_version[<their id>]`. Keys match the canonical plugin IDs the agent tracks in `integration_activation.go::knownIntegrations`. The examples below are the values this platform actually serves. They are not illustrative: a regression test compares them against platform/shared/plugincompat, the single source of truth both /health planes read, so a stale example fails CI rather than misleading a reader.
    - `min_plugin_version` object: Per-plugin minimum version compatible with this platform.
    - `recommended_plugin_version` object: Per-plugin version this platform was tested against.
  - `upstream` object: Whether the orchestrator has answered this agent since the process started (#4249 row 5681489141): `reached` from its first HTTP response of any status, `unreached` before. Until it is reached, a connection the orchestrator refuses is not counted against the client's circuit breaker. Informational only: `status` and the HTTP code do not read it.
    - `orchestrator` 'reached' | 'unreached'

---

[API](https://skmtc.dev/getaxonflow/apis/axonflow-agent-api.md) - [All operations](https://skmtc.dev/getaxonflow/apis/axonflow-agent-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getaxonflow/apis/axonflow-agent-api/revisions/34d30fcb7fa1?raw)
