TriportRPC

List EL mesh hosts

GEThttps://api.triport.io/v1/eth/leak-mesh/hosts

Returns the live roster of Ethereum execution-layer (EL) hosts that back the leak-mesh, each with health, sync state, and current block height.

Ethereumbasic+ (category eth_leak_mesh); RPS-per-tier with 2× burst

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:

FieldTypeDescription
hoststringStable host identifier (e.g. el-host-7). Pass this to the per-host proxy endpoint. Required.
healthybooleanWhether the host is currently serving traffic. Required.
block_heightinteger (int64)Latest block height the host has imported.
sync_statestring enumOne of synced, syncing, lagging.
last_checkstring (date-time)Timestamp of the most recent health probe (RFC 3339 / ISO 8601, UTC).
observed_rps_ceilingnumber (double)Measured sustainable requests-per-second ceiling for this host.

Errors

CodeerrorMeaningWhen it happens
401unauthorized / trial_expired / subscription_expiredMissing, invalid, or expired credentialsNo Authorization header, bad key, or lapsed plan.
403tier_insufficientCaller's tier is below basicKey is on free; response includes current_tier / required_tier.
403method_unknownMethod not part of the caller's productKey is scoped to a product that excludes leak-mesh.
429rate_limitedSustained RPS for eth_leak_mesh exceededIncludes 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" or healthy: false should be excluded from routing — its observed_rps_ceiling is typically reported as 0.
  • Related endpoints: GET /v1/eth/leak-mesh/health for aggregate mesh metrics, and POST /v1/eth/leak-mesh/proxy/{host} (pro+) to forward a one-shot JSON-RPC call through a specific host from this list.