Claim fee rewards (batch)
curl --request POST \
--url https://api.tokenlayer.network/functions/v1/claim-rewards \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"currencyAddress": "<string>",
"chains": [
"<string>"
]
}
'import requests
url = "https://api.tokenlayer.network/functions/v1/claim-rewards"
payload = {
"currencyAddress": "<string>",
"chains": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({currencyAddress: '<string>', chains: ['<string>']})
};
fetch('https://api.tokenlayer.network/functions/v1/claim-rewards', 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://api.tokenlayer.network/functions/v1/claim-rewards",
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([
'currencyAddress' => '<string>',
'chains' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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 := "https://api.tokenlayer.network/functions/v1/claim-rewards"
payload := strings.NewReader("{\n \"currencyAddress\": \"<string>\",\n \"chains\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.tokenlayer.network/functions/v1/claim-rewards")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"currencyAddress\": \"<string>\",\n \"chains\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tokenlayer.network/functions/v1/claim-rewards")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"currencyAddress\": \"<string>\",\n \"chains\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"transactions": [
{
"to": "<string>",
"data": "<string>",
"value": "<string>",
"chainSlug": "<string>",
"chainId": "<string>",
"chainType": "evm",
"gasLimit": "<string>",
"description": "<string>"
}
],
"metadata": {
"totalChainsWithBalance": 123,
"totalCurrenciesClaimed": 123,
"currencyAddress": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Fees & Earnings
Claim fee rewards (batch)
Generates batch transactions to claim fee rewards from the FeesVault contract using withdrawBatch.
- If currencyAddress is provided: Claims only that specific currency across all chains
- If currencyAddress is omitted: Claims ALL currencies with claimable balances across all chains
For each chain with claimable balances, generates a single batched transaction that withdraws all applicable currencies at once. Withdraws the maximum available amount (max uint256) for each currency.
This approach minimizes the number of transactions and total gas costs compared to individual withdrawals.
POST
/
claim-rewards
Claim fee rewards (batch)
curl --request POST \
--url https://api.tokenlayer.network/functions/v1/claim-rewards \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"currencyAddress": "<string>",
"chains": [
"<string>"
]
}
'import requests
url = "https://api.tokenlayer.network/functions/v1/claim-rewards"
payload = {
"currencyAddress": "<string>",
"chains": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({currencyAddress: '<string>', chains: ['<string>']})
};
fetch('https://api.tokenlayer.network/functions/v1/claim-rewards', 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://api.tokenlayer.network/functions/v1/claim-rewards",
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([
'currencyAddress' => '<string>',
'chains' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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 := "https://api.tokenlayer.network/functions/v1/claim-rewards"
payload := strings.NewReader("{\n \"currencyAddress\": \"<string>\",\n \"chains\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.tokenlayer.network/functions/v1/claim-rewards")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"currencyAddress\": \"<string>\",\n \"chains\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tokenlayer.network/functions/v1/claim-rewards")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"currencyAddress\": \"<string>\",\n \"chains\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"transactions": [
{
"to": "<string>",
"data": "<string>",
"value": "<string>",
"chainSlug": "<string>",
"chainId": "<string>",
"chainType": "evm",
"gasLimit": "<string>",
"description": "<string>"
}
],
"metadata": {
"totalChainsWithBalance": 123,
"totalCurrenciesClaimed": 123,
"currencyAddress": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}⌘I
