Position Information V2
Type: USER-DATA
GET /fapi/v2/positionRisk
Per-symbol position state including entry price, live mark price (oracle), and locked margin.
Request
GET /fapi/v2/positionRisk?symbol=BTCUSDT
Query params
| Name | Type | Required | Notes |
|---|---|---|---|
symbol | string | no | standard pair. If omitted, returns all non-zero positions. If given, the row for that symbol is returned even when positionAmt is 0 (e.g. a fully closed position); [] if no position row exists. |
Response — 200
[
{
"symbol": "BTCUSDT",
"positionAmt": "0.001",
"entryPrice": "76500.00",
"markPrice": "76538.12",
"unRealizedProfit": "0",
"leverage": "10",
"marginType": "cross",
"isolatedMargin": "7.65",
"positionSide": "BOTH",
"updateTime": 1748275200000
}
]
| Field | Notes |
|---|---|
positionAmt | Signed quantity: positive = long, negative = short. |
entryPrice | Average entry price. |
markPrice | Live oracle price; "0" if the oracle has not yet published a price for the symbol. |
unRealizedProfit | Always "0" today. Compute client-side as positionAmt * (markPrice − entryPrice). |
leverage | The real per-position leverage (1–100), set when the position was opened via POST /fapi/v1/leverage or an equivalently-levered /v1/orders fill. No longer a fixed "10". |
marginType | Always "cross". |
isolatedMargin | Margin currently locked for the position (ledger.positions.locked_margin), despite marginType being cross. |
positionSide | Always "BOTH" (Rocky uses one-way mode). |
updateTime | Server time at response (ms); identical on every row. |
liquidationPrice,maxNotionalValue,isolatedWallet,breakEvenPriceare not yet returned.
Errors
| HTTP | code | msg |
|---|---|---|
400 | -1100 | Unknown symbol. |
500 | -1000 | Database failure. |
Signature and API-key failures (-1021, -1022, -1102, -2014, -2015) and rate limiting (-1003, HTTP 429) apply to every signed endpoint; see Error Codes.