> ## Documentation Index
> Fetch the complete documentation index at: https://docs.notional.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Market Trading State

<div className="venue-tags" aria-label="Supported venues">
  <span className="venue-tag">Hyperliquid</span>
</div>

Returns leverage, mark price, estimated buy/sell capacity, and isolated-market permissions for one
user and perpetual market. This is an unsigned snapshot; it does not reserve capacity.

## Endpoint

```text theme={null}
POST /info
```

## Request Body

| Parameter | Type | Description |
| - | - | - |
| `type`\* | string | Must be `"activeAssetData"` |
| `user`\* | string | User's 20-byte EVM wallet address, not its API-wallet address |
| `coin`\* | string | Perpetual `venueName` from Market Metadata, including the dex prefix for HIP-3 |

```json theme={null}
{
  "type": "activeAssetData",
  "user": "0x1111111111111111111111111111111111111111",
  "coin": "BTC"
}
```

## Response

```json theme={null}
{
  "user": "0x1111111111111111111111111111111111111111",
  "coin": "BTC",
  "leverage": { "type": "cross", "value": 5 },
  "maxTradeSzs": ["0.1", "0.1"],
  "availableToTrade": ["1000.00", "1000.00"],
  "markPx": "50000"
}
```

The HTTP response has no `channel` envelope or `isSnapshot` field. Subscribe to
[Market Trading Updates](/api-reference/websocket/active-asset-data) for the same state over WebSocket.

## Fields

| Field | Type | Description |
| - | - | - |
| `user` | string | Lowercase user address |
| `coin` | string | Normalized perpetual market name, e.g., `"BTC"` |
| `leverage` | object | Effective margin mode and integer leverage |
| `maxTradeSzs` | string tuple | Estimated base size as `[buy, sell]`, e.g., `["0.1","0.1"]` |
| `availableToTrade` | string tuple | Available USD margin as `[buy, sell]` |
| `markPx` | string | Current formatted mark price, e.g., `"50000"` |

## Assigned HIP-3 Markets

For markets whose metadata has `hip3.executionPolicy: "exclusive_subaccount_v1"`, the response
includes `isolated` and uses `leverage.type: "isolated"`. Send the qualified market name, for
example `"idx:IDX0"`, as `coin`.

`leverage.value` is the observed leverage. `leverage.rawUsd` is the scope's realized USDC support,
formatted to two decimals, or `"0.00"` when no scope exists. The `maxTradeSzs` and
`availableToTrade` fields remain estimates; use `isolated.permissions` to determine which actions
are currently allowed. [Position Opening Capacity](/api-reference/info-endpoints/position-opening-capacity)
provides an on-demand execution-capacity check before signing. A successful read does not reserve
capacity or guarantee order acceptance.

### isolated.leverage

| Field | Type | Description |
| - | - | - |
| `observed` | number | Venue-confirmed leverage for an active assignment, or the saved/default selection before opening |
| `pending` | number | Optional target awaiting venue confirmation |
| `max` | number | Applicable leverage maximum for the assigned market |

Display `pending ?? observed` as the selected leverage. Do not treat a pending selection as
confirmed leverage. Use
[Update Leverage](/api-reference/exchange-endpoints/update-leverage) to submit a change.

### isolated.permissions

| Field | Type | Description |
| - | - | - |
| `canOpen` | boolean | New exposure can currently be admitted |
| `canReduce` | boolean | User reductions are currently allowed |
| `canChangeLeverage` | boolean | Leverage selection or a live change is currently allowed |
| `canAddMargin` | boolean | Adding isolated margin is currently allowed |
| `canRemoveMargin` | boolean | Removing isolated margin is currently allowed |
| `denial` | object | Optional `{ code, message }` explaining restricted actions |

Enable an action only when its corresponding permission is `true`. Denial codes are
`market_halted`, `market_reduce_only`, `market_execution_not_active`, `capacity_unavailable`,
`operation_pending`, `insufficient_margin`, `account_restricted`, and `scope_resolving`. Display
`denial.message` when a code is unfamiliar. A reduce-only market may still allow reductions; a
halted market or a resolving scope can block them.

### isolated.scope

This object is omitted when the user has no isolated scope on the market.

| Field | Type | Description |
| - | - | - |
| `szi` | string | Signed position size |
| `scopeCashUsdc` | string | Realized USDC support in the scope |
| `pendingSupportUsdc` | string | USDC support locked for orders |
| `pendingReleaseUsdc` | string | Settled USDC awaiting return to cross collateral |

USDC support values use two decimal places. Support, pending support, and pending release
are separate amounts. Do not subtract them again from the effective USDC balance returned by
[`assets`](/api-reference/info-endpoints/assets).

### isolated.operation

This optional object describes a live operation:

| Field | Type | Description |
| - | - | - |
| `kind` | string | `"initial_leverage"`, `"user_leverage"`, or `"margin_update"` |
| `status` | string | `"pending"`, `"committed"`, `"confirmed"`, `"failed"`, or `"ambiguous"` |
| `direction` | string | Margin operation only: `"add"` or `"remove"` |
| `amountUsd` | string | Optional margin amount in USD, formatted to two decimals |

Use [Update Isolated Margin](/api-reference/exchange-endpoints/update-isolated-margin) to request
a margin change. For a returned `operationId`,
[Isolated Operation Status](/api-reference/info-endpoints/isolated-operation-status) supplies the
durable result after a live operation disappears from this response.

The current projector omits confirmed or failed operations once they are no longer live. A
`committed` operation may already have been sent to the venue; `ambiguous` means its outcome is
still uncertain. Read the permissions again before sending another action.

## Errors

* `400`: missing or malformed `user` / `coin`, or an unknown perpetual market. Spot pairs and
  prediction-market outcomes are not accepted as `coin`.
* `503`: the service, account state, mark price, or required margin prices are unavailable.
  The response includes a three-second `Retry-After` hint.

Capacity and margin estimates can change before an order is accepted. Use the current permissions
and submit the signed action for final validation.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.