> For the complete documentation index, see [llms.txt](https://docs.getblock.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.getblock.io/api-reference/polkadot-dot/polkadot-json-rpc-api-relaychain/system_health-polkadot.md).

# system\_health - Polkadot

Example code for the system\_health JSON RPC method. Complete guide on how to use system\_health JSON RPC in GetBlock Web3 documentation.

This method returns the health of the node, including its peer count, whether it is syncing, and whether it is expected to have peers.

## Parameters

This method does not accept any parameters.

## Request

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --location --request POST 'https://shared.eu-central-1.getblock.io/<ACCESS-TOKEN>/' \
--header 'Content-Type: application/json' \
--data-raw '{"jsonrpc": "2.0", "method": "system_health", "params": [], "id": "getblock.io"}'
```

{% endcode %}
{% endtab %}

{% tab title="JavaScript" %}
{% code title="example.js" %}

```javascript
const response = await fetch('https://shared.eu-central-1.getblock.io/<ACCESS-TOKEN>/', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
        jsonrpc: '2.0',
        method: 'system_health',
        params: [],
        id: 'getblock.io'
    })
});

const data = await response.json();
console.log(data.result);
```

{% endcode %}
{% endtab %}

{% tab title="Python" %}
{% code title="example.py" %}

```python
import requests

response = requests.post(
    'https://shared.eu-central-1.getblock.io/<ACCESS-TOKEN>/',
    headers={'Content-Type': 'application/json'},
    json={
        'jsonrpc': '2.0',
        'method': 'system_health',
        'params': [],
        'id': 'getblock.io'
    }
)

print(response.json()['result'])
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Response

```json
{
    "id": "getblock.io",
    "jsonrpc": "2.0",
    "result": {
        "isSyncing": false,
        "peers": 21,
        "shouldHavePeers": true
    }
}
```

## Response Parameters

| Parameter | Type   | Description                             |
| --------- | ------ | --------------------------------------- |
| id        | string | Request identifier matching the request |
| jsonrpc   | string | JSON-RPC protocol version ("2.0")       |
| result    | object | Node health object                      |

### Result Object

| Field           | Type    | Description                                |
| --------------- | ------- | ------------------------------------------ |
| peers           | integer | Number of connected peers                  |
| isSyncing       | boolean | Whether the node is currently syncing      |
| shouldHavePeers | boolean | Whether the node is expected to have peers |

## Use Cases

* **Health Checks**: Confirm a node is connected and synced
* **Load Balancing**: Route away from syncing or peerless nodes
* **Monitoring**: Alert on low peer counts
* **Readiness Probes**: Gate traffic on node health

## Error Handling

| Error Code | Message          | Description                                            |
| ---------- | ---------------- | ------------------------------------------------------ |
| -32602     | Invalid params   | A parameter is missing or has the wrong type or format |
| -32601     | Method not found | The method is not available on this endpoint           |
| -32603     | Internal error   | The node failed to process the request                 |

## Library Integration

The idiomatic way to call Polkadot RPC is the Polkadot.js API (`@polkadot/api`), which connects over WebSocket and exposes the method as `api.rpc.system.health`.

{% code title="polkadot-js.js" %}

```javascript
import { ApiPromise, WsProvider } from '@polkadot/api';

const provider = new WsProvider('wss://shared.eu-central-1.getblock.io/<ACCESS-TOKEN>/');
const api = await ApiPromise.create({ provider });

const result = await api.rpc.system.health();
console.log(result.toHuman());
```

{% endcode %}
