Skip to main content
GET
/
v3
/
perps
/
wallets
/
{address}
/
positions
/
history
Position history
curl --request GET \
  --url https://api.polynode.dev/v3/perps/wallets/{address}/positions/history \
  --header 'x-api-key: <api-key>'
import requests

url = "https://api.polynode.dev/v3/perps/wallets/{address}/positions/history"

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.polynode.dev/v3/perps/wallets/{address}/positions/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.polynode.dev/v3/perps/wallets/{address}/positions/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 => [
"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.polynode.dev/v3/perps/wallets/{address}/positions/history"

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.polynode.dev/v3/perps/wallets/{address}/positions/history")
.header("x-api-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.polynode.dev/v3/perps/wallets/{address}/positions/history")

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
{
  "data": [
    {
      "entry_price": "29618",
      "instrument_id": 4,
      "mark_price": "29512",
      "notional": "785550.416000",
      "side": "long",
      "size": "26.6180",
      "snapshot_ts": 1783602532386,
      "symbol": "NAS100-USD",
      "unrealized_pnl": "-2872.9108921767877465840364244"
    },
    {
      "entry_price": "7467.5",
      "instrument_id": 1,
      "mark_price": "7497.8",
      "notional": "1004045.393600",
      "side": "short",
      "size": "-133.91200",
      "snapshot_ts": 1783602532386,
      "symbol": "SP500-USD",
      "unrealized_pnl": "-2324.0915037805232000"
    },
    {
      "entry_price": "1780.9",
      "instrument_id": 7,
      "mark_price": "1746",
      "notional": "25872.402600",
      "side": "long",
      "size": "14.8181",
      "snapshot_ts": 1783602532386,
      "symbol": "ETH-USD",
      "unrealized_pnl": "-384.58514035658596514675578757"
    }
  ],
  "signer": "0x4f78dcb560f85bb028d6b75467c4bcb6412f8731"
}
Follow one wallet’s perps positions through time — how each position grew, shrank, opened, or closed, with the mark, notional, and unrealized PnL captured at each point. Filter to a single instrument and bound the window with after / before. Polymarket returns only a wallet’s current portfolio. This is the accumulated history of it, which exists nowhere else. Coverage begins when we started capturing (July 9, 2026) and grows continuously; each row carries its snapshot_ts. When you query, we also capture a fresh snapshot if the latest one is stale, so the current state is always part of what you get back. Accepts either address form — profile address or signer — resolved automatically.

Authorizations

x-api-key
string
header
required

Path Parameters

address
string
required

Polymarket proxy wallet or signer EOA (0x...). Resolved automatically.

Query Parameters

instrument
string

Restrict to one instrument

after
integer

Only rows after this time (Unix s or ms)

before
integer

Only rows before this time

limit
integer

Max rows (default 500)

Response

200 - application/json

Success