---
title: "GET /v1/portfolios/{portfolioSlug}/defi-positions/{positionRef}"
method: GET
path: "/v1/portfolios/{portfolioSlug}/defi-positions/{positionRef}"
tags: ["Portfolios"]
---

# GET /v1/portfolios/{portfolioSlug}/defi-positions/{positionRef}

`GET /v1/portfolios/{portfolioSlug}/defi-positions/{positionRef}`

## Request

- Base URL: `https://api.tokenbooks.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tokenbooks.io/v1/portfolios/{portfolioSlug}/defi-positions/{positionRef}`
- Auth: API key in header `x-api-key`

## Path parameters

- `positionRef` string, required
- `portfolioSlug` string, required

## Response `200`

- DefiPositionResponseDto
  - `positionRef` string, required: Stable public DeFi position reference
  - `positionKey` string, required: Protocol-defined stable logical position key
  - `positionType` 'LP' | 'STAKE' | 'LEND' | 'BORROW' | 'NATIVE_STAKE' | 'PROTOCOL' | 'VAULT', required: DeFi position type
  - `status` 'ACTIVE' | 'CLOSED' | 'PARTIAL', required: DeFi position status
  - `openedAt` string, date-time, required: Position opened timestamp
  - `closedAt` string, date-time, nullable, required: Position closed timestamp, if closed
  - `tokenAddresses` string[], required: Token addresses involved in the position
  - `custodyAddresses` string[], required: Custody addresses involved in the position
  - `protocol` object, required: Protocol metadata
    - `name` string, required: Protocol display name
    - `slug` string, required: Protocol slug
    - `type` 'DEX' | 'LENDING' | 'LIQUIDITY_POOL' | 'STAKING' | 'YIELD_FARMING' | 'NATIVE_STAKING' | 'OTHER', required: DeFi protocol type
    - `description` string, nullable, required: Protocol description
  - `contract` object, required: Protocol contract metadata
    - `address` string, required: Protocol contract address
    - `chainId` string, required: Contract chain ID
    - `chain` object, required: Contract chain display metadata
      - `id` string, required: Chain ID
      - `name` string, required: Chain display name
    - `type` 'MAIN' | 'POOL' | 'TOKEN' | 'STAKING' | 'REWARDS' | 'OTHER', required: DeFi contract type
    - `rewardMode` string, nullable, required: Reward distribution mode
    - `custodyShift` boolean, required: Whether this contract shifts custody
  - `wallet` object, required: Public wallet metadata
    - `name` string, required: Wallet display name
    - `chainId` string, required: Wallet chain ID
    - `chain` object, required: Wallet chain display metadata
      - `id` string, required: Chain ID
      - `name` string, required: Chain display name
    - `address` string, required: Wallet address
  - `tokenSnapshots` object[], required: Token snapshot history rows for this position
    - `tokenAddress` string, required: Token contract address
    - `role` 'UNDERLYING' | 'COLLATERAL' | 'RECEIPT_TOKEN' | 'LP_SHARE' | 'LIABILITY_TOKEN' | 'REWARD' | 'OTHER', required: Token role in the DeFi position
    - `rawBalance` string, required: Raw token amount in token decimals
    - `quantity` string, nullable, required: Human-readable token amount when decimals are known
    - `valueQuote` string, nullable, required: Fair market value in quote currency
    - `quoteCurrency` string, nullable, required: Quote currency
    - `quoteSource` string, nullable, required: Quote source
    - `aprRate` string, nullable, required: Annual percentage rate
    - `timestamp` string, date-time, required: Snapshot timestamp
    - `token` object, nullable, required: Token metadata when available
      - `assetId` string, nullable, required: Asset ID, if the token is asset-backed
      - `name` string, required: Token display name
      - `symbol` string, required: Token symbol
      - `decimals` integer, required: Token decimals
  - `transferSummaries` object[], required: Aggregated transfer totals for this position
    - `tokenAddress` string, required: Token contract address
    - `totalStaked` string, required: Raw total amount sent into the position
    - `totalReceived` string, required: Raw total amount received from the position
    - `lastUpdated` string, date-time, required: Last transfer timestamp

---

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