---
title: "Get a shareable position with cursor-paginated transactions"
method: GET
path: "/v2/positions/{positionId}"
tags: ["positions"]
---

# Get a shareable position with cursor-paginated transactions

`GET /v2/positions/{positionId}`

Fills are complete grouped transactions, oldest first, ordered by execution time and fill ID. Pass nextCursor for subsequent pages. Total counts all grouped transactions; fees and funding remain lifecycle totals. Open positions may gain transactions between requests. Uses the same public-position access rules as v1.

## Path parameters

- `positionId` string, uuid, required

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

Successful response

- PositionGetV2Output
  - `id` string, required
  - `isOpen` boolean, required
  - `user` PublicPositionUser, required
    - `id` string, required
    - `username` string, required
    - `display_name` string, required
    - `avatar_url` string, required
    - `rank` integer, nullable, required
    - `clan_id` string, nullable, required
    - `clan` UserClan, nullable
      - `id` string, required
      - `name` string, required
      - `description` string, nullable, required
      - `image_url` string, nullable, required
      - `banner_url` string, nullable, required
      - `chat_room_id` string, nullable, required
      - `created_at` string, required
      - `updated_at` string, required
    - `account_value_tier` integer, required
    - `is_official` boolean, required
    - `referral_code` string, nullable, required
    - `referral_code_alt` string, nullable, required
    - `bio` string, nullable, required
    - `feature_image` string, required
    - `last_online` string, nullable, required
    - `created_at` string, required
    - `x_username` string, nullable, required
    - `elo` integer, nullable, required
    - `followerCount` integer, required
    - `followingCount` integer, required
    - `pnlShareEnabled` boolean, required
    - `pnlShareRate` number, required
    - `isDueling` boolean, required
    - `isOnline` boolean, required
    - `isFollowing` boolean, required
    - `isOwnProfile` boolean, required
    - `activeCopyProfile` ActiveCopyProfile, required
      - `id` string, required
      - `allocatedAmount` number, required
      - `subWalletAddress` string, nullable, required
      - `pnlShareRate` number, required
      - `createdAt` string, required
  - `copyTarget` AvatarUser, required
    - `id` string, required
    - `username` string, required
    - `display_name` string, required
    - `avatar_url` string, required
    - `rank` integer, nullable, required
    - `clan_id` string, nullable, required
    - `clan` UserClan, nullable
      - `id` string, required
      - `name` string, required
      - `description` string, nullable, required
      - `image_url` string, nullable, required
      - `banner_url` string, nullable, required
      - `chat_room_id` string, nullable, required
      - `created_at` string, required
      - `updated_at` string, required
    - `account_value_tier` integer, required
    - `is_official` boolean, required
  - `symbol` string, required
  - `side` 'LONG' | 'SHORT', required
  - `size` number, required
  - `entryPrice` number, required
  - `closedPrice` number, nullable, required
  - `walletAddress` string, required
  - `leverageValue` integer, required
  - `unrealizedPnl` number, required
  - `realizedPnl` number, required
  - `openedAt` string, required
  - `closedAt` string, nullable, required
  - `totalFees` number, required
  - `totalFunding` number, required
  - `fills` HistoryFill[], required
    - `fill_id` string, required
    - `symbol` string, required
    - `side` string, required
    - `direction` string, nullable, required
    - `size` number, required
    - `price` number, required
    - `fee` number, required
    - `closed_pnl` number, required
    - `executed_at` string, required
  - `pnlSparkline` SparklinePoint[], required
    - `t` number, required
    - `v` number, required
  - `total` integer, required
  - `nextCursor` string
  - `previousCursor` string
  - `hasMore` boolean, required

## Other responses

- `400` — Invalid input data
- `404` — Resource not found
- `500` — Internal server error

## Changes

- **2026-09-18** `280c198d7e84` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/legend/apis/legend-api/changes/v2/positions/:positionId/get.md)

---

[API](https://skmtc.dev/legend/apis/legend-api.md) · [All operations](https://skmtc.dev/legend/apis/legend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/legend/apis/legend-api/revisions/cc5ceda89fac?raw)
