voteSubscribe

WSSSubscriptionsOperator+

Streams validator vote transactions as the node's gossip/replay pipeline observes them (unstable upstream).

WSSwss://ws-newyork.constant-k.com:1337/ws?api-key=YOUR_API_KEY

voteSubscribe emits a notification each time the node observes a new vote from any validator: the votePubkey that cast it, the slots it votes for, the resulting bank hash, a timestamp, and the vote transaction's own signature. This is raw, pre-consensus gossip; a vote appearing here is not a guarantee it will ever land in a rooted block.

Agave ships this subscription behind --rpc-pubsub-enable-vote-subscription and documents it as unstable. constant-k enables the flag on Operator and above, so the subscription works normally here even though most public RPC providers leave it off; its contents are a best-effort signal about network voting activity, not settlement truth.

PlansOperator and above
FreeNot included
OperatorIncluded
Blade RunnerIncluded
NexusIncluded

Parameters

This method takes no parameters.

Result

resultinteger

The subscription id, returned once in the initial RPC response. Passed to voteUnsubscribe, it cancels the stream.

Notifications

Updates arrive as voteNotification messages on the same socket. One notification per observed vote: the voting validator's identity, the slots it covers, the bank hash it voted for, a timestamp, and the vote transaction's signature.

params.resultobject

Notification payload.

Show propertiesProperties
votePubkeystring

Base58 vote account address that cast this vote.

slotsinteger[]

Slots covered by this vote, oldest first.

hashstring

Base58 bank hash being voted for.

timestampinteger | null

Unix timestamp the vote carried, if any.

signaturestring

Base58 signature of the vote transaction itself.

Unsubscribe

voteUnsubscribe, called with the subscription id, stops the notifications and returns true once the subscription is removed.

voteUnsubscribe request
{ "jsonrpc": "2.0", "id": 2, "method": "voteUnsubscribe", "params": [9042] }

Notes

  • WebSocket access is included on the Operator plan and above; it is not available on Free.
  • Concurrent connections are capped per API key: 10 on Operator, 50 on Blade Runner, 100 on Nexus.
  • Subscribe and unsubscribe calls draw from the same global per-plan request-rate limit as HTTP calls: 50 req/s on Operator, 200 req/s on Blade Runner, 500 req/s on Nexus.
  • Only subscription methods (the *Subscribe / *Unsubscribe family) are accepted on the WebSocket endpoint; standard request/response RPC methods must go over HTTPS instead.
  • A getHealth request sent over the open socket on a regular interval serves as a keepalive; connections that go quiet can be dropped by intermediate load balancers.
  • Each region has its own WebSocket hostname, for example wss://ws-newyork.constant-k.com:1337/ws?api-key=YOUR_API_KEY; every region is listed on the Endpoints page.
  • Hand-built rather than captured live, since voteSubscribe is usually disabled on public endpoints; slots normally runs long enough to warrant trimming.
  • Votes are pre-consensus; "no guarantee they will enter the ledger" is how upstream documentation puts the caveat, and it applies here too.