TriportRPC

Get per-host peer list

GEThttps://api.triport.io/v1/eth/intel/peer-graph/host/node-fra-07

Returns 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.

Ethereumenterprise; RPS-per-tier with burst (no daily cap)

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

hoststringrequired
Identifier of the host whose peer list to return. Echoed back as host in the response.

Response

Response fields

FieldTypeDescription
hoststringThe host that was queried (echoes the path param).
peersarrayList of peers connected to host.
peers[].peer_idstringStable identifier for the peer. Always present.
peers[].enodestringThe peer's enode:// URL.
peers[].clientstringDetected client name/version (e.g. geth/v1.13.14).
peers[].latency_msnumberObserved round-trip latency to the peer, in milliseconds.
peers[].directionstringConnection direction relative to host: inbound or outbound.

Errors

CodeMeaningWhen it happens
401unauthorized / trial_expired / subscription_expiredMissing, invalid, or expired credentials.
403tier_insufficient / method_unknownAuthenticated, but the key's tier is below enterprise.
404resource_not_foundNo peer data is known for the requested host.
429rate_limitedSustained 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_id is the only guaranteed field on each EthPeerInfo; enode, client, latency_ms, and direction may be absent for a peer that has not been fully fingerprinted yet.
  • direction here is binary (inbound / outbound). The aggregated peer-graph snapshot models edges differently and may also report bidirectional.
  • 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 host if it can contain characters that are not path-safe.