curl --request POST \
--url http://localhost:8000/gateway/clmm/collect-fees \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"connector": "<string>",
"network": "<string>",
"position_address": "<string>",
"pool_address": "<string>",
"wallet_address": "<string>"
}
'import requests
url = "http://localhost:8000/gateway/clmm/collect-fees"
payload = {
"connector": "<string>",
"network": "<string>",
"position_address": "<string>",
"pool_address": "<string>",
"wallet_address": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
connector: '<string>',
network: '<string>',
position_address: '<string>',
pool_address: '<string>',
wallet_address: '<string>'
})
};
fetch('http://localhost:8000/gateway/clmm/collect-fees', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/gateway/clmm/collect-fees",
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([
'connector' => '<string>',
'network' => '<string>',
'position_address' => '<string>',
'pool_address' => '<string>',
'wallet_address' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$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 := "http://localhost:8000/gateway/clmm/collect-fees"
payload := strings.NewReader("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"position_address\": \"<string>\",\n \"pool_address\": \"<string>\",\n \"wallet_address\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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("http://localhost:8000/gateway/clmm/collect-fees")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"position_address\": \"<string>\",\n \"pool_address\": \"<string>\",\n \"wallet_address\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/gateway/clmm/collect-fees")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"position_address\": \"<string>\",\n \"pool_address\": \"<string>\",\n \"wallet_address\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"transaction_hash": "<string>",
"position_address": "<string>",
"base_fee_collected": "<string>",
"quote_fee_collected": "<string>",
"status": "submitted"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Collect Fees From Clmm Position
Collect accumulated fees from a CLMM liquidity position.
Example: connector: ‘meteora’ network: ‘solana-mainnet-beta’ position_address: ’…’ wallet_address: (optional)
Returns: Transaction hash and collected fee amounts
curl --request POST \
--url http://localhost:8000/gateway/clmm/collect-fees \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"connector": "<string>",
"network": "<string>",
"position_address": "<string>",
"pool_address": "<string>",
"wallet_address": "<string>"
}
'import requests
url = "http://localhost:8000/gateway/clmm/collect-fees"
payload = {
"connector": "<string>",
"network": "<string>",
"position_address": "<string>",
"pool_address": "<string>",
"wallet_address": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
connector: '<string>',
network: '<string>',
position_address: '<string>',
pool_address: '<string>',
wallet_address: '<string>'
})
};
fetch('http://localhost:8000/gateway/clmm/collect-fees', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/gateway/clmm/collect-fees",
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([
'connector' => '<string>',
'network' => '<string>',
'position_address' => '<string>',
'pool_address' => '<string>',
'wallet_address' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$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 := "http://localhost:8000/gateway/clmm/collect-fees"
payload := strings.NewReader("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"position_address\": \"<string>\",\n \"pool_address\": \"<string>\",\n \"wallet_address\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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("http://localhost:8000/gateway/clmm/collect-fees")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"position_address\": \"<string>\",\n \"pool_address\": \"<string>\",\n \"wallet_address\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/gateway/clmm/collect-fees")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"connector\": \"<string>\",\n \"network\": \"<string>\",\n \"position_address\": \"<string>\",\n \"pool_address\": \"<string>\",\n \"wallet_address\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"transaction_hash": "<string>",
"position_address": "<string>",
"base_fee_collected": "<string>",
"quote_fee_collected": "<string>",
"status": "submitted"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Body
Request to collect fees from a CLMM position
CLMM connector (e.g., 'meteora', 'raydium', 'uniswap')
Network ID in 'chain-network' format (e.g., 'solana-mainnet-beta')
Position address to collect fees from
Pool the position belongs to. Informational only — neither Gateway's call nor the fee snapshot needs it, and unrecorded positions work without it
Wallet address (optional, uses default if not provided)
Response
Successful Response
Response after collecting fees
Transaction hash
Position address
Base token fees collected
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Quote token fees collected
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Transaction status
Was this page helpful?

