List EL mesh hosts
https://api.triport.io/v1/eth/leak-mesh/hostsReturns the live roster of Ethereum execution-layer (EL) hosts that back the leak-mesh, each with health, sync state, and current block height.
The leak-mesh is a pool of own Ethereum execution-layer hosts that Triport operates for high-throughput observability and per-host request routing. This endpoint returns the current roster as a flat JSON array — one entry per host — so you can see which hosts are healthy, how far each has synced, and the per-host observed RPS ceiling.
Use it to drive client-side host selection (for example, before calling the
per-host proxy endpoint), to surface mesh health in a dashboard, or to detect
hosts that have fallen behind the chain tip. For aggregate roll-ups (healthy
count, P50/P95 host RPS, total mesh headroom) use
GET /v1/eth/leak-mesh/health instead of computing
them from this list.
The endpoint takes no parameters and is not paginated — the full roster is returned on every call.
Parameters
None. This endpoint has no path params, query params, or request body.
Response
Response fields
Each array element is an EthLeakMeshHost object:
| Field | Type | Description |
|---|---|---|
host | string | Stable host identifier (e.g. el-host-7). Pass this to the per-host proxy endpoint. Required. |
healthy | boolean | Whether the host is currently serving traffic. Required. |
block_height | integer (int64) | Latest block height the host has imported. |
sync_state | string enum | One of synced, syncing, lagging. |
last_check | string (date-time) | Timestamp of the most recent health probe (RFC 3339 / ISO 8601, UTC). |
observed_rps_ceiling | number (double) | Measured sustainable requests-per-second ceiling for this host. |
Errors
| Code | error | Meaning | When it happens |
|---|---|---|---|
| 401 | unauthorized / trial_expired / subscription_expired | Missing, invalid, or expired credentials | No Authorization header, bad key, or lapsed plan. |
| 403 | tier_insufficient | Caller's tier is below basic | Key is on free; response includes current_tier / required_tier. |
| 403 | method_unknown | Method not part of the caller's product | Key is scoped to a product that excludes leak-mesh. |
| 429 | rate_limited | Sustained RPS for eth_leak_mesh exceeded | Includes retry_after_sec, limit_rps, and a Retry-After header. |
All error bodies share the standard envelope (error, message, request_id).
See Errors for the full envelope and per-code fields.
Examples
JavaScript (fetch)
const res = await fetch("https://api.triport.io/v1/eth/leak-mesh/hosts", {
headers: {
Authorization: `Bearer ${process.env.TRIPORT_API_KEY}`,
},
});
if (!res.ok) throw new Error(`leak-mesh hosts failed: ${res.status}`);
const hosts = await res.json();
const healthy = hosts.filter((h) => h.healthy && h.sync_state === "synced");
console.log(`${healthy.length}/${hosts.length} hosts synced & healthy`);TypeScript SDK (@triport/sdk)
import { TriportClient } from "@triport/sdk";
const client = new TriportClient({ apiKey: process.env.TRIPORT_API_KEY! });
const hosts = await client.eth.leakMesh.listHosts();
for (const h of hosts) {
console.log(`${h.host}: ${h.sync_state} @ block ${h.block_height} (${h.observed_rps_ceiling} rps)`);
}Python (triport-sdk)
import os
from triport import TriportClient
client = TriportClient(api_key=os.environ["TRIPORT_API_KEY"])
hosts = client.eth.leak_mesh.list_hosts()
synced = [h for h in hosts if h.healthy and h.sync_state == "synced"]
print(f"{len(synced)}/{len(hosts)} hosts synced & healthy")Notes
- The roster is not paginated; expect the complete set of mesh hosts on every call. Cache the result for a short window rather than polling per request.
- A host with
sync_state: "lagging"orhealthy: falseshould be excluded from routing — itsobserved_rps_ceilingis typically reported as0. - Related endpoints:
GET /v1/eth/leak-mesh/healthfor aggregate mesh metrics, andPOST /v1/eth/leak-mesh/proxy/{host}(pro+) to forward a one-shot JSON-RPC call through a specific host from this list.