Get History
curl --request GET \
--url https://api.limitless.exchange/portfolio/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.limitless.exchange/portfolio/history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.limitless.exchange/portfolio/history', 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.limitless.exchange/portfolio/history",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.limitless.exchange/portfolio/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.limitless.exchange/portfolio/history")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/portfolio/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"blockTimestamp": 1744115608,
"collateralAmount": "0",
"market": {
"closed": false,
"collateral": {
"symbol": "USDC",
"id": 7,
"decimals": 6
},
"group": {
"id": 10000037,
"slug": "positionconverted-test-1744046422596",
"title": "PositionConverted test",
"status": "FUNDED",
"deadline": "2025-04-11T22:34:56.000Z",
"hidden": false,
"priorityIndex": 0,
"metadata": {
"isBannered": false
},
"negRiskMarketId": "0xe103633b40e9b664f8acc89e8cf7b7916475961ae1708a249fa5d6c933168c00",
"createdAt": "2025-04-07T17:20:22.135Z",
"updatedAt": "2025-04-07T17:22:08.464Z",
"imageUrl": "https://storage.googleapis.com/limitless-exchange-assets/group.png",
"txHash": null,
"resolutionTxHash": null
},
"condition_id": "0x08518bc4bb8a3dbb89aac4425ace0876b94a5dfa77dee47a20737a19cf67e325",
"funding": 0,
"id": 980,
"slug": "market-1-1744046422691",
"title": "Market 1",
"deadline": "2025-04-11T22:34:56.000Z",
"imageUrl": "https://storage.googleapis.com/limitless-exchange-assets/market.png"
},
"outcomeTokenAmount": "100",
"outcomeTokenAmounts": [
"100",
"0"
],
"outcomeIndex": 0,
"outcomeTokenPrice": 0.5,
"strategy": "Convert",
"tradeEventId": "<string>",
"orderId": "<string>",
"makerMatchId": "<string>",
"transactionHash": "0x992f36465f938b21a6a5fe3c417c98c3268a616a05479d2dc53870c6cd1a0761"
}
],
"totalCount": 8,
"nextCursor": "<string>"
}Portfolio
Get History
Paginated history including AMM, CLOB trades, splits/merges, NegRisk conversions. Partner API tokens with delegated_signing scope may read a sub-account by sending the x-on-behalf-of: <profileId> header.
GET
/
portfolio
/
history
Get History
curl --request GET \
--url https://api.limitless.exchange/portfolio/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.limitless.exchange/portfolio/history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.limitless.exchange/portfolio/history', 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.limitless.exchange/portfolio/history",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.limitless.exchange/portfolio/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.limitless.exchange/portfolio/history")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/portfolio/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"blockTimestamp": 1744115608,
"collateralAmount": "0",
"market": {
"closed": false,
"collateral": {
"symbol": "USDC",
"id": 7,
"decimals": 6
},
"group": {
"id": 10000037,
"slug": "positionconverted-test-1744046422596",
"title": "PositionConverted test",
"status": "FUNDED",
"deadline": "2025-04-11T22:34:56.000Z",
"hidden": false,
"priorityIndex": 0,
"metadata": {
"isBannered": false
},
"negRiskMarketId": "0xe103633b40e9b664f8acc89e8cf7b7916475961ae1708a249fa5d6c933168c00",
"createdAt": "2025-04-07T17:20:22.135Z",
"updatedAt": "2025-04-07T17:22:08.464Z",
"imageUrl": "https://storage.googleapis.com/limitless-exchange-assets/group.png",
"txHash": null,
"resolutionTxHash": null
},
"condition_id": "0x08518bc4bb8a3dbb89aac4425ace0876b94a5dfa77dee47a20737a19cf67e325",
"funding": 0,
"id": 980,
"slug": "market-1-1744046422691",
"title": "Market 1",
"deadline": "2025-04-11T22:34:56.000Z",
"imageUrl": "https://storage.googleapis.com/limitless-exchange-assets/market.png"
},
"outcomeTokenAmount": "100",
"outcomeTokenAmounts": [
"100",
"0"
],
"outcomeIndex": 0,
"outcomeTokenPrice": 0.5,
"strategy": "Convert",
"tradeEventId": "<string>",
"orderId": "<string>",
"makerMatchId": "<string>",
"transactionHash": "0x992f36465f938b21a6a5fe3c417c98c3268a616a05479d2dc53870c6cd1a0761"
}
],
"totalCount": 8,
"nextCursor": "<string>"
}CLOB fills live here. Limitless does not expose a dedicated fills endpoint. This endpoint returns every CLOB fill for the authenticated account as a history entry. Use the
strategy field to distinguish fill types:Limit Buy/Limit Sell— CLOB maker fills (a resting limit order of yours was hit).Market Buy/Market Sell— CLOB taker fills (your order crossed the book on submission).Buy/Sell— AMM trades (also available via Get Trades).Split/Merge— position split/merge.Convert— NegRisk conversion.Claim— winnings redemption.
outcomeTokenPrice (effective fill price), outcomeTokenAmounts, collateralAmount, blockTimestamp, and transactionHash (present once settled on-chain). Paginate with cursor and limit.Deposits and withdrawals are not included. This endpoint covers on-platform activity only (fills, splits, merges, conversions, and claims). Raw USDC deposits and withdrawal transfers are not returned here and the API does not expose a dedicated deposit/withdrawal history endpoint.
POST /portfolio/withdraw executes a withdrawal but does not return past withdrawals. To reconstruct transfers, query the on-chain USDC transfers to and from your account on Base.No historical orderbook. The API does not expose historical orderbook snapshots. Get Orderbook returns only the current live snapshot. To reconstruct past activity for a market, combine your own fill history from this endpoint with Get Historical Prices and Get Feed Events.
Authorizations
JWT token for API access (alternative to cookie auth)
Query Parameters
Opaque cursor for cursor-based pagination. Omit for first page.
Market slug. When set, only history for that market is returned. Cursors are only valid together with the same market value they were issued for.
Number of items per page
Example:
20