Get current Polygon validators
https://api.triport.io/v1/polygon/bor/validators/currentReturns the active Polygon PoS (Bor) validator set for the current span, with each validator's signer address and voting power.
GET /v1/polygon/bor/validators/current returns the validator set that is
currently producing and attesting blocks on Polygon PoS. It is the REST wrapper
around the Bor-specific bor_getCurrentValidators JSON-RPC method, exposed as a
plain HTTP GET so you don't have to assemble a JSON-RPC envelope.
Each entry describes one validator: its on-chain validator id, its signer
address, the voting power it carries in consensus, and its proposer
accumulator. The response also carries the block number the snapshot was
read at, so you can correlate the set with a specific point on the chain.
Use this to render a live validator dashboard, to compute the share of stake held by a given signer, or to verify that an address is part of the active set before trusting its produced blocks. The set changes at span boundaries — poll it again after a new span begins rather than caching it indefinitely.
Parameters
This endpoint takes no path, query, or body parameters. The validator set is always read for the current block.
——optionalResponse
Response fields
| Field | Type | Description |
|---|---|---|
block | integer (int64) | Block height at which this validator snapshot was read. |
validators | array | The active validator set (see fields below). |
validators[].id | integer (int64) | On-chain validator id. |
validators[].signer | string | Validator's 0x-prefixed signer address. |
validators[].power | integer (int64) | Voting power (stake weight) in consensus. |
validators[].accum | integer (int64) | Proposer-priority accumulator; may be negative. Omitted if not provided by the source. |
Errors
Errors use the shared Triport REST envelope (error code + message, with an
optional request_id). See errors.md for the full envelope
and every shared code.
| Code | Meaning | When it happens |
|---|---|---|
401 | unauthorized / trial_expired / subscription_expired | Missing or invalid credentials, or the key's trial / subscription has lapsed. |
403 | tier_insufficient / method_unknown | The key's tier is below basic, or polygon_bor is not enabled for it. The X-Required-Tier header names the minimum tier. |
429 | rate_limited | Sustained RPS for the polygon_bor category exceeded. Honor the Retry-After header before retrying. |
Examples
JavaScript (fetch)
const res = await fetch(
"https://api.triport.io/v1/polygon/bor/validators/current",
{
headers: { Authorization: `Bearer ${process.env.TRIPORT_API_KEY}` },
},
);
const { block, validators } = await res.json();
const totalPower = validators.reduce((sum, v) => sum + v.power, 0);
console.log(`block ${block}: ${validators.length} validators, ${totalPower} total power`);TypeScript SDK (@triport/sdk)
import { Triport } from "@triport/sdk";
const client = new Triport({ apiKey: process.env.TRIPORT_API_KEY! });
const { block, validators } = await client.polygon.bor.currentValidators();
for (const v of validators) {
console.log(`#${v.id} ${v.signer} power=${v.power}`);
}
console.log(`as of block ${block}`);Python (triport-sdk)
import os
from triport import Triport
client = Triport(api_key=os.environ["TRIPORT_API_KEY"])
snapshot = client.polygon.bor.current_validators()
print(f"block {snapshot['block']}: {len(snapshot['validators'])} validators")
for v in snapshot["validators"]:
print(f"#{v['id']} {v['signer']} power={v['power']}")Notes
- Span-scoped. The set is fixed for the duration of a span and rotates at
span boundaries. To inspect the span itself (start/end blocks, selected
producers), use
GET /v1/polygon/bor/span/{span_id}. accumcan be negative. The proposer-priority accumulator swings above and below zero as validators take turns proposing — use a signed integer type.- JSON-RPC equivalent. If you already speak JSON-RPC, the same data is
available via
bor_getCurrentValidatorson the Polygon JSON-RPC endpoint. - Rate limits are enforced per second per tier (with a ×2 burst allowance);
there is no daily cap. On
429, back off using theRetry-Afterheader.