Get consensus-layer validator state
https://api.triport.io/v1/eth/intel/validator/123456Returns the current consensus-layer (beacon chain) state of a single Ethereum validator by its registry index.
This endpoint resolves the live consensus-layer (CL) state of one Ethereum validator from its index in the beacon-chain validator registry. It returns the validator's public key, current and effective balances (in gwei), lifecycle status, activation epoch, and — once scheduled — its exit epoch.
Use it to track a validator through its lifecycle: from queuing
(pending_initialized / pending_queued), through active duty
(active_ongoing), to exit and withdrawal (exited_*, withdrawal_*). It is
the per-validator companion to the time-series endpoint
GET /v1/eth/intel/validator/series.
CL queries carry a higher upstream cost than execution-layer reads, so this leg
is gated at the business tier. Requests from a lower tier are rejected with
403 tier_insufficient.
Parameters
Path parameters
validator_indexinteger (int64, ≥ 0)requiredResponse
Response fields
| Field | Type | Description |
|---|---|---|
validator_index | integer (int64, ≥ 0) | The queried validator index. Always present. |
pubkey | string | The validator's BLS public key (0x-prefixed hex). Always present. |
balance_gwei | integer (int64, ≥ 0) | Current actual balance in gwei, including accrued rewards/penalties. |
effective_balance_gwei | integer (int64, ≥ 0) | Effective balance in gwei used for reward and duty weighting (capped at 32 ETH). |
status | string (enum) | Validator lifecycle status. One of: pending_initialized, pending_queued, active_ongoing, active_exiting, active_slashed, exited_unslashed, exited_slashed, withdrawal_possible, withdrawal_done. |
activation_epoch | integer (int64) | Epoch at which the validator became active. |
exit_epoch | integer (int64) | null | Epoch at which the validator exits, or null if no exit is scheduled. |
Errors
| Code | Meaning | When it happens |
|---|---|---|
401 | unauthorized / trial_expired / subscription_expired | Missing, invalid, or expired credentials. |
403 | tier_insufficient | API key is below the business tier required for validator intel. |
404 | invalid_params | validator_index is malformed or does not resolve to a known validator. |
429 | rate_limited | Sustained RPS for the eth_validator_intel category exceeded; honor Retry-After. |
All errors share the standard envelope (error, message, request_id). A
403 tier_insufficient additionally carries current_tier / required_tier,
and a 429 carries retry_after_sec / limit_rps / current_tier. See the
shared errors reference for the full schema.
Examples
JavaScript (fetch)
const res = await fetch(
"https://api.triport.io/v1/eth/intel/validator/123456",
{ headers: { Authorization: `Bearer ${process.env.TRIPORT_API_KEY}` } }
);
if (!res.ok) throw new Error(`HTTP ${res.status}: ${(await res.json()).message}`);
const validator = await res.json();
console.log(validator.status, validator.balance_gwei);TypeScript SDK (@triport/sdk)
import { Triport } from "@triport/sdk";
const triport = new Triport({ apiKey: process.env.TRIPORT_API_KEY! });
const validator = await triport.eth.intel.validator.get(123456);
console.log(validator.status, validator.effectiveBalanceGwei);Python (triport-sdk)
import os
from triport import Triport
client = Triport(api_key=os.environ["TRIPORT_API_KEY"])
validator = client.eth.intel.validator.get(123456)
print(validator.status, validator.balance_gwei)Notes
- Effective vs. actual balance:
effective_balance_gweiis rounded down and capped at 32 ETH (32 000 000 000 gwei) for protocol accounting, whilebalance_gweireflects the live balance including accumulated rewards and penalties. The two diverge between effective-balance updates. exit_epochis nullable: expectnullfor any validator that is still active and has not signaled or been forced into an exit.- Related: for aggregated CL metrics over time, see
GET /v1/eth/intel/validator/series. For the network-level peer view, see the enterprise peer-graph intel endpoints.