# Get portfolio position history

`GET /api/positions/{trader}/portfolio/history`

## Authorization



## Parameters

- path: trader (string; required). 

Type: string

Example: "0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660"

- query: offset (number; optional). 

Type: number

Example: 10

Default: 0

minimum: 0

- query: limit (number; optional). 

Type: number

Example: 20

Default: 20

minimum: 1

maximum: 100

- query: walletId (string; optional). 

Type: string

## Example · cURL

```bash
curl --request GET 'https://api.storm.tg/api/positions/{trader}/portfolio/history' \
  --header 'Accept: application/json'
```

## Example · JavaScript

```javascript
const response = await fetch("https://api.storm.tg/api/positions/{trader}/portfolio/history", {
  method: "GET",
  headers: {
    "Accept": "application/json"
  },
});
console.log(response.status, await response.text());
```

## Example · Python

```python
import requests

response = requests.request(
    "GET",
    "https://api.storm.tg/api/positions/{trader}/portfolio/history",
    headers={"Accept":"application/json"},
    timeout=30,
)
print(response.status_code, response.text)
```

## Response 200

**200** application/json — Response

Type: object

Required fields: data, totalCount

Required field types: data (object[]; required), totalCount (integer; required)

- data (object[]; required)

data example: [
  {
    "idx": "string",
    "txId": "string",
    "version": 0,
    "openedAt": "2026-01-01T00:00:00Z",
    "lastUpdatedAt": "2026-01-01T00:00:00Z",
    "closedAt": "2026-01-01T00:00:00Z",
    "type": "long",
    "status": "pending_open",
    "market": "0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660",
    "trader": "0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660",
    "size": "0",
    "notional": "0",
    "fraction": "0",
    "margin": "0",
    "pnl": "0",
    "funding": "0",
    "rolloverFee": "0",
    "settlementOraclePrice": "0",
    "indexOraclePrice": "0",
    "fee": "0",
    "feeRate": "0",
    "exchangedQuote": "0",
    "exchangedBase": "0",
    "direction": "long",
    "eventName": "string",
    "pnlInEvent": "0",
    "feeInEvent": "0",
    "fundingInEvent": "0",
    "rolloverFeeInEvent": "0",
    "executionFeeRate": "0",
    "executionFeeInEvent": "0",
    "executionFee": "0",
    "timestamp": "2026-01-01T00:00:00Z",
    "isOnchain": true,
    "roe": "0",
    "order": {
      "id": "string",
      "txId": "string",
      "trader": "0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660",
      "masterTrader": "0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660",
      "market": "0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660",
      "status": "seq_pending",
      "type": "market",
      "direction": "long",
      "stopPrice": "0",
      "limitPrice": "0",
      "stopTriggerPrice": "0",
      "takeTriggerPrice": "0",
      "leverage": "0",
      "index": 0,
      "positionId": "string",
      "expiration": "2026-01-01T00:00:00Z",
      "amount": "0",
      "indexPrice": "0",
      "settlementOraclePrice": "0",
      "createdAt": "2026-01-01T00:00:00Z",
      "error": "string"
    }
  }
]

data.Type: object[]

data.[]Schema: Data.PositionResponse

data.[]Type: object

data.[]Required fields: idx, txId, version, openedAt, lastUpdatedAt, closedAt, type, status, market, trader, size, notional, fraction, margin, pnl, funding, rolloverFee, settlementOraclePrice, indexOraclePrice, fee, feeRate, exchangedQuote, exchangedBase, direction, eventName, pnlInEvent, feeInEvent, fundingInEvent, rolloverFeeInEvent, executionFeeRate, executionFeeInEvent, executionFee, timestamp, isOnchain, roe

data.[]Required field types: idx (string · nullable; required), txId (string · nullable; required), version (number; required), openedAt (string · date-time; required), lastUpdatedAt (string · date-time; required), closedAt (string · date-time · nullable; required), type (string · enum; required), status (string · enum; required), market (string; required), trader (string; required), size (string · int64; required), notional (string · int64; required), fraction (string · int64; required), margin (string · int64; required), pnl (string · int64 · nullable; required), funding (string · int64 · nullable; required), rolloverFee (string · int64 · nullable; required), settlementOraclePrice (string · int64 · nullable; required), indexOraclePrice (string · int64 · nullable; required), fee (string · int64 · nullable; required), feeRate (string · int64 · nullable; required), exchangedQuote (string · int64 · nullable; required), exchangedBase (string · int64 · nullable; required), direction (string · enum; required), eventName (string · nullable; required), pnlInEvent (string · int64 · nullable; required), feeInEvent (string · int64 · nullable; required), fundingInEvent (string · int64 · nullable; required), rolloverFeeInEvent (string · int64 · nullable; required), executionFeeRate (string · int64 · nullable; required), executionFeeInEvent (string · int64 · nullable; required), executionFee (string · int64 · nullable; required), timestamp (string · date-time; required), isOnchain (boolean; required), roe (string · int64 · nullable; required)

- data.[]idx (string · nullable; required)

data.[]idx example: string

data.[]idx.Type: string · nullable

- data.[]txId (string · nullable; required)

data.[]txId example: string

data.[]txId.Type: string · nullable

- data.[]version (number; required)

data.[]version example: 0

data.[]version.Type: number

- data.[]openedAt (string · date-time; required)

data.[]openedAt example: 2026-01-01T00:00:00Z

data.[]openedAt.Type: string · date-time

data.[]openedAt.format: date-time

- data.[]lastUpdatedAt (string · date-time; required)

data.[]lastUpdatedAt example: 2026-01-01T00:00:00Z

data.[]lastUpdatedAt.Type: string · date-time

data.[]lastUpdatedAt.format: date-time

- data.[]closedAt (string · date-time · nullable; required)

data.[]closedAt example: 2026-01-01T00:00:00Z

data.[]closedAt.Type: string · date-time · nullable

data.[]closedAt.format: date-time

- data.[]type (string · enum; required)

data.[]type example: long

data.[]type.Type: string · enum

data.[]type.Allowed values: ["long","short"]

- data.[]status (string · enum; required)

data.[]status example: pending_open

data.[]status.Type: string · enum

data.[]status.Allowed values: ["pending_open","pending_close","pending_full_close","pending_liquidate","pending_max_pnl","opened","closed","liquidated"]

- data.[]market (string; required)

data.[]market example: 0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660

data.[]market.Type: string

- data.[]trader (string; required)

data.[]trader example: 0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660

data.[]trader.Type: string

- data.[]size (string · int64; required)

data.[]size example: 0

data.[]size.Type: string · int64

data.[]size.format: int64

data.[]size.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]notional (string · int64; required)

data.[]notional example: 0

data.[]notional.Type: string · int64

data.[]notional.format: int64

data.[]notional.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]fraction (string · int64; required)

data.[]fraction example: 0

data.[]fraction.Type: string · int64

data.[]fraction.format: int64

data.[]fraction.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]margin (string · int64; required)

data.[]margin example: 0

data.[]margin.Type: string · int64

data.[]margin.format: int64

data.[]margin.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]pnl (string · int64 · nullable; required)

data.[]pnl example: 0

data.[]pnl.Type: string · int64 · nullable

data.[]pnl.format: int64

data.[]pnl.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]funding (string · int64 · nullable; required)

data.[]funding example: 0

data.[]funding.Type: string · int64 · nullable

data.[]funding.format: int64

data.[]funding.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]rolloverFee (string · int64 · nullable; required)

data.[]rolloverFee example: 0

data.[]rolloverFee.Type: string · int64 · nullable

data.[]rolloverFee.format: int64

data.[]rolloverFee.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]settlementOraclePrice (string · int64 · nullable; required)

data.[]settlementOraclePrice example: 0

data.[]settlementOraclePrice.Type: string · int64 · nullable

data.[]settlementOraclePrice.format: int64

data.[]settlementOraclePrice.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]indexOraclePrice (string · int64 · nullable; required)

data.[]indexOraclePrice example: 0

data.[]indexOraclePrice.Type: string · int64 · nullable

data.[]indexOraclePrice.format: int64

data.[]indexOraclePrice.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]fee (string · int64 · nullable; required)

data.[]fee example: 0

data.[]fee.Type: string · int64 · nullable

data.[]fee.format: int64

data.[]fee.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]feeRate (string · int64 · nullable; required)

data.[]feeRate example: 0

data.[]feeRate.Type: string · int64 · nullable

data.[]feeRate.format: int64

data.[]feeRate.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]exchangedQuote (string · int64 · nullable; required)

data.[]exchangedQuote example: 0

data.[]exchangedQuote.Type: string · int64 · nullable

data.[]exchangedQuote.format: int64

data.[]exchangedQuote.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]exchangedBase (string · int64 · nullable; required)

data.[]exchangedBase example: 0

data.[]exchangedBase.Type: string · int64 · nullable

data.[]exchangedBase.format: int64

data.[]exchangedBase.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]direction (string · enum; required)

data.[]direction example: long

data.[]direction.Type: string · enum

data.[]direction.Allowed values: ["long","short"]

- data.[]eventName (string · nullable; required)

data.[]eventName example: string

data.[]eventName.Type: string · nullable

- data.[]pnlInEvent (string · int64 · nullable; required)

data.[]pnlInEvent example: 0

data.[]pnlInEvent.Type: string · int64 · nullable

data.[]pnlInEvent.format: int64

data.[]pnlInEvent.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]feeInEvent (string · int64 · nullable; required)

data.[]feeInEvent example: 0

data.[]feeInEvent.Type: string · int64 · nullable

data.[]feeInEvent.format: int64

data.[]feeInEvent.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]fundingInEvent (string · int64 · nullable; required)

data.[]fundingInEvent example: 0

data.[]fundingInEvent.Type: string · int64 · nullable

data.[]fundingInEvent.format: int64

data.[]fundingInEvent.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]rolloverFeeInEvent (string · int64 · nullable; required)

data.[]rolloverFeeInEvent example: 0

data.[]rolloverFeeInEvent.Type: string · int64 · nullable

data.[]rolloverFeeInEvent.format: int64

data.[]rolloverFeeInEvent.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]executionFeeRate (string · int64 · nullable; required)

data.[]executionFeeRate example: 0

data.[]executionFeeRate.Type: string · int64 · nullable

data.[]executionFeeRate.format: int64

data.[]executionFeeRate.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]executionFeeInEvent (string · int64 · nullable; required)

data.[]executionFeeInEvent example: 0

data.[]executionFeeInEvent.Type: string · int64 · nullable

data.[]executionFeeInEvent.format: int64

data.[]executionFeeInEvent.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]executionFee (string · int64 · nullable; required)

data.[]executionFee example: 0

data.[]executionFee.Type: string · int64 · nullable

data.[]executionFee.format: int64

data.[]executionFee.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]timestamp (string · date-time; required)

data.[]timestamp example: 2026-01-01T00:00:00Z

data.[]timestamp.Type: string · date-time

data.[]timestamp.format: date-time

- data.[]isOnchain (boolean; required)

data.[]isOnchain example: true

data.[]isOnchain.Type: boolean

- data.[]roe (string · int64 · nullable; required)

data.[]roe example: 0

data.[]roe.Type: string · int64 · nullable

data.[]roe.format: int64

data.[]roe.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]order (object · nullable; optional)

data.[]order example: {
  "id": "string",
  "txId": "string",
  "trader": "0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660",
  "masterTrader": "0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660",
  "market": "0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660",
  "status": "seq_pending",
  "type": "market",
  "direction": "long",
  "stopPrice": "0",
  "limitPrice": "0",
  "stopTriggerPrice": "0",
  "takeTriggerPrice": "0",
  "leverage": "0",
  "index": 0,
  "positionId": "string",
  "expiration": "2026-01-01T00:00:00Z",
  "amount": "0",
  "indexPrice": "0",
  "settlementOraclePrice": "0",
  "createdAt": "2026-01-01T00:00:00Z",
  "error": "string"
}

data.[]order.Type: object · nullable

data.[]order.Required fields: id, txId, trader, masterTrader, market, status, type, direction, stopPrice, limitPrice, stopTriggerPrice, takeTriggerPrice, leverage, index, positionId, expiration, amount, indexPrice, settlementOraclePrice, createdAt, error

data.[]order.Required field types: id (string; required), txId (string; required), trader (string; required), masterTrader (string; required), market (string; required), status (string · enum; required), type (string · enum; required), direction (string · enum; required), stopPrice (string · int64 · nullable; required), limitPrice (string · int64 · nullable; required), stopTriggerPrice (string · int64 · nullable; required), takeTriggerPrice (string · int64 · nullable; required), leverage (string · int64 · nullable; required), index (number · nullable; required), positionId (string · nullable; required), expiration (string · date-time · nullable; required), amount (string · int64 · nullable; required), indexPrice (string · int64 · nullable; required), settlementOraclePrice (string · int64 · nullable; required), createdAt (string · date-time; required), error (string · nullable; required)

- data.[]order.id (string; required)

data.[]order.id example: string

data.[]order.id.Type: string

- data.[]order.txId (string; required)

data.[]order.txId example: string

data.[]order.txId.Type: string

- data.[]order.trader (string; required)

data.[]order.trader example: 0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660

data.[]order.trader.Type: string

- data.[]order.masterTrader (string; required)

data.[]order.masterTrader example: 0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660

data.[]order.masterTrader.Type: string

- data.[]order.market (string; required)

data.[]order.market example: 0:72c310c83de5060d21674d58379b9a153854338a63d82588f8d912f83a3f8660

data.[]order.market.Type: string

- data.[]order.status (string · enum; required)

data.[]order.status example: seq_pending

data.[]order.status.Type: string · enum

data.[]order.status.Allowed values: ["seq_pending","seq_executing","active","pending","tx_sent","executed","canceled","canceled_by_sequencer","expired","error"]

- data.[]order.type (string · enum; required)

data.[]order.type example: market

data.[]order.type.Type: string · enum

data.[]order.type.Allowed values: ["market","stop","take","limit","liquidation","max_pnl","add_margin","remove_margin"]

- data.[]order.direction (string · enum; required)

data.[]order.direction example: long

data.[]order.direction.Type: string · enum

data.[]order.direction.Allowed values: ["long","short"]

- data.[]order.stopPrice (string · int64 · nullable; required)

data.[]order.stopPrice example: 0

data.[]order.stopPrice.Type: string · int64 · nullable

data.[]order.stopPrice.format: int64

data.[]order.stopPrice.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]order.limitPrice (string · int64 · nullable; required)

data.[]order.limitPrice example: 0

data.[]order.limitPrice.Type: string · int64 · nullable

data.[]order.limitPrice.format: int64

data.[]order.limitPrice.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]order.stopTriggerPrice (string · int64 · nullable; required)

data.[]order.stopTriggerPrice example: 0

data.[]order.stopTriggerPrice.Type: string · int64 · nullable

data.[]order.stopTriggerPrice.format: int64

data.[]order.stopTriggerPrice.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]order.takeTriggerPrice (string · int64 · nullable; required)

data.[]order.takeTriggerPrice example: 0

data.[]order.takeTriggerPrice.Type: string · int64 · nullable

data.[]order.takeTriggerPrice.format: int64

data.[]order.takeTriggerPrice.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]order.leverage (string · int64 · nullable; required)

data.[]order.leverage example: 0

data.[]order.leverage.Type: string · int64 · nullable

data.[]order.leverage.format: int64

data.[]order.leverage.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]order.index (number · nullable; required)

data.[]order.index example: 0

data.[]order.index.Type: number · nullable

- data.[]order.positionId (string · nullable; required)

data.[]order.positionId example: string

data.[]order.positionId.Type: string · nullable

- data.[]order.expiration (string · date-time · nullable; required)

data.[]order.expiration example: 2026-01-01T00:00:00Z

data.[]order.expiration.Type: string · date-time · nullable

data.[]order.expiration.format: date-time

- data.[]order.amount (string · int64 · nullable; required)

data.[]order.amount example: 0

data.[]order.amount.Type: string · int64 · nullable

data.[]order.amount.format: int64

data.[]order.amount.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]order.indexPrice (string · int64 · nullable; required)

data.[]order.indexPrice example: 0

data.[]order.indexPrice.Type: string · int64 · nullable

data.[]order.indexPrice.format: int64

data.[]order.indexPrice.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]order.settlementOraclePrice (string · int64 · nullable; required)

data.[]order.settlementOraclePrice example: 0

data.[]order.settlementOraclePrice.Type: string · int64 · nullable

data.[]order.settlementOraclePrice.format: int64

data.[]order.settlementOraclePrice.pattern: ^(0|-?[1-9][0-9]*)$

- data.[]order.createdAt (string · date-time; required)

data.[]order.createdAt example: 2026-01-01T00:00:00Z

data.[]order.createdAt.Type: string · date-time

data.[]order.createdAt.format: date-time

- data.[]order.error (string · nullable; required)

data.[]order.error example: string

data.[]order.error.Type: string · nullable

- totalCount (integer; required)

totalCount example: 0

totalCount.Type: integer

totalCount.minimum: 0

Example



```json
{
  "data": [],
  "totalCount": 0
}
```