curl --request GET \
--url https://api.lpagent.io/open-api/v1/lp-positions/logs \
--header 'x-api-key: <api-key>'import requests
url = "https://api.lpagent.io/open-api/v1/lp-positions/logs"
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/logs', 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/logs",
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/logs"
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/logs")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lpagent.io/open-api/v1/lp-positions/logs")
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",
"count": 45,
"data": [
{
"owner": "7KHx2Uc5qsqz652eXbu8Qtabi5KLxWJLgxFzcaBzP32i",
"action": "add_liquidity",
"amount0": "1000000000",
"amount1": "500000000",
"decimal0": 9,
"decimal1": 9,
"price0": "3.844231933777601",
"price1": "170.66710334453902",
"timestamp": "2025-07-25T16:23:04.000Z",
"nativePrice": "178.45",
"strategyType": "BidAskImBalanced",
"tickUpper": -333,
"tickLower": -402,
"bps": 100,
"logo0": "https://token-logo.lpagent.io/api/v1/logo?address=31k88G5Mq7ptbRDf3AM13HAq6wRQHXHikR8hik7wPygk&chain=SOL",
"logo1": "https://token-logo.lpagent.io/api/v1/logo?address=So11111111111111111111111111111111111111112&chain=SOL"
}
]
}{
"status": "error",
"message": "position or owner parameter is required"
}Get logs for LP positions
Retrieves transaction logs for one liquidity pool position, newest first, capped at 200 rows. Works on Solana and Robinhood Chain; pass the chain the position lives on.
position is what selects the logs. A request with only owner returns 200 with an empty data array, not the owner’s logs across positions.
curl --request GET \
--url https://api.lpagent.io/open-api/v1/lp-positions/logs \
--header 'x-api-key: <api-key>'import requests
url = "https://api.lpagent.io/open-api/v1/lp-positions/logs"
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/logs', 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/logs",
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/logs"
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/logs")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lpagent.io/open-api/v1/lp-positions/logs")
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",
"count": 45,
"data": [
{
"owner": "7KHx2Uc5qsqz652eXbu8Qtabi5KLxWJLgxFzcaBzP32i",
"action": "add_liquidity",
"amount0": "1000000000",
"amount1": "500000000",
"decimal0": 9,
"decimal1": 9,
"price0": "3.844231933777601",
"price1": "170.66710334453902",
"timestamp": "2025-07-25T16:23:04.000Z",
"nativePrice": "178.45",
"strategyType": "BidAskImBalanced",
"tickUpper": -333,
"tickLower": -402,
"bps": 100,
"logo0": "https://token-logo.lpagent.io/api/v1/logo?address=31k88G5Mq7ptbRDf3AM13HAq6wRQHXHikR8hik7wPygk&chain=SOL",
"logo1": "https://token-logo.lpagent.io/api/v1/logo?address=So11111111111111111111111111111111111111112&chain=SOL"
}
]
}{
"status": "error",
"message": "position or owner parameter is required"
}授权
API key for authentication
查询参数
Position ID. On SOL, the position's base58 address. On ROBINHOOD, the position-manager address and NFT token ID joined by a hyphen (0x<manager>-<tokenId>). Required in practice: without it the response is empty.
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 Wallet address of the position owner. Optional, and not a filter: when it matches the position's owner, the response also includes the swap transactions made around the position (zap-in / zap-out legs). On ROBINHOOD the match ignores address case.
此页面对您有帮助吗?