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

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

payload = {
"type": "userAbstraction",
"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: 'userAbstraction', 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' => 'userAbstraction',
'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\": \"userAbstraction\",\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\": \"userAbstraction\",\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\": \"userAbstraction\",\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: "userAbstraction" retrieves a user’s account abstraction configuration. Returns whether the user has the default or a custom abstraction setting.
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 "userAbstraction".
  • user (string, required) — Onchain address in 42-character hexadecimal format.

Response

The response is a string representing the user’s abstraction configuration (e.g., "default").

Example request

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

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

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

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

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

"default"

Use case

The info endpoint with type: "userAbstraction" is useful for:
  • Checking a user’s account abstraction status before executing trades
  • Displaying the current abstraction configuration in user interfaces
  • Determining whether unified account features are enabled for a user

Body

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

Request type

Available options:
userAbstraction
user
string
default:0x31ca8395cf837de08b24da3f660e77761dfb974b
required

Onchain address in 42-character hexadecimal format

Response

200 - application/json

User's abstraction setting

The response is of type object.

Last modified on June 24, 2026