info (gossipRootIps)
curl --request POST \
--url https://api.hyperliquid.xyz/info \
--header 'Content-Type: application/json' \
--data '
{
"type": "gossipRootIps"
}
'import requests
url = "https://api.hyperliquid.xyz/info"
payload = { "type": "gossipRootIps" }
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: 'gossipRootIps'})
};
fetch('https://api.hyperliquid.xyz/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://api.hyperliquid.xyz/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' => 'gossipRootIps'
]),
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://api.hyperliquid.xyz/info"
payload := strings.NewReader("{\n \"type\": \"gossipRootIps\"\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://api.hyperliquid.xyz/info")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"gossipRootIps\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperliquid.xyz/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\": \"gossipRootIps\"\n}"
response = http.request(request)
puts response.read_body[
"<string>"
]Hyperliquid node API
gossipRootIps | Hyperliquid info
Reference for the gossipRootIps JSON-RPC method on the Hyperliquid info blockchain via Chainstack nodes. Parameters, response, and examples included.
POST
/
info
info (gossipRootIps)
curl --request POST \
--url https://api.hyperliquid.xyz/info \
--header 'Content-Type: application/json' \
--data '
{
"type": "gossipRootIps"
}
'import requests
url = "https://api.hyperliquid.xyz/info"
payload = { "type": "gossipRootIps" }
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: 'gossipRootIps'})
};
fetch('https://api.hyperliquid.xyz/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://api.hyperliquid.xyz/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' => 'gossipRootIps'
]),
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://api.hyperliquid.xyz/info"
payload := strings.NewReader("{\n \"type\": \"gossipRootIps\"\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://api.hyperliquid.xyz/info")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"gossipRootIps\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperliquid.xyz/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\": \"gossipRootIps\"\n}"
response = http.request(request)
puts response.read_body[
"<string>"
]You can only use this endpoint on the official Hyperliquid public API. It is not available through Chainstack, as the open-source node implementation does not support it yet. See Hyperliquid methods for the full availability breakdown.
info endpoint with type: "gossipRootIps" retrieves a list of recently available seed peer IP addresses for non-validators looking to connect to the Hyperliquid network. This endpoint provides reliable peer addresses that can be used as seed peers for node synchronization and network connectivity.
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"gossipRootIps"to retrieve the list of seed peer IP addresses.
Response
The response is an array of IP addresses (strings) representing recently available seed peers that can be used for network connectivity.Example request
curl -X POST \
-H "Content-Type: application/json" \
-d '{"type": "gossipRootIps"}' \
https://api.hyperliquid.xyz/info
from hyperliquid.info import Info
from hyperliquid.utils import constants
info = Info(constants.MAINNET_API_URL, skip_ws=True)
# The Python SDK has no dedicated gossipRootIps helper, so post the request directly.
root_ips = info.post("/info", {"type": "gossipRootIps"})
print(root_ips)
import * as hl from "@nktkas/hyperliquid";
const transport = new hl.HttpTransport();
const client = new hl.InfoClient({ transport });
const rootIps = await client.gossipRootIps();
console.log(rootIps);
Example response
[
"54.199.122.133",
"116.199.229.233",
"54.168.150.28",
"35.190.230.32",
"13.230.48.38",
"218.33.8.227",
"35.72.88.240",
"45.76.206.35",
"54.65.106.241",
"18.180.228.50",
"35.79.116.97",
"13.158.102.147",
"52.198.152.3",
"43.207.77.116",
"57.181.193.239",
"52.193.108.65",
"54.64.2.87"
]
Use case
Theinfo endpoint with type: "gossipRootIps" is particularly useful for:
- Non-validators setting up new nodes who need reliable seed peers for initial synchronization
- Node operators looking to expand their peer connectivity with known good peers
- Applications that need to dynamically discover active network peers
- Network monitoring tools that track peer availability and distribution
- Backup peer discovery when primary seed nodes are unavailable
Body
application/json
Available options:
gossipRootIps Response
200 - application/json
Successful response
Last modified on June 24, 2026
Was this page helpful?