Get per-host peer list
https://api.triport.io/v1/eth/intel/peer-graph/host/node-fra-07Returns the live peer neighborhood of a single Ethereum execution-layer host — every peer it is connected to, with client fingerprint, observed latency, and connection direction.
This endpoint resolves a single host into its peer list: the set of
execution-layer nodes it is currently peering with. For each peer you get a
stable peer_id, its enode URL, the detected client string, a measured
round-trip latency_ms, and whether the connection is inbound or outbound
from the queried host's perspective.
Use it to drill into one node after spotting it in the aggregated peer-graph snapshot — for example to confirm a validator's upstream connectivity, audit client diversity around a specific node, or trace how a host is wired into the wider mesh.
This is derived intelligence and is enterprise-only. The {host} path
segment identifies the node whose neighbors you want; if the platform has no
observed peer data for that host, the request returns 404.
Parameters
Path parameters
hoststringrequiredhost in the response.Response
Response fields
| Field | Type | Description |
|---|---|---|
host | string | The host that was queried (echoes the path param). |
peers | array | List of peers connected to host. |
peers[].peer_id | string | Stable identifier for the peer. Always present. |
peers[].enode | string | The peer's enode:// URL. |
peers[].client | string | Detected client name/version (e.g. geth/v1.13.14). |
peers[].latency_ms | number | Observed round-trip latency to the peer, in milliseconds. |
peers[].direction | string | Connection direction relative to host: inbound or outbound. |
Errors
| Code | Meaning | When it happens |
|---|---|---|
401 | unauthorized / trial_expired / subscription_expired | Missing, invalid, or expired credentials. |
403 | tier_insufficient / method_unknown | Authenticated, but the key's tier is below enterprise. |
404 | resource_not_found | No peer data is known for the requested host. |
429 | rate_limited | Sustained RPS for your tier exceeded; see Retry-After. |
A 403 for tier gating carries current_tier, required_tier, and an
upgrade_url; the X-Required-Tier response header mirrors required_tier.
A 429 carries retry_after_sec, limit_rps, and current_tier, alongside
the Retry-After and X-RateLimit-* headers. See the shared
errors reference for the full envelope.
Examples
JavaScript (fetch)
const host = "node-fra-07";
const res = await fetch(
`https://api.triport.io/v1/eth/intel/peer-graph/host/${encodeURIComponent(host)}`,
{ headers: { Authorization: `Bearer ${process.env.TRIPORT_API_KEY}` } }
);
if (!res.ok) throw new Error(`${res.status} ${(await res.json()).error}`);
const { peers } = await res.json();
console.log(`${host} has ${peers.length} peers`);TypeScript SDK (@triport/sdk)
import { Triport } from "@triport/sdk";
const triport = new Triport({ apiKey: process.env.TRIPORT_API_KEY! });
const { host, peers } = await triport.eth.intel.peerGraph.host("node-fra-07");
for (const p of peers) {
console.log(`${p.direction.padEnd(8)} ${p.client} ${p.latency_ms}ms`);
}Python (triport-sdk)
import os
from triport import Triport
triport = Triport(api_key=os.environ["TRIPORT_API_KEY"])
result = triport.eth.intel.peer_graph.host("node-fra-07")
for peer in result["peers"]:
print(f'{peer["direction"]:<8} {peer["client"]} {peer["latency_ms"]}ms')Notes
peer_idis the only guaranteed field on eachEthPeerInfo;enode,client,latency_ms, anddirectionmay be absent for a peer that has not been fully fingerprinted yet.directionhere is binary (inbound/outbound). The aggregated peer-graph snapshot models edges differently and may also reportbidirectional.- The response is a point-in-time view of the mesh as last observed; there is no pagination — all known peers for the host are returned in one array.
- URL-encode
hostif it can contain characters that are not path-safe.