Get claimable positions
curl --request GET \
--url https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions \
--header 'x-api-key: <api-key>'import requests
url = "https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"response": [
{
"isCustomFeeVault": true,
"baseMint": "<string>",
"isMigrated": true,
"totalClaimableLamportsUserShare": 123,
"programId": "<string>",
"quoteMint": "<string>",
"virtualPool": "<string>",
"virtualPoolAddress": "<string>",
"virtualPoolClaimableAmount": 123,
"virtualPoolClaimableLamportsUserShare": 123,
"dammPoolClaimableAmount": 123,
"dammPoolClaimableLamportsUserShare": 123,
"dammPoolAddress": "<string>",
"dammPositionInfo": {
"position": "<string>",
"pool": "<string>",
"positionNftAccount": "<string>",
"tokenAMint": "<string>",
"tokenBMint": "<string>",
"tokenAVault": "<string>",
"tokenBVault": "<string>"
},
"claimableDisplayAmount": 123,
"user": "<string>",
"claimerIndex": 123,
"userBps": 123,
"customFeeVault": "<string>",
"customFeeVaultClaimerA": "<string>",
"customFeeVaultClaimerB": "<string>"
}
]
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}Fee Claiming
Get Claimable Positions
Retrieve all claimable fee positions for a wallet. Returns positions with fee information from virtual pools and DAMM v2.
GET
/
token-launch
/
claimable-positions
Get claimable positions
curl --request GET \
--url https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions \
--header 'x-api-key: <api-key>'import requests
url = "https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api-v2.bags.fm/api/v1/token-launch/claimable-positions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"response": [
{
"isCustomFeeVault": true,
"baseMint": "<string>",
"isMigrated": true,
"totalClaimableLamportsUserShare": 123,
"programId": "<string>",
"quoteMint": "<string>",
"virtualPool": "<string>",
"virtualPoolAddress": "<string>",
"virtualPoolClaimableAmount": 123,
"virtualPoolClaimableLamportsUserShare": 123,
"dammPoolClaimableAmount": 123,
"dammPoolClaimableLamportsUserShare": 123,
"dammPoolAddress": "<string>",
"dammPositionInfo": {
"position": "<string>",
"pool": "<string>",
"positionNftAccount": "<string>",
"tokenAMint": "<string>",
"tokenBMint": "<string>",
"tokenAVault": "<string>",
"tokenBVault": "<string>"
},
"claimableDisplayAmount": 123,
"user": "<string>",
"claimerIndex": 123,
"userBps": 123,
"customFeeVault": "<string>",
"customFeeVaultClaimerA": "<string>",
"customFeeVaultClaimerB": "<string>"
}
]
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}Returns all claimable fee positions for a wallet. Use this to inspect position details and claimable amounts before claiming.
This endpoint is optional for claiming fees. The v3 claim endpoint handles position lookup automatically — you only need this if you want to inspect positions beforehand.
Authorizations
API key authentication. Provide your API key as the header value.
Query Parameters
Public key of the wallet to check for claimable positions
⌘I
