> ## Documentation Index
> Fetch the complete documentation index at: https://docs.radion.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Connection state

> How Radion stays connected to the chain, heartbeats, and the health endpoint.

## Staying connected to the chain

Radion does the hard part of staying connected to the blockchain for you.

Behind the scenes, Radion keeps a live link to a Polygon node to read events as they happen. If that link ever drops — a node restart, a network blip, a provider hiccup — Radion notices and reconnects on its own. Once it is back, it re-subscribes to everything by itself.

Your subscriptions stay valid the whole time. You do not need to resubscribe. During an outage the stream just goes quiet, then events come back when the connection recovers.

## Health endpoint

You can check the connection status any time:

```http theme={null}
GET /health
```

```json theme={null}
{ "data": { "status": "ok", "at": "2026-06-21T12:00:00Z" } }
```

* `status: "ok"` — connected to the chain, events are flowing.
* `status: "degraded"` — reconnecting, events are paused for a short time.

`/health` always answers `200`. Read the `status` field for the real signal, not the HTTP code.

## Heartbeats

Radion sends a protocol-level WebSocket ping about every 30 seconds. Your client should answer with a pong. Standard WebSocket libraries do this for you. If Radion sees no traffic from your client for about 75 seconds, it closes the connection as dead.

This is not the same as the app-level [`ping` message](/websockets/subscribe#ping) you can send to get a `pong` frame back.

<Note>
  This is about Radion's connection to the blockchain. Your own connection to
  Radion is a separate thing. Your client should still reconnect if its socket
  closes or you get a [`lagged` error](/websockets/frames#error-frames), then
  resubscribe to your channels.
</Note>
