curl --request GET \
--url https://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}"
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://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}', 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.lpagent.io/open-api/v1/lp-positions/revenue/{owner}",
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://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}"
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://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}")
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{
"status": "success",
"data": [
{
"close_day": "2026-03-10T00:00:00.000Z",
"sum": 1500.5,
"sum_native": 1200.25,
"total_invested": 50000,
"total_invested_native": 40000,
"cumulative_pnl": 1500.5,
"cumulative_pnl_native": 1200.25,
"max_invested": 50000,
"max_invested_native": 40000,
"pnl_percent": 0.03,
"pnl_percent_native": 0.03
}
]
}Get LP positions revenue for an owner
Retrieve revenue and PnL data over time for a specific wallet owner. Only 7D and 1M ranges are available.
curl --request GET \
--url https://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}"
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://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}', 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.lpagent.io/open-api/v1/lp-positions/revenue/{owner}",
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://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}"
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://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lpagent.io/open-api/v1/lp-positions/revenue/{owner}")
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{
"status": "success",
"data": [
{
"close_day": "2026-03-10T00:00:00.000Z",
"sum": 1500.5,
"sum_native": 1200.25,
"total_invested": 50000,
"total_invested_native": 40000,
"cumulative_pnl": 1500.5,
"cumulative_pnl_native": 1200.25,
"max_invested": 50000,
"max_invested_native": 40000,
"pnl_percent": 0.03,
"pnl_percent_native": 0.03
}
]
}Authorizations
API key for authentication
Path Parameters
Wallet address of the position owner. On ROBINHOOD, a 0x address in any letter case works.
Query Parameters
Blockchain network to query. SOL returns Meteora (DLMM / DAMM v2) data; ROBINHOOD returns Uniswap V3 and V4 data on Robinhood Chain (EVM, chain id 4663). Unrecognised values fall back to SOL.
SOL, ROBINHOOD Aggregation period for revenue data
day, week, month Time range filter (only 7D and 1M are available)
7D, 1M Comma-separated protocols to filter by. Omit it to aggregate every protocol served on the chain. Valid values are meteora and meteora_damm_v2 on SOL, uniswap_v3 and uniswap_v4 on ROBINHOOD.
Older name for platform, still accepted. platform wins when both are sent.
Was this page helpful?