---
title: "Get a DeFi position by wallet selector (deprecated)"
method: GET
path: "/v1/portfolios/{portfolioSlug}/defi-positions/by-selector"
tags: ["Portfolios"]
deprecated: true
---

# Get a DeFi position by wallet selector (deprecated)

`GET /v1/portfolios/{portfolioSlug}/defi-positions/by-selector`

## 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/by-selector`
- Auth: API key in header `x-api-key`

> **Deprecated.**

Deprecated. Use GET :portfolioSlug/defi-positions/:positionRef with the positionRef returned by the list route. A reference identifies a position unambiguously, while positionKey is unique only within one wallet. This selector form will be removed once every caller has moved to the reference.

## Path parameters

- `portfolioSlug` string, required

## Query parameters

- `walletChainId` string, required: Owning wallet chain ID
- `walletAddress` string, required: Owning wallet address
- `positionKey` string, required: Protocol-defined stable logical position key

## 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)
