bor_getSigners
https://api.triport.io/polygonReturns the list of authorized validator signer addresses for a given Polygon (Bor) block.
bor_getSigners returns the set of validator addresses authorized to sign at a
given block on Polygon's Bor consensus layer. The result is a flat array of
0x-prefixed addresses.
This is a Bor-consensus-specific method — it is not part of the standard EVM /
Geth namespace and is only meaningful on Polygon. It belongs to the premium
bor_* family, so a Pro tier key (scope polygon_bor) is required.
The signer list it returns is a subset of bor_getSnapshot's validators
field and exists mainly for legacy compatibility. If you need richer consensus
state — stake/power per validator, the proposer-rotation accumulator, or the
recent-signers history — prefer bor_getSnapshot, which
returns all of it in one call. Reach for bor_getSigners when you only need the
bare authorized-signer set at a block.
Parameters
Positional params array (JSON-RPC params).
blockstring | numberoptional"0x3a2c940"), a decimal block number, or a tag such as "latest". Omit (empty params) to use the latest block.Response
Response fields
| Field | Type | Description |
|---|---|---|
result | array of string | Authorized signer addresses (0x-prefixed, 20-byte) for the requested block. A subset of bor_getSnapshot.validators. |
Errors
JSON-RPC errors are returned in the standard error object with a numeric
code, a message, and a data payload carrying the extra fields below.
| Code | Meaning | When it happens |
|---|---|---|
-32002 | tier_insufficient | Your key's tier is below Pro. data includes current_tier, required_tier, method, category (polygon_bor), and upgrade_url. |
-32003 | rate_limited | Sustained RPS for your tier and the polygon_bor category was exceeded. data includes retry_after_sec, limit_rps, burst_capacity, category, and current_tier. |
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32002,
"message": "Method 'bor_getSigners' requires pro tier or higher",
"data": {
"current_tier": "free",
"required_tier": "pro",
"method": "bor_getSigners",
"category": "polygon_bor",
"upgrade_url": "https://triport.io/upgrade/pro"
}
}
}See the shared errors reference for the full envelope, the
HTTP↔JSON-RPC code mapping, and the X-RateLimit-* / X-Required-Tier response
headers.
Examples
JavaScript (fetch)
const res = await fetch("https://api.triport.io/polygon", {
method: "POST",
headers: {
"x-token": process.env.TRIPORT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "bor_getSigners",
params: ["latest"],
}),
});
const { result: signers } = await res.json();
console.log(`${signers.length} authorized signers`, signers);TypeScript SDK (@triport/sdk)
import { Triport } from "@triport/sdk";
const client = new Triport({ apiKey: process.env.TRIPORT_API_KEY });
// Requires a Pro-tier key (polygon_bor scope).
const signers = await client.polygon.rpc<string[]>("bor_getSigners", ["latest"]);
console.log(signers);Python (triport-sdk)
import os
from triport import Triport
client = Triport(api_key=os.environ["TRIPORT_API_KEY"])
# Requires a Pro-tier key (polygon_bor scope).
signers = client.polygon.rpc("bor_getSigners", ["latest"])
print(f"{len(signers)} authorized signers")
print(signers)Notes
- Prefer
bor_getSnapshotfor anything beyond the bare signer set — it returns the validator set plus recent-signers history and block context in a single call.bor_getSignersis a legacy-compatibility subset of that snapshot'svalidators. - The Bor validator set rotates roughly once per epoch (~36 minutes), so the signer list is stable within an epoch — a client-side cache TTL of ~30 minutes is a reasonable default.
- Related Bor methods:
bor_getCurrentValidators(current epoch's validators with stake/power),bor_getCurrentProposer(current block proposer),bor_getAuthor(author of a historic block), andbor_getRootHash. - This method has no Ethereum equivalent — Bor consensus is Polygon-specific.