Skip to main content
POST
/
4f8d8f4040bdacd1577bff8058438274
/
info
info (approvedBuilders)
curl --request POST \
  --url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info \
  --header 'Content-Type: application/json' \
  --data '
{
  "type": "approvedBuilders",
  "user": "0x1442ad477ded1b0028b57621aa7b6f7eadb8f568"
}
'
import requests

url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info"

payload = {
"type": "approvedBuilders",
"user": "0x1442ad477ded1b0028b57621aa7b6f7eadb8f568"
}
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: 'approvedBuilders', user: '0x1442ad477ded1b0028b57621aa7b6f7eadb8f568'})
};

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' => 'approvedBuilders',
'user' => '0x1442ad477ded1b0028b57621aa7b6f7eadb8f568'
]),
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\": \"approvedBuilders\",\n \"user\": \"0x1442ad477ded1b0028b57621aa7b6f7eadb8f568\"\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\": \"approvedBuilders\",\n \"user\": \"0x1442ad477ded1b0028b57621aa7b6f7eadb8f568\"\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\": \"approvedBuilders\",\n \"user\": \"0x1442ad477ded1b0028b57621aa7b6f7eadb8f568\"\n}"

response = http.request(request)
puts response.read_body
[
  "<string>"
]
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.
The info endpoint with type: "approvedBuilders" returns the list of builder addresses a user has approved. When a user approves a builder, that builder can attach a builder fee to the user’s orders. Use this method to check which builders a given address has authorized.
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 "approvedBuilders".
  • user (string, required) — Address in 42-character hexadecimal format; e.g. 0x0000000000000000000000000000000000000000.

Response

Returns an array of builder addresses that the user has approved. The array is empty if the user has not approved any builders.

Example request

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"type": "approvedBuilders", "user": "0x1442ad477ded1b0028b57621aa7b6f7eadb8f568"}' \
  https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info
from hyperliquid.info import Info

# skip_ws=True avoids opening a WebSocket connection for this REST call
info = Info("YOUR_CHAINSTACK_ENDPOINT", skip_ws=True)

# The SDK has no dedicated approvedBuilders helper, so post the request directly.
approved_builders = info.post("/info", {
    "type": "approvedBuilders",
    "user": "0x1442ad477ded1b0028b57621aa7b6f7eadb8f568",
})
print(approved_builders)
import { HttpTransport, InfoClient } from "@nktkas/hyperliquid";

// apiUrl points the transport at a custom server (your Chainstack endpoint)
const transport = new HttpTransport({ apiUrl: "YOUR_CHAINSTACK_ENDPOINT" });
const info = new InfoClient({ transport });

const approvedBuilders = await info.approvedBuilders({
  user: "0x1442ad477ded1b0028b57621aa7b6f7eadb8f568",
});
console.log(approvedBuilders);
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

["0x1cc34f6af34653c515b47a83e1de70ba9b0cda1f"]

Use cases

The info endpoint with type: "approvedBuilders" is useful for:
  • Checking which builders a user has authorized before submitting orders with builder fees
  • Building wallet and frontend integrations that surface a user’s approved builders
  • Auditing builder-fee relationships for an address

Body

application/json
type
enum<string>
default:approvedBuilders
required

Request type

Available options:
approvedBuilders
user
string
default:0x1442ad477ded1b0028b57621aa7b6f7eadb8f568
required

User address in 42-character hexadecimal format.

Response

200 - application/json

Array of approved builder addresses

Last modified on July 7, 2026