info (borrowLendReserveState)
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info \
--header 'Content-Type: application/json' \
--data '
{
"type": "borrowLendReserveState",
"token": 0
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload = {
"type": "borrowLendReserveState",
"token": 0
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({type: 'borrowLendReserveState', token: 0})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'borrowLendReserveState',
'token' => 0
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload := strings.NewReader("{\n \"type\": \"borrowLendReserveState\",\n \"token\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"borrowLendReserveState\",\n \"token\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"borrowLendReserveState\",\n \"token\": 0\n}"
response = http.request(request)
puts response.read_body{}Hyperliquid node API
borrowLendReserveState | Hyperliquid info
The info endpoint with type: “borrowLendReserveState” retrieves the reserve state for a specific token in the Hyperliquid borrow/lend market.
POST
/
4f8d8f4040bdacd1577bff8058438274
/
info
info (borrowLendReserveState)
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info \
--header 'Content-Type: application/json' \
--data '
{
"type": "borrowLendReserveState",
"token": 0
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload = {
"type": "borrowLendReserveState",
"token": 0
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({type: 'borrowLendReserveState', token: 0})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'type' => 'borrowLendReserveState',
'token' => 0
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"
payload := strings.NewReader("{\n \"type\": \"borrowLendReserveState\",\n \"token\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"borrowLendReserveState\",\n \"token\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"type\": \"borrowLendReserveState\",\n \"token\": 0\n}"
response = http.request(request)
puts response.read_body{}This method is available on Chainstack. Not all Hyperliquid methods are available on Chainstack, as the open-source node implementation does not support them yet — see Hyperliquid methods for the full availability breakdown.
info endpoint with type: "borrowLendReserveState" retrieves the reserve state for a specific token in the Hyperliquid borrow/lend market. Returns current rates, utilization, and supply/borrow totals.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Parameters
Request body
type(string, required) — The request type. Must be"borrowLendReserveState".token(integer, required) — Token index (e.g.,0for USDC).
Response
The response is an object containing:borrowYearlyRate(string) — Annual borrow interest rate.supplyYearlyRate(string) — Annual supply interest rate.balance(string) — Available balance in the reserve.utilization(string) — Current utilization ratio of the reserve.oraclePx(string) — Oracle price of the token.ltv(string) — Loan-to-value ratio for the token as collateral.totalSupplied(string) — Total amount supplied to the reserve.totalBorrowed(string) — Total amount borrowed from the reserve.
Example request
curl -X POST \
-H "Content-Type: application/json" \
-d '{"type": "borrowLendReserveState", "token": 0}' \
https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info
from hyperliquid.info import Info
# The Python SDK has no dedicated borrowLendReserveState method,
# so post the request type directly through the shared post() helper.
info = Info("YOUR_CHAINSTACK_ENDPOINT", skip_ws=True)
reserve_state = info.post("/info", {"type": "borrowLendReserveState", "token": 0})
print(reserve_state)
import { HttpTransport, InfoClient } from "@nktkas/hyperliquid";
const transport = new HttpTransport({ apiUrl: "YOUR_CHAINSTACK_ENDPOINT" });
const info = new InfoClient({ transport });
const reserveState = await info.borrowLendReserveState({ token: 0 });
console.log(reserveState);
Use your own endpoint in your code. The code examples use a placeholder Chainstack endpoint (YOUR_CHAINSTACK_ENDPOINT) — replace it with your own Hyperliquid node endpoint from the Chainstack console. The curl above uses a shared public endpoint for quick checks only; do not use it in production.
Example response
{
"borrowYearlyRate": "0.05",
"supplyYearlyRate": "0.0010632437",
"balance": "3464255.80696283",
"utilization": "0.0236276367",
"oraclePx": "1.0",
"ltv": "0.0",
"totalSupplied": "3548088.6923081698",
"totalBorrowed": "83832.95076168"
}
Use case
Theinfo endpoint with type: "borrowLendReserveState" is useful for:
- Displaying current borrow and supply rates for a specific token
- Monitoring reserve utilization to anticipate rate changes
- Building lending market dashboards with real-time reserve data
- Calculating potential yields before supplying assets
Last modified on June 24, 2026
Was this page helpful?