Skip to main content

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

NameTypeRequiredNotes
symbolstringnostandard 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
}
]
FieldNotes
positionAmtSigned quantity: positive = long, negative = short.
entryPriceAverage entry price.
markPriceLive oracle price; "0" if the oracle has not yet published a price for the symbol.
unRealizedProfitAlways "0" today. Compute client-side as positionAmt * (markPrice − entryPrice).
leverageThe 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".
marginTypeAlways "cross".
isolatedMarginMargin currently locked for the position (ledger.positions.locked_margin), despite marginType being cross.
positionSideAlways "BOTH" (Rocky uses one-way mode).
updateTimeServer time at response (ms); identical on every row.

liquidationPrice, maxNotionalValue, isolatedWallet, breakEvenPrice are not yet returned.

Errors

HTTPcodemsg
400-1100Unknown symbol.
500-1000Database 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.