Skip to main content
GET
Current open positions + unrealized P&L

When to use

Use user-state when you need a point-in-time picture of where an address sits on Hyperliquid — currently open markets, position sizes, entry prices, mark prices, and unrealized P&L. This is the canonical “what are they holding right now?” endpoint. For history (how those positions evolved, individual fills, funding payments), use /v1/fills, /v1/analytics/user-funding, or /v1/analytics/user-maker-taker.

Conventions

  • size is signed: positive = long, negative = short. Markets with |size| < 1e-9 are filtered (effectively closed).
  • unrealized_pnl = size * (mark_price - entry_price).
  • entry_price is the VWAP entry across all fills that built the current position; matches HL’s clearinghouseState.assetPositions[].entryPx.
  • as_of_ts (unix ms) carries the wall-clock of the latest mark_prices row used. If this is more than a few seconds old, the mark-price poller is lagging; the position size + entry are still accurate but the unrealized P&L will be stale.

Example

Authorizations

Authorization
string
header
required

Ironflow API key, format if_xxxx. Free keys at https://ironflow.sh/key. Optional on read endpoints.

Query Parameters

address
string

Wallet address filter (hex string, e.g. 0xabc123).

Example:

"0xabc123def456"

Response

Current state for the address.

Snapshot of an address's current open positions + uPnL.

address
string
required
Example:

"0x0c684f333a7e120bce61383da670bbb0157e82d0"

as_of_ts
integer<int64>
required

Unix ms of the latest mark_price used

Example:

1779394567000

asset_positions
object[]
required
margin_summary
object
required