# GET /v1/xrpl/health

Overall and per-node health of the upstream XRPL nodes (alias of network health).

## Purpose

The same view as the network-health page, served from stored probe samples, with no call to the nodes.

## When to use

A short alias when you only need the service status.

## When not to use

To see a time series use the health-history page.

## Parameters

This endpoint takes no parameters.

## Request example

```sh
curl -s "https://api.criptonlabs.com/v1/xrpl/health"
```

## Response example (200)

```json
{
  "status": "degraded",
  "nodes": [
    {
      "member": "ripple-s1",
      "state": "up",
      "latency_ms": 180,
      "ledger_index": 100234566,
      "ledger_age_s": 2,
      "load_factor": 1,
      "error": null,
      "sampled_at": "2026-10-06T12:00:00.000Z"
    },
    {
      "member": "honeycluster",
      "state": "down",
      "latency_ms": null,
      "ledger_index": null,
      "ledger_age_s": null,
      "load_factor": null,
      "error": "timeout",
      "sampled_at": "2026-10-06T12:00:00.000Z"
    }
  ],
  "ledger_index": 100234566,
  "last_probe_at": "2026-10-06T12:00:00.000Z",
  "meta": {
    "ledger_index": 100234566,
    "as_of": "2026-10-06T12:00:03.000Z",
    "age_seconds": 1,
    "cache": "hit",
    "stale": false
  }
}
```

## Errors

- 429 [rate-limited](https://api.criptonlabs.com/errors/rate-limited.md)
- 503 [upstream-unavailable](https://api.criptonlabs.com/errors/upstream-unavailable.md)

## Caching

Fresh for 4 seconds; on upstream failure the last good value is served for up to 60 seconds (`meta.stale` is `true`), then the service answers 503. See the [freshness guide](https://api.criptonlabs.com/docs/guides/freshness.md).

## Rate limit

Tier `cheap`. See the [rate-limits guide](https://api.criptonlabs.com/docs/guides/rate-limits.md).

## MCP tool

There is no MCP tool for this endpoint; use REST.
