TriportRPC

Get current Polygon validators

GEThttps://api.triport.io/v1/polygon/bor/validators/current

Returns the active Polygon PoS (Bor) validator set for the current span, with each validator's signer address and voting power.

Polygonpolygon_borbasic+ — polygon_bor category, RPS per tier with burst ×2

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.

optional
No parameters.

Response

Response fields

FieldTypeDescription
blockinteger (int64)Block height at which this validator snapshot was read.
validatorsarrayThe active validator set (see fields below).
validators[].idinteger (int64)On-chain validator id.
validators[].signerstringValidator's 0x-prefixed signer address.
validators[].powerinteger (int64)Voting power (stake weight) in consensus.
validators[].accuminteger (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.

CodeMeaningWhen it happens
401unauthorized / trial_expired / subscription_expiredMissing or invalid credentials, or the key's trial / subscription has lapsed.
403tier_insufficient / method_unknownThe key's tier is below basic, or polygon_bor is not enabled for it. The X-Required-Tier header names the minimum tier.
429rate_limitedSustained 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}.
  • accum can 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_getCurrentValidators on 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 the Retry-After header.