Positions
View and manage open positions
Get Positions
Retrieve your current positions. By default returns open positions only.
GET /v1/positions
Authorization: Bearer <token>Query Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
status | string | No | OPEN (default) or CLOSED |
Response:
{
"ok": true,
"positions": [
{
"id": "clx...",
"accountId": "clx...",
"venuePositionId": "33600",
"symbol": "BTCUSDT",
"quantity": "0.05",
"avgEntryPrice": "70500.00",
"markPrice": "71034.50",
"liquidationPrice": "51493.41",
"unrealizedPnl": "26.75",
"realizedPnl": "0",
"fundingFee": "-1.23",
"initialMargin": "176.25",
"maintenanceMargin": "14.10",
"leverage": 20,
"marginMode": "Isolated",
"status": "OPEN",
"closeReason": null,
"closedAt": null,
"updatedAt": "2026-04-02T22:35:25.456Z"
}
]
}| Field | Type | Description |
|---|---|---|
venuePositionId | string | Exchange-assigned position ID |
quantity | string | Position size. Positive = long, negative = short |
avgEntryPrice | string | Average entry price |
markPrice | string | Current mark price from exchange |
liquidationPrice | string | Estimated liquidation price |
unrealizedPnl | string | Unrealized PnL from exchange |
realizedPnl | string | Realized PnL from exchange |
fundingFee | string | Accumulated funding fees |
initialMargin | string | Initial margin (collateral) for this position |
maintenanceMargin | string | Maintenance margin requirement |
leverage | number | Position leverage multiplier |
marginMode | string | Isolated or Cross |
status | string | OPEN or CLOSED |
closeReason | string|null | Why the position was closed: MANUAL, LIQUIDATED, or UNKNOWN |
closedAt | string|null | ISO timestamp when position was closed |
Position History
Get closed positions by passing status=CLOSED:
GET /v1/positions?status=CLOSED
Authorization: Bearer <token>Closed positions include a closeReason field:
| Close Reason | Description |
|---|---|
MANUAL | User closed the position manually |
LIQUIDATED | Position was liquidated (mark price crossed liquidation price) |
UNKNOWN | Closed during a period when WebSocket was disconnected |
Close Position
Close an entire position or a partial amount at market price.
POST /v1/positions/close
Authorization: Bearer <token>
Content-Type: application/json
{
"symbol": "BTCUSDT",
"positionSide": "LONG"
}Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
symbol | string | Yes | Trading pair |
positionSide | string | No | BOTH, LONG, or SHORT |
quantity | string | No | Amount to close. Omit for full close |
Response:
{
"ok": true,
"closed": {
"symbol": "BTCUSDT",
"quantity": "0.05",
"remainingPosition": "0"
}
}Risk Exposure
Get aggregated risk metrics across all open positions:
GET /v1/risk/exposure
Authorization: Bearer <token>{
"ok": true,
"grossExposure": "3525.00",
"positions": [...]
}