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

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

payload = {
    "type": "marginTable",
    "id": 1
}
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: 'marginTable', id: 1})
};

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' => 'marginTable',
    'id' => 1
  ]),
  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\": \"marginTable\",\n  \"id\": 1\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\": \"marginTable\",\n  \"id\": 1\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\": \"marginTable\",\n  \"id\": 1\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.
The info endpoint with type: "marginTable" retrieves a specific margin table by ID. Returns the margin tier configuration including description and leverage tiers.
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 "marginTable".
  • id (integer, required) — Margin table ID.

Response

The response is an object containing:
  • description (string) — Description of the margin table.
  • marginTiers (array) — Array of margin tier objects with:
    • lowerBound (string) — Lower bound of the tier in USD.
    • maxLeverage (integer) — Maximum leverage allowed for this tier.

Example request

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

# The hyperliquid-python-sdk has no named method for the marginTable type,
# so post the request body directly through the shared Info.post primitive.
info = Info("YOUR_CHAINSTACK_ENDPOINT", skip_ws=True)

margin_table = info.post("/info", {"type": "marginTable", "id": 1})
print(margin_table)
import { HttpTransport, InfoClient } from "@nktkas/hyperliquid";

const transport = new HttpTransport({ apiUrl: "YOUR_CHAINSTACK_ENDPOINT" });
const info = new InfoClient({ transport });

const marginTable = await info.marginTable({ id: 1 });
console.log(marginTable);
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

{
  "description": "",
  "marginTiers": [
    {
      "lowerBound": "0.0",
      "maxLeverage": 1
    }
  ]
}

Use case

The info endpoint with type: "marginTable" is useful for:
  • Looking up specific margin tier configurations by ID
  • Displaying leverage limits for different position size tiers
  • Building risk management tools that account for tiered leverage
  • Validating leverage settings against margin table constraints

Body

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

Request type

Available options:
marginTable
id
integer
default:1
required

Margin table ID

Response

200 - application/json

Margin table configuration

The response is of type object.

Last modified on June 24, 2026