curl --request GET \
--url https://api.aisa.one/apis/v1/polymarket/activity \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/polymarket/activity"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/polymarket/activity', 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.aisa.one/apis/v1/polymarket/activity",
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.aisa.one/apis/v1/polymarket/activity"
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.aisa.one/apis/v1/polymarket/activity")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/polymarket/activity")
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[
{
"proxyWallet": "0x56687bf447db6ffa42ffe2204a05edaa20f55839",
"timestamp": 123,
"conditionId": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917",
"type": "TRADE",
"size": 123,
"usdcSize": 123,
"transactionHash": "<string>",
"price": 123,
"asset": "<string>",
"side": "BUY",
"outcomeIndex": 123,
"title": "<string>",
"slug": "<string>",
"icon": "<string>",
"eventSlug": "<string>",
"outcome": "<string>",
"name": "<string>",
"pseudonym": "<string>",
"bio": "<string>",
"profileImage": "<string>",
"profileImageOptimized": "<string>",
"isCombo": true
}
]Get user activity
获取单个钱包在 Polymarket 上的链上活动——这是按地址查询,而不是全市场成交流。
curl --request GET \
--url https://api.aisa.one/apis/v1/polymarket/activity \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/polymarket/activity"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/polymarket/activity', 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.aisa.one/apis/v1/polymarket/activity",
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.aisa.one/apis/v1/polymarket/activity"
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.aisa.one/apis/v1/polymarket/activity")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/polymarket/activity")
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[
{
"proxyWallet": "0x56687bf447db6ffa42ffe2204a05edaa20f55839",
"timestamp": 123,
"conditionId": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917",
"type": "TRADE",
"size": 123,
"usdcSize": 123,
"transactionHash": "<string>",
"price": 123,
"asset": "<string>",
"side": "BUY",
"outcomeIndex": 123,
"title": "<string>",
"slug": "<string>",
"icon": "<string>",
"eventSlug": "<string>",
"outcome": "<string>",
"name": "<string>",
"pseudonym": "<string>",
"bio": "<string>",
"profileImage": "<string>",
"profileImageOptimized": "<string>",
"isCombo": true
}
]user 参数为必填。适合用于还原某个交易者做过什么——仓位拆分、合并和赎回,包含数量、价格以及完成结算的交易;还可用 market_slug、condition_id 以及 start_time / end_time(Unix 秒)区间进一步收窄。
返回 activities[],包含 side(MERGE / SPLIT / REDEEM)、market_slug、condition_id、shares、price、timestamp 和 tx_hash,并附带 pagination 对象,其中的 key 可作为 pagination_key 回传。
如需全市场价格而不是单个钱包的历史,请使用 get_polymarket_markets。
https://mcp.aisa.one/mcp —— Claude Code、
Codex、Cursor、VS Code 都可以。鉴权走 OAuth:客户端打开浏览器,你点一次
Allow,不需要粘贴任何 key。各客户端的具体命令和每次调用的价格见
aisa.one/zh-cn/mcp。授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
查询参数
Upper-bound timestamp (epoch seconds) for the activity window. Omit for the default (current time); rows newer than end are excluded.
x >= 0Comma-separated list of event IDs. Mutually exclusive with market.
x >= 1Excludes deposit and withdrawal records. The default true applies even when type requests those records, so to get deposits and withdrawals you must pass false.
Page size. Values above the maximum are clamped to 500.
0 <= x <= 500Comma-separated list of condition IDs. Mutually exclusive with eventId.
0x-prefixed 64-hex string
^0x[a-fA-F0-9]{64}$Starting index for pagination. Requests past the cap are rejected with a 400 (never silently clamped). To read history deeper than offset 5000, page inside start/end windows — each window has its own offset budget.
0 <= x <= 5000BUY, SELL TIMESTAMP, TOKENS, CASH DESC (default) returns the newest rows first; ASC the oldest first. Both orders are stable — the same query returns the same rows at any limit/offset, so pages compose without gaps or repeats.
ASC, DESC Lower-bound timestamp (epoch seconds) for the activity window. Omit or pass 0 for the default window (most recent ~3 years); pass a positive epoch (e.g. 1) to retrieve full history. With sortDirection=ASC, omitting start already reads from the beginning of the account's history (no default window).
x >= 0Comma-separated list of activity types to include. DEPOSIT and WITHDRAWAL records also require excludeDepositsWithdrawals=false.
TRADE, SPLIT, MERGE, REDEEM, REWARD, CONVERSION, DEPOSIT, WITHDRAWAL, YIELD, MAKER_REBATE, TAKER_REBATE, REFERRAL_REWARD User Profile Address (0x-prefixed, 40 hex chars)
^0x[a-fA-F0-9]{40}$"0x56687bf447db6ffa42ffe2204a05edaa20f55839"
响应
Success
User Profile Address (0x-prefixed, 40 hex chars)
^0x[a-fA-F0-9]{40}$"0x56687bf447db6ffa42ffe2204a05edaa20f55839"
0x-prefixed 64-hex string
^0x[a-fA-F0-9]{64}$"0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917"
TRADE, SPLIT, MERGE, REDEEM, REWARD, CONVERSION, DEPOSIT, WITHDRAWAL, YIELD, MAKER_REBATE, TAKER_REBATE, REFERRAL_REWARD Token amount for this row. On REDEEM rows it is the number of tokens burned for this row's outcome, so redeeming both sides of a market returns one row per outcome instead of a single combined row.
USDC amount for this row. On REDEEM rows it is the payout for this row's outcome and is 0 for a losing outcome; the rows of one redemption sum to the total payout.
Token ID this row refers to. Populated on REDEEM rows with the token that row settles. Empty when the row is not token-specific.
BUY, SELL Zero-based index of this row's outcome in the market's outcomes array, so outcome always equals outcomes[outcomeIndex]. On REDEEM rows it identifies the outcome the row settles, not the market's winning outcome. 999 means the outcome could not be determined, in which case outcome is empty.
Market artwork. Falls back to the market image, then to the parent event's icon and image, when the market has no icon of its own. Empty on CONVERSION rows.
True when this row is part of a combinatorial (multi-market) position. Flag only — combo detail is not embedded here. The row's conditionId equals the combo's combo_condition_id; pass it to /v1/activity/combos or /v1/positions/combos via market_id to fetch legs and detail. Omitted on non-combo rows.