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

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

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

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' => 'userDexAbstraction',
'user' => '0x31ca8395cf837de08b24da3f660e77761dfb974b'
]),
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\": \"userDexAbstraction\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\"\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\": \"userDexAbstraction\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\"\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\": \"userDexAbstraction\",\n \"user\": \"0x31ca8395cf837de08b24da3f660e77761dfb974b\"\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: "userDexAbstraction" retrieves a user’s DEX abstraction configuration. Returns the user’s current abstraction setting for perp DEX interaction, or null if not set.
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 "userDexAbstraction".
  • user (string, required) — Onchain address in 42-character hexadecimal format.

Response

The response is a string representing the user’s DEX abstraction configuration, or null if no abstraction is set.

Example request

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

info = Info("YOUR_CHAINSTACK_ENDPOINT", skip_ws=True)

result = info.query_user_dex_abstraction_state("0x31ca8395cf837de08b24da3f660e77761dfb974b")
print(result)
import { HttpTransport, InfoClient } from "@nktkas/hyperliquid";

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

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

null

Use case

The info endpoint with type: "userDexAbstraction" is useful for:
  • Checking whether a user has DEX abstraction enabled
  • Determining which perp DEX a user’s orders are routed to
  • Building interfaces that display the user’s current DEX configuration

Body

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

Request type

Available options:
userDexAbstraction
user
string
default:0x31ca8395cf837de08b24da3f660e77761dfb974b
required

Onchain address in 42-character hexadecimal format

Response

200 - application/json

User's DEX abstraction setting or null

The response is of type object.

Last modified on June 24, 2026