Skip to main content

validatorL1Votes

Get validator voting information for L1 operations on Hyperliquid, including consensus data and validator participation.

When to Use This Endpoint#

The validatorL1Votes endpoint is essential for:

  • Validator Monitoring — Track validator voting activity and participation
  • Consensus Analysis — Analyze voting patterns and consensus formation
  • Network Health — Monitor validator coordination on L1 operations
  • Staking Insights — Understand validator behavior for staking decisions

Request#

Endpoint#

POST https://api-hyperliquid-mainnet-info.n.dwellir.com/info

Headers#

HeaderValueRequired
Content-Typeapplication/jsonYes
X-Api-KeyYour API keyYes

Parameters#

ParameterTypeRequiredDescription
typestringYesMust be "validatorL1Votes"

Example Request#

{
"type": "validatorL1Votes"
}

Response#

Success Response#

Returns validator voting information for L1 operations.

{
"votes": []
}

Response Fields#

FieldTypeDescription
votesarrayArray of validator vote records for L1 operations

Code Examples#

curl -X POST 'https://api-hyperliquid-mainnet-info.n.dwellir.com/info' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"type":"validatorL1Votes"}'

Common Use Cases#

1. Monitor Validator Participation#

Track validator activity on L1 operations:

async function monitorValidatorActivity() {
const data = await getValidatorL1Votes();

console.log('=== Validator L1 Voting Activity ===\n');
console.log(`Total vote records: ${data.votes.length}`);

if (data.votes.length === 0) {
console.log('No recent L1 voting activity');
}
}

2. Analyze Consensus Patterns#

Analyze voting patterns and consensus formation:

async function analyzeConsensus() {
const data = await getValidatorL1Votes();

return {
totalVotes: data.votes.length,
timestamp: Date.now(),
hasActivity: data.votes.length > 0
};
}

// Usage
const analysis = await analyzeConsensus();
console.log(`Consensus analysis:`, analysis);

3. Build Validator Dashboard#

Create a monitoring dashboard for validators:

async function getValidatorDashboard() {
try {
const votes = await getValidatorL1Votes();

return {
status: 'operational',
voteCount: votes.votes.length,
lastUpdated: new Date().toISOString()
};
} catch (error) {
return {
status: 'error',
error: error.message
};
}
}

Error Handling#

Common Errors#

ErrorCauseSolution
401 UnauthorizedInvalid API keyVerify your API key is correct
429 Too Many RequestsRate limit exceededImplement request throttling
500 Internal Server ErrorServer issueRetry with exponential backoff

Error Response Example#

{
"error": "Invalid request",
"code": "INVALID_REQUEST"
}

Robust Error Handling#

async function safeGetValidatorL1Votes(maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await getValidatorL1Votes();
} catch (error) {
if (error.response?.status === 429) {
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
} else if (i === maxRetries - 1) {
throw error;
}
}
}
}

Best Practices#

  1. Poll regularly — Monitor validator activity at consistent intervals
  2. Cache appropriately — Cache results for several minutes to reduce load
  3. Handle empty responses — Account for periods with no L1 voting activity
  4. Implement timeouts — Use reasonable timeout values (10-30 seconds)
  5. Monitor trends — Track voting patterns over time for insights

Access real-time Hyperliquid validator information with Dwellir's HyperCore Info Endpoint. Get your API key →