Skip to main content
GET
/
api
/
v2
/
portfolio
/
positions
GET /api/v2/portfolio/positions — Get user positions with PnL
curl --request GET \
  --url https://api.shuriken.trade/api/v2/portfolio/positions \
  --header 'Authorization: Bearer <token>'
{
  "data": {
    "positionCount": 1,
    "positions": [
      {
        "balanceUsd": 1000,
        "boughtUsd": 1500,
        "latestBalanceRaw": "1000000000",
        "latestTokenUsdPrice": 1,
        "network": "sol",
        "realisedPnlPct": -33.33,
        "soldUsd": 500,
        "tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
        "tokenDecimal": 6,
        "totalPnlPct": 0,
        "walletAddress": "CuieVDEDtLo7FypA9SbLM9saXFdb1dsshEkyErMqkRQq"
      }
    ],
    "totalValueUsd": 1000
  },
  "requestId": "<string>",
  "pagination": {
    "hasMore": true,
    "limit": 1,
    "page": 1,
    "total": 1
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.shuriken.trade/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Use Authorization: Bearer <jwt> for user auth or Authorization: Bearer sk_{keyId}_{secret} for API key auth.

Query Parameters

chain
string

Filter by chain

status
string

Filter by position status

Response

200 - application/json

Portfolio positions

V2 success response envelope

data
object
required

Positions response with aggregated data

Example:
{
  "positionCount": 1,
  "positions": [
    {
      "balanceUsd": 1000,
      "boughtUsd": 1500,
      "latestBalanceRaw": "1000000000",
      "latestTokenUsdPrice": 1,
      "network": "sol",
      "realisedPnlPct": -33.33,
      "soldUsd": 500,
      "tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "tokenDecimal": 6,
      "totalPnlPct": 0,
      "walletAddress": "CuieVDEDtLo7FypA9SbLM9saXFdb1dsshEkyErMqkRQq"
    }
  ],
  "totalValueUsd": 1000
}
requestId
string
required
pagination
object

Page-based pagination info (per RFC)