# Get account margin

<div class="api-grid" markdown>
<div class="api-main" markdown>

<span class="api-method api-method--get">GET</span> <span class="api-url">`https://api.pro.anboto.xyz/api/v2/trading/margin`</span>

Account value is `equity`, which already includes unrealised PnL. `position_value` is exposure, not money. `remaining_cushion`, `liq_distance`, and `vol_cover` measure margin the same way on every exchange; they are absent for Binance portfolio-margin and Kraken accounts, and when price history is missing. `raw_margin_ratio` is the exchange's own account ratio, as the exchange reports it. Fields the exchange does not report are omitted. An exchange without support, or a venue-side failure, returns 400 with {"error": "..."}. **ApiKeyAuth** required.

### Query params

<div class="api-params" markdown>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`exchange` <span class="api-param__type">[enum](schemas.md#tradingexchange)</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">The exchange — `BINANCE`, `HUOBI`, `GATEIO`, `KRAKEN`, `KUCOIN`, `OKX`, `BYBIT`, `BITGET`, `WOO`, `MEXC`, `BULLISH`, `B2C2`, `COINBASE_PRIME`, `COINBASE_INTL`, … (17 values)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`subaccount` <span class="api-param__type">string</span></div>
<div class="api-param__desc" markdown="span">Sub-account</div>
</div>
</div>

### Headers

| Header | | |
|---|---|---|
| `X-API-KEY` | string | <span class="api-req">required</span> |
| `X-TIMESTAMP` | int64 ms | <span class="api-req">required</span> |
| `X-SIGN` | string | <span class="api-req">required</span> |
| `X-RECV-WINDOW` | int, default 5000 | |

### Responses

| | |
|---|---|
| <span class="api-status api-status--ok">200</span> | The account margin summary |
| <span class="api-status api-status--err">400</span> | The exchange does not support a margin summary, or the venue call failed |
| <span class="api-status api-status--err">401</span> | Unauthorized: missing or unknown API key |
| <span class="api-status api-status--err">429</span> | Rate limit exceeded, retry later |

### Response fields — [AccountMarginResponse](schemas.md#accountmarginresponse)

<div class="api-params" markdown>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`equity` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Account equity: wallet balance plus unrealised PnL</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`balance` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Wallet balance, excluding unrealised PnL</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`unrealized_pnl` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Unrealised PnL across open positions</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`position_value` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Total notional of open positions (exposure, not account value)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total_initial_margin` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Initial margin locked by open positions</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total_maint_margin` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Maintenance margin requirement</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total_order_margin` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Margin locked by open orders, where the exchange reports it separately</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`margin_ratio` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Maintenance margin over equity, normalised to 0..1 (liquidation approached at 1)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`raw_margin_ratio` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Venue-native account margin ratio as sent (conventions differ). Omitted when the venue has no native account ratio.</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`raw_margin_field` <span class="api-param__type">string</span></div>
<div class="api-param__desc" markdown="span">Venue JSON key for raw_margin_ratio, e.g. uniMMR, mgnRatio, accountMMRate.</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`remaining_cushion` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">1 minus margin_ratio. Negative once equity is already below maintenance margin.</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`liq_distance` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">(equity − maintenance margin) / notional. Absent for Binance portfolio-margin and Kraken accounts.</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`vol_cover` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Pessimistic volatility cover: (equity − maintenance margin) / Σ(\|notional\| × σ). Absent for Binance portfolio-margin and Kraken accounts, with no open positions, or when price history is missing.</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`vol_sigma_window` <span class="api-param__type">string</span></div>
<div class="api-param__desc" markdown="span">Label for the σ window used in vol_cover, e.g. 24h</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`margin_estimated` <span class="api-param__type">boolean</span></div>
<div class="api-param__desc" markdown="span">True when maintenance margin was estimated (Lighter) rather than reported by the venue</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`effective_leverage` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Position value over equity</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`available_balance` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Balance available to open new positions</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`account_mode` <span class="api-param__type">string</span></div>
<div class="api-param__desc" markdown="span">Exchange account mode, where reported (for example cross or isolated)</div>
</div>
</div>

</div>
<div class="api-code" markdown>

=== "Shell"

    ```bash
    curl -X GET "$BASE/api/v2/trading/margin?exchange=BINANCE" \
      -H "X-API-KEY: $API_KEY" -H "X-TIMESTAMP: $ts" \
      -H "X-SIGN: $sign"
    ```

=== "Python"

    ```python
    params = {"exchange": ..., "subaccount": ...}
    r = requests.get(f"{BASE}/api/v2/trading/margin",
        params=params
        headers=signed_headers_query(params))
    print(r.json())
    ```

=== "Rust"

    ```rust
    let resp = client
        .get(format!("{BASE}/api/v2/trading/margin?exchange=BINANCE"))
        .headers(signed_headers_query(&params))
        .send()?;
    println!("{}", resp.text()?);
    ```

=== "Go"

    ```go
    req, _ := http.NewRequest("GET", BASE+"/api/v2/trading/margin?exchange=BINANCE", nil)
    for k, v := range signedHeadersQuery(req.URL.Query()) {
    	req.Header.Set(k, v)
    }
    resp, err := http.DefaultClient.Do(req)
    if err != nil {
    	log.Fatal(err)
    }
    defer resp.Body.Close()
    io.Copy(os.Stdout, resp.Body)
    ```

=== "Java"

    ```java
    HttpResponse<String> resp = client.send(
        signedGet("/api/v2/trading/margin?exchange=BINANCE"),
        HttpResponse.BodyHandlers.ofString());
    ```

=== "TypeScript"

    ```typescript
    const res = await fetch(`${BASE}/api/v2/trading/margin?exchange=BINANCE`, {
      method: "GET",
      headers: signedHeadersQuery(params),
    });
    const data: AccountMarginResponse = await res.json();
    ```

=== "Kotlin"

    ```kotlin
    val request = signedGet("/api/v2/trading/margin?exchange=BINANCE")
    val response = client.send(request, HttpResponse.BodyHandlers.ofString())
    println(response.body())
    ```

=== "C++"

    ```cpp
    cpr::Response r = cpr::Get(
        cpr::Url{BASE + "/api/v2/trading/margin?exchange=BINANCE"},
        signedHeadersQuery(params));
    std::cout << r.text << std::endl;
    ```

=== "JavaScript"

    ```javascript
    const res = await fetch(`${BASE}/api/v2/trading/margin?exchange=BINANCE`, {
      method: "GET",
      headers: signedHeadersQuery(params),
    });
    console.log(await res.json());
    ```

<div class="api-response" markdown>

**Response** <span class="api-status api-status--ok">200</span>

```json
{
  "equity": 0.0,
  "balance": 0.0,
  "unrealized_pnl": 0.0,
  "position_value": 0.0,
  "total_initial_margin": 0.0,
  "total_maint_margin": 0.0,
  "total_order_margin": 0.0,
  "margin_ratio": 0.0,
  "raw_margin_ratio": 0.0,
  "raw_margin_field": "string",
  "remaining_cushion": 0.0,
  "liq_distance": 0.0,
  "vol_cover": 0.0,
  "vol_sigma_window": "string",
  "margin_estimated": true,
  "effective_leverage": 0.0,
  "available_balance": 0.0,
  "account_mode": "string"
}
```

</div>
</div>
</div>
