> ## 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.

# Position Opening Capacity

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

Checks whether a user currently has execution capacity to open additional position risk on a
perpetual market. This is an unsigned, advisory read.

## Endpoint

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

## Request Body

| Parameter | Type | Description |
| - | - | - |
| `type`\* | string | Must be `"positionOpeningCapacity"` |
| `user`\* | string | User's 20-byte EVM wallet address |
| `coin`\* | string | Perpetual market name, including the dex prefix for HIP-3 |

```json theme={null}
{
  "type": "positionOpeningCapacity",
  "user": "0x1111111111111111111111111111111111111111",
  "coin": "idx:IDX0"
}
```

## Response

<Tabs sync={false}>
  <Tab title="200: Available">
    ```json theme={null}
    {
      "hasCapacity": true
    }
    ```
  </Tab>

  <Tab title="200: Unavailable">
    ```json theme={null}
    {
      "hasCapacity": false,
      "reason": {
        "code": "capacity_unavailable",
        "message": "No opening capacity is available right now."
      }
    }
    ```
  </Tab>
</Tabs>

`reason` is present only when `hasCapacity` is `false`:

| Code | Meaning |
| - | - |
| `capacity_unavailable` | No opening capacity is currently available |
| `operation_pending` | An existing operation or assignment transition must finish first |
| `account_restricted` | The execution account is restricted or under review |
| `market_execution_not_active` | The assigned market is not accepting new risk |

Use `reason.code` for client logic and `reason.message` for the explanation.

## Scope of the Check

For assigned HIP-3 markets, the read checks current allocation capacity and relevant execution
restrictions. It does not reserve that capacity. Markets using shared execution return
`hasCapacity: true` without these assigned-capacity checks.

This response does not validate a particular order, calculate its maximum size, or prove that
margin is sufficient. Check [Market Trading State](/api-reference/info-endpoints/active-asset-data) for
market permissions and size estimates; final admission happens when the signed order is processed.

Malformed requests and unknown markets return `400`. A failed capacity lookup returns `503` with
a one-second retry hint.


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