---
title: "Get token transfers for a wallet's position in a currency"
method: GET
path: "/api/v2/account/{address}/pnl/token-transfers"
tags: ["Account Endpoints"]
---

# Get token transfers for a wallet's position in a currency

`GET /api/v2/account/{address}/pnl/token-transfers`

Get a paginated, transfer-level breakdown of a wallet's position in a single currency (identified by contract_address + chain). Combine `direction` and `transfer_type` to distinguish zero-cost acquisitions (airdrops, CEX transfers) from buys.

## Path parameters

- `address` string, required

## Query parameters

- `contract_address` string, required
- `chain` 'blast' | 'base' | 'ethereum' | 'zora' | 'arbitrum' | 'sei' | 'avalanche' | 'polygon' | 'optimism' | 'ape_chain' | 'flow' | 'b3' | 'soneium' | 'ronin' | 'bera_chain' | 'solana' | 'shape' | 'unichain' | 'gunzilla' | 'abstract' | 'animechain' | 'hyperevm' | 'somnia' | 'monad' | 'hyperliquid' | 'megaeth' | 'ink' | 'robinhood', required — Blockchain chain identifier. Use the chain slug (e.g., 'ethereum', 'polygon', 'arbitrum', 'optimism', 'base')
- `limit` integer
- `next` string

## Response `200`

Position token transfers

## Other responses

- `400` — For error reasons, review the response data.
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict
- `500` — Internal server error. Please open a support ticket so OpenSea can investigate.

---

[API](https://skmtc.net/opensea/apis/opensea-api.md) · [All operations](https://skmtc.net/opensea/apis/opensea-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/opensea/opensea-api/versions/acee8835f2ae/schema)
