Skip to main content
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.
The 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

The info 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
This endpoint ensures that new nodes joining the network can quickly find active peers without relying on hardcoded IP addresses that may become stale over time.

Body

application/json
type
enum<string>
default:gossipRootIps
required
Available options:
gossipRootIps

Response

200 - application/json

Successful response

Last modified on July 7, 2026