Appearance
Are you an LLM? You can read better optimized documentation at /api/reference/list-positions.md for this page in Markdown format
GET /positions
Returns your currently-open positions across all accounts. Pass ?account_id= to scope to one account.
Each position includes:
signal—SignalSummarysub-object ({ signal_id, telegram_message_id } | null) — the originating Telegram message. Use this to correlate live positions to the channel post that triggered the trade without a separate join.unrealized_pl— live unrealized P&L.current_price— the position's current market price.account_id,account_label,currency— which account owns this position.
This endpoint is not paginated — it returns your entire open position set.
Currently-open positions across accounts
GET
/positions
Each position includes a nested signal sub-object with the originating Telegram message ID. See SignalSummary for null semantics.
Authorizations
bearerAuth
TypeHTTP (bearer)
Parameters
Query Parameters
account_id
Typestring
format
uuidResponses
OK
application/json
JSON
{
"data": [
{
"id": "string",
"metaapi_position_id": "string",
"symbol": "string",
"direction": "string",
"volume": 0,
"entry_price": 0,
"current_price": 0,
"unrealized_pl": 0,
"status": "string",
"trade_id": "string",
"signal": {
"signal_id": "string",
"telegram_message_id": 0
},
"account_id": "string",
"account_label": "string",
"currency": "string"
}
]
}

