Get claim transactions (v3)
curl --request POST \
--url https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3 \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"feeClaimer": "<string>",
"tokenMint": "<string>"
}
'import requests
url = "https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3"
payload = {
"feeClaimer": "<string>",
"tokenMint": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({feeClaimer: '<string>', tokenMint: '<string>'})
};
fetch('https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3', 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/claim-txs/v3",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'feeClaimer' => '<string>',
'tokenMint' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3"
payload := strings.NewReader("{\n \"feeClaimer\": \"<string>\",\n \"tokenMint\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"feeClaimer\": \"<string>\",\n \"tokenMint\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"feeClaimer\": \"<string>\",\n \"tokenMint\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"response": [
{
"tx": "<string>",
"blockhash": {
"blockhash": "<string>",
"lastValidBlockHeight": 123
}
}
]
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}Fee Claiming
Get Claim Transactions (v3)
Generate normal creator/recipient claim transactions for a token using the fee claimer wallet and token mint. The API determines the position and pool state. These transactions do not withdraw the separate SOL deployer entitlement, even when the wallet is also the deployer. Use POST /fee-share/deployer/claim-txs for deployer revenue. Sign, submit, and confirm all returned transactions in order.
POST
/
token-launch
/
claim-txs
/
v3
Get claim transactions (v3)
curl --request POST \
--url https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3 \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"feeClaimer": "<string>",
"tokenMint": "<string>"
}
'import requests
url = "https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3"
payload = {
"feeClaimer": "<string>",
"tokenMint": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({feeClaimer: '<string>', tokenMint: '<string>'})
};
fetch('https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3', 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/claim-txs/v3",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'feeClaimer' => '<string>',
'tokenMint' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3"
payload := strings.NewReader("{\n \"feeClaimer\": \"<string>\",\n \"tokenMint\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"feeClaimer\": \"<string>\",\n \"tokenMint\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api-v2.bags.fm/api/v1/token-launch/claim-txs/v3")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"feeClaimer\": \"<string>\",\n \"tokenMint\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"response": [
{
"tx": "<string>",
"blockhash": {
"blockhash": "<string>",
"lastValidBlockHeight": 123
}
}
]
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}The simplified v3 claim endpoint automatically handles normal creator/recipient fee claiming. Just provide the fee claimer wallet and token mint — the API determines the position type and builds the appropriate transactions.
For a complete walkthrough, see the Claim Fees guide.
The separate SOL deployer share uses Create Deployer Claim Transactions, including for wallets that also receive normal creator fees.
Authorizations
API key authentication. Provide your API key as the header value.
Body
application/json
