Skip to main content

HyperCore Info Endpoint

Dwellir's HyperCore Info Endpoint provides comprehensive access to Hyperliquid exchange data through a simple HTTP JSON API. Query market metadata, user account information, vault data, and exchange status with a single POST request.

Why Hyperliquid? Build on the dominant perpetuals DEX with 70% market share, $2.7T+ lifetime volume, and $2B TVL with 200K orders/second throughput, zero gas fees, sub-second finality, and fully onchain Central Limit Order Book (CLOB).

Key Benefits#

Higher Rate Limits#

Unlike public Hyperliquid endpoints, Dwellir's HyperCore Info Endpoint provides significantly higher rate limits based on your subscription plan. This enables you to build production-grade applications without worrying about hitting rate limit restrictions.

Rate limits scale with your plan:

  • Free tier: Standard public limits
  • Growth tier: 10x higher limits
  • Enterprise tier: Custom rate limits tailored to your needs

Single Endpoint Architecture#

All info endpoints are accessible through a single URL with different request types. This simplifies integration and reduces connection overhead.

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

Custom REST API Development#

We're actively developing additional REST API endpoints for Hyperliquid. If you need custom endpoints or specialized data access patterns not covered by the standard Info Endpoint, contact our team to discuss your requirements.

Available Endpoint Categories#

Market Metadata#

Access trading pair information, leverage limits, and exchange status.

EndpointPurpose
metaGet trading pair metadata including leverage limits
spotMetaGet spot trading asset metadata
exchangeStatusMonitor exchange health and status

User Accounts#

Query account states, positions, orders, and fee information.

EndpointPurpose
clearinghouseStateGet perpetual trading account state
openOrdersRetrieve all open orders for a user
spotClearinghouseStateGet spot trading account balances
userFeesGet user fee rates and volume data

Vaults#

Access vault performance data and user positions.

EndpointPurpose
leadingVaultsGet top performing vaults
vaultSummariesGet summary data for all vaults
userVaultEquitiesGet user's vault positions

Validators#

Query validator and delegation information.

EndpointPurpose
validatorL1VotesGet validator voting data
delegatorSummaryGet delegation summary for a user

Advanced Endpoints#

Specialized endpoints for advanced use cases.

EndpointPurpose
userRateLimitGet rate limit information
delegationsGet staking delegation data
subAccountsGet sub-account information
frontendOpenOrdersGet orders formatted for UI display
liquidatableCheck liquidation status
webData2Get comprehensive web interface data
extraAgentsGet extra agent information
userRoleGet user role information
maxBuilderFeeGet maximum builder fee
maxMarketOrderNtlsGet maximum market order notionals

Quick Start#

Authentication#

All requests require an API key provided in the X-Api-Key header:

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":"meta"}'

Request Format#

All endpoints follow the same pattern:

{
"type": "ENDPOINT_TYPE",
"param1": "value1",
"param2": "value2"
}

Example: Get Exchange Metadata#

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":"meta"}'

Example: Get User Account State#

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": "clearinghouseState",
"user": "0x63E8c7C149556D5f34F833419A287bb9Ef81487f"
}'

Error Handling#

HTTP Status Codes#

CodeDescriptionSolution
200SuccessRequest completed successfully
400Bad RequestCheck request format and parameters
401UnauthorizedVerify API key is correct
422Unprocessable EntityCheck parameter values
429Rate LimitImplement backoff or upgrade plan
500Server ErrorRetry with exponential backoff

Error Response Format#

{
"error": "Error message description",
"code": "ERROR_CODE"
}

Best Practices#

1. Implement Proper Error Handling#

Always include retry logic with exponential backoff:

async function queryEndpoint(payload, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fetch(
'https://api-hyperliquid-mainnet-info.n.dwellir.com/info',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': 'YOUR_API_KEY'
},
body: JSON.stringify(payload)
}
);

if (!response.ok) throw new Error(`HTTP ${response.status}`);
return await response.json();
} catch (error) {
if (i === maxRetries - 1) throw error;
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
}
}
}

2. Cache Appropriately#

Cache metadata endpoints to reduce API calls:

// Cache meta data for 1 hour
const metaCache = new Map();
const META_TTL = 3600000; // 1 hour in ms

async function getMeta() {
const cached = metaCache.get('meta');
if (cached && Date.now() - cached.timestamp < META_TTL) {
return cached.data;
}

const data = await queryEndpoint({ type: 'meta' });
metaCache.set('meta', { data, timestamp: Date.now() });
return data;
}

3. Monitor Rate Limits#

Check response headers to track rate limit usage:

const response = await fetch(url, options);
const remaining = response.headers.get('X-RateLimit-Remaining');
const reset = response.headers.get('X-RateLimit-Reset');

if (parseInt(remaining) < 10) {
console.warn('Approaching rate limit');
}

4. Use Timeouts#

Set reasonable timeouts for all requests:

const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 10000); // 10s timeout

try {
const response = await fetch(url, {
...options,
signal: controller.signal
});
return await response.json();
} finally {
clearTimeout(timeout);
}

Code Examples#

Python#

import requests
from typing import Dict, Any

ENDPOINT = 'https://api-hyperliquid-mainnet-info.n.dwellir.com/info'
API_KEY = 'your-api-key-here'

def query_info_endpoint(endpoint_type: str, params: Dict[str, Any] = None) -> Dict:
"""Query the HyperCore Info Endpoint"""
payload = {"type": endpoint_type}
if params:
payload.update(params)

headers = {
'Content-Type': 'application/json',
'X-Api-Key': API_KEY
}

response = requests.post(ENDPOINT, json=payload, headers=headers, timeout=10)
response.raise_for_status()
return response.json()

# Get metadata
meta = query_info_endpoint('meta')
print(f"Available pairs: {len(meta['universe'])}")

# Get user account state
user_state = query_info_endpoint(
'clearinghouseState',
{'user': '0x63E8c7C149556D5f34F833419A287bb9Ef81487f'}
)
print(f"Account value: {user_state['marginSummary']['accountValue']}")

JavaScript/TypeScript#

const ENDPOINT = 'https://api-hyperliquid-mainnet-info.n.dwellir.com/info';
const API_KEY = 'your-api-key-here';

interface InfoRequest {
type: string;
[key: string]: any;
}

async function queryInfoEndpoint<T>(request: InfoRequest): Promise<T> {
const response = await fetch(ENDPOINT, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': API_KEY
},
body: JSON.stringify(request)
});

if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}

return await response.json();
}

// Get metadata
const meta = await queryInfoEndpoint({ type: 'meta' });
console.log(`Available pairs: ${meta.universe.length}`);

// Get user state
const userState = await queryInfoEndpoint({
type: 'clearinghouseState',
user: '0x63E8c7C149556D5f34F833419A287bb9Ef81487f'
});
console.log(`Account value: ${userState.marginSummary.accountValue}`);

Support#

Need help with the HyperCore Info Endpoint?

For custom endpoint development or enterprise solutions, contact our team.


Access comprehensive Hyperliquid exchange data with Dwellir's enterprise-grade infrastructure. Get your API key →