Get fee share wallets (bulk, v2)
curl --request POST \
--url https://public-api-v2.bags.fm/api/v1/token-launch/fee-share/wallet/v2/bulk \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"items": [
{
"username": "<string>",
"provider": "twitter",
"chain": "SOL"
}
]
}
'import requests
url = "https://public-api-v2.bags.fm/api/v1/token-launch/fee-share/wallet/v2/bulk"
payload = { "items": [
{
"username": "<string>",
"provider": "twitter",
"chain": "SOL"
}
] }
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({items: [{username: '<string>', provider: 'twitter', chain: 'SOL'}]})
};
fetch('https://public-api-v2.bags.fm/api/v1/token-launch/fee-share/wallet/v2/bulk', 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/fee-share/wallet/v2/bulk",
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([
'items' => [
[
'username' => '<string>',
'provider' => 'twitter',
'chain' => 'SOL'
]
]
]),
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/fee-share/wallet/v2/bulk"
payload := strings.NewReader("{\n \"items\": [\n {\n \"username\": \"<string>\",\n \"provider\": \"twitter\",\n \"chain\": \"SOL\"\n }\n ]\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/fee-share/wallet/v2/bulk")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"username\": \"<string>\",\n \"provider\": \"twitter\",\n \"chain\": \"SOL\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api-v2.bags.fm/api/v1/token-launch/fee-share/wallet/v2/bulk")
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 \"items\": [\n {\n \"username\": \"<string>\",\n \"provider\": \"twitter\",\n \"chain\": \"SOL\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"response": [
{
"username": "<string>",
"provider": "twitter",
"platformData": {
"id": "<string>",
"username": "<string>",
"display_name": "<string>",
"avatar_url": "<string>"
},
"wallet": "<string>",
"chain": "SOL"
}
]
}{
"success": false,
"response": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"response": "<string>"
}Fee Share
Get Fee Share Wallet V2 (Bulk)
Bulk lookup of wallet addresses associated with social providers and usernames for fee sharing. Each item accepts an optional chain (SOL default, or EVM); the resolved chain is echoed back on every result. Deduplication is performed on username + provider + chain, so the same handle may appear once per chain. Items are never individually failed: when a wallet or platform data can’t be resolved, that item returns platformData: null and wallet: null while still echoing chain.
POST
/
token-launch
/
fee-share
/
wallet
/
v2
/
bulk
Get fee share wallets (bulk, v2)
curl --request POST \
--url https://public-api-v2.bags.fm/api/v1/token-launch/fee-share/wallet/v2/bulk \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"items": [
{
"username": "<string>",
"provider": "twitter",
"chain": "SOL"
}
]
}
'import requests
url = "https://public-api-v2.bags.fm/api/v1/token-launch/fee-share/wallet/v2/bulk"
payload = { "items": [
{
"username": "<string>",
"provider": "twitter",
"chain": "SOL"
}
] }
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({items: [{username: '<string>', provider: 'twitter', chain: 'SOL'}]})
};
fetch('https://public-api-v2.bags.fm/api/v1/token-launch/fee-share/wallet/v2/bulk', 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/fee-share/wallet/v2/bulk",
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([
'items' => [
[
'username' => '<string>',
'provider' => 'twitter',
'chain' => 'SOL'
]
]
]),
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/fee-share/wallet/v2/bulk"
payload := strings.NewReader("{\n \"items\": [\n {\n \"username\": \"<string>\",\n \"provider\": \"twitter\",\n \"chain\": \"SOL\"\n }\n ]\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/fee-share/wallet/v2/bulk")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"username\": \"<string>\",\n \"provider\": \"twitter\",\n \"chain\": \"SOL\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api-v2.bags.fm/api/v1/token-launch/fee-share/wallet/v2/bulk")
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 \"items\": [\n {\n \"username\": \"<string>\",\n \"provider\": \"twitter\",\n \"chain\": \"SOL\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"response": [
{
"username": "<string>",
"provider": "twitter",
"platformData": {
"id": "<string>",
"username": "<string>",
"display_name": "<string>",
"avatar_url": "<string>"
},
"wallet": "<string>",
"chain": "SOL"
}
]
}{
"success": false,
"response": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"response": "<string>"
}Choosing a chain per item
Each item accepts an optionalchain field:
SOL(default when omitted) — returns the user’s Solana embedded wallet as a base58 address.EVM— resolves the user’s Ethereum embedded wallet from Privy, creating one if the user has none, and returns a0x…address.
chain is always echoed back on every result item.
Deduplication
Deduplication is performed on theusername + provider + chain triple. The same username + provider may appear twice in one request as long as the chain differs (once for SOL, once for EVM). Two items with an identical username + provider + chain triple are rejected with a 400 error.
Bulk lookups never fail an individual item: when a wallet or platform data can’t be resolved, that item comes back with
platformData: null and wallet: null, but chain is always echoed back. The solana provider only supports SOL; combining it with chain=EVM returns a 400 error.Authorizations
API key authentication. Provide your API key as the header value.
Body
application/json
Array of lookups (1-100). Duplicate username+provider+chain combinations are not allowed. The same username+provider may appear once per chain (once for SOL, once for EVM).
Required array length:
1 - 100 elementsShow child attributes
Show child attributes
