Get time-series CL validator metrics
https://api.triport.io/v1/eth/intel/validator/seriesReturns a time-series of aggregated consensus-layer (CL) validator RPS ceilings, optionally filtered to a single client implementation.
This endpoint returns observed RPS-ceiling data points for Ethereum consensus-layer
clients over a time window. Each point is a (timestamp, rps_ceiling) pair, letting
you chart how the achievable request-rate ceiling for a given CL client implementation
has evolved.
Use it to drive dashboards, capacity-planning, or to compare client implementations (Prysm, Lighthouse, Nimbus, Teku) over time. For the latest single-snapshot view rather than a series, use the companion validator-state endpoint.
The window is bounded with since / until, and the number of returned points is
capped by limit (default 1000, max 10000). When you omit implementation, the series
covers the aggregate across all observed clients.
Parameters
All parameters are passed in the query string.
implementationstring (prysm | lighthouse | nimbus | teku)optionalsincestring (RFC 3339 date-time)optionaluntilstring (RFC 3339 date-time)optionallimitintegeroptional1–10000, default 1000.Response
Response fields
| Field | Type | Description |
|---|---|---|
implementation | string | The CL client implementation the series describes (echoes the request, or the aggregate label when no implementation filter was supplied). |
points | array | Ordered list of time-series data points. |
points[].t | string (RFC 3339 date-time) | Timestamp of the observation. |
points[].rps_ceiling | number (double) | Observed RPS ceiling at that timestamp. |
Errors
| Code | Meaning | When it happens |
|---|---|---|
401 | unauthorized / trial_expired / subscription_expired | Missing, invalid, or expired credentials. |
403 | tier_insufficient | Your key's tier is below business. The body includes current_tier, required_tier, and category (eth_validator_intel). |
429 | rate_limited | Sustained RPS for the eth_validator_intel category exceeded. The body includes retry_after_sec, limit_rps, and current_tier; the Retry-After and X-RateLimit-* headers carry the same budget. |
See the shared errors reference for the full error envelope
(error, message, request_id).
Examples
JavaScript (fetch)
const params = new URLSearchParams({
implementation: "prysm",
since: "2026-05-01T00:00:00Z",
until: "2026-05-29T00:00:00Z",
limit: "1000",
});
const res = await fetch(
`https://api.triport.io/v1/eth/intel/validator/series?${params}`,
{ headers: { Authorization: `Bearer ${process.env.TRIPORT_API_KEY}` } }
);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { implementation, points } = await res.json();
console.log(implementation, points.length, "points");TypeScript SDK (@triport/sdk)
import { Triport } from "@triport/sdk";
const client = new Triport({ apiKey: process.env.TRIPORT_API_KEY! });
const series = await client.eth.intel.validator.series({
implementation: "prysm",
since: "2026-05-01T00:00:00Z",
until: "2026-05-29T00:00:00Z",
limit: 1000,
});
console.log(series.implementation, series.points.length);Python (triport-sdk)
import os
from triport import Triport
client = Triport(api_key=os.environ["TRIPORT_API_KEY"])
series = client.eth.intel.validator.series(
implementation="prysm",
since="2026-05-01T00:00:00Z",
until="2026-05-29T00:00:00Z",
limit=1000,
)
print(series.implementation, len(series.points))Notes
- This is a business-tier endpoint in the
eth_validator_intelcategory. Rate limiting is RPS-per-tier with a 2× burst allowance — there is no daily quota. since/untilare optional; omit both for the server's default window. Supplylimitto cap the number of points returned (max10000).- For a current point-in-time validator snapshot rather than a series, see the
related validator-state endpoint (
GET /v1/eth/intel/validator/state). - Peer-graph intelligence is a separate, enterprise-tier surface under
/v1/eth/intel/peer-graph.