---
title: "Get claimable positions"
method: GET
path: "/token-launch/claimable-positions"
tags: ["Fee Claiming"]
---

# Get claimable positions

`GET /token-launch/claimable-positions`

## Request

- Base URL: `https://public-api-v2.bags.fm/api/v1`
- URL: `https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/bags/apis/bags-public-api-v2/docs/token-launch/claimable-positions/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieve all claimable fee positions for a wallet. Returns positions with fee information from virtual pools and DAMM v2.

## Query parameters

- `wallet` string, required

## Response `200`

Successfully retrieved claimable positions

- object
  - `success` boolean, required
  - `response` ClaimablePosition[]
    - `programId` string: Fee share program ID (v1 or v2)
    - `isCustomFeeVault` boolean, required: Whether this position uses a custom fee vault
    - `baseMint` string, required: Base token mint public key
    - `quoteMint` string, nullable: Quote token mint public key (for v2)
    - `virtualPool` string: Virtual pool address
    - `virtualPoolAddress` string, nullable: Virtual pool address (alternative field name)
    - `virtualPoolClaimableAmount` number, nullable: Claimable amount from virtual pool (v1)
    - `virtualPoolClaimableLamportsUserShare` number, nullable: User's share of claimable lamports from virtual pool (v2)
    - `dammPoolClaimableAmount` number, nullable: Claimable amount from DAMM pool (v1)
    - `dammPoolClaimableLamportsUserShare` number, nullable: User's share of claimable lamports from DAMM pool (v2)
    - `isMigrated` boolean, required: Whether the pool has migrated to DAMM v2
    - `dammPoolAddress` string, nullable: DAMM pool address
    - `dammPositionInfo` DammPositionInfo
      - `position` string: DAMM v2 position public key
      - `pool` string: DAMM v2 pool public key
      - `positionNftAccount` string: Position NFT account public key
      - `tokenAMint` string: Token A mint public key
      - `tokenBMint` string: Token B mint public key
      - `tokenAVault` string: Token A vault public key
      - `tokenBVault` string: Token B vault public key
    - `totalClaimableLamportsUserShare` number, required: Total claimable lamports for the user
    - `claimableDisplayAmount` number, nullable: Human-readable claimable amount
    - `user` string, nullable: User wallet address (v2)
    - `claimerIndex` number, nullable: Index of the claimer in the config (v2)
    - `userBps` number, nullable: User's basis points allocation (v2)
    - `customFeeVault` string, nullable: Custom fee vault address (v1)
    - `customFeeVaultClaimerA` string, nullable: Custom fee vault claimer A (v1)
    - `customFeeVaultClaimerB` string, nullable: Custom fee vault claimer B (v1)
    - `customFeeVaultClaimerSide` 'A' | 'B', nullable: Which side of the custom fee vault the user is on (v1)

## Other responses

- `400`: Bad request - Invalid wallet address
- `401`: Unauthorized - Invalid or missing API key
- `500`: Internal server error

---

[API](https://skmtc.dev/bags/apis/bags-public-api-v2.md) - [All operations](https://skmtc.dev/bags/apis/bags-public-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/bags/apis/bags-public-api-v2/revisions/4a14b82cd39d?raw)
