List a wallet's orders across venues
Returns the wallet’s orders on every venue, newest first. Requires proof of the wallet: send Authorization: SIWE <token> from a login action (or an API key whose Kairos account owns the wallet).
Each venue is read with the same limit; the rows are merged, sorted by createdAt descending and cut to limit. There is no cursor: this route returns at most 500 orders. When a venue cannot be read its rows are missing and venueDetail.<venue>.error says why.
Order rows carry no fee fields.
curl --request GET \
--url https://execution.kairos.trade/v3/wallets/{address}/orders \
--header 'Authorization: <api-key>' \
--header 'X-Kairos-Partner-Id: <api-key>' \
--header 'X-Kairos-Wallet-Api: <x-kairos-wallet-api>'import requests
url = "https://execution.kairos.trade/v3/wallets/{address}/orders"
headers = {
"X-Kairos-Wallet-Api": "<x-kairos-wallet-api>",
"X-Kairos-Partner-Id": "<api-key>",
"Authorization": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Kairos-Wallet-Api': '<x-kairos-wallet-api>',
'X-Kairos-Partner-Id': '<api-key>',
Authorization: '<api-key>'
}
};
fetch('https://execution.kairos.trade/v3/wallets/{address}/orders', 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://execution.kairos.trade/v3/wallets/{address}/orders",
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: <api-key>",
"X-Kairos-Partner-Id: <api-key>",
"X-Kairos-Wallet-Api: <x-kairos-wallet-api>"
],
]);
$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://execution.kairos.trade/v3/wallets/{address}/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Kairos-Wallet-Api", "<x-kairos-wallet-api>")
req.Header.Add("X-Kairos-Partner-Id", "<api-key>")
req.Header.Add("Authorization", "<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://execution.kairos.trade/v3/wallets/{address}/orders")
.header("X-Kairos-Wallet-Api", "<x-kairos-wallet-api>")
.header("X-Kairos-Partner-Id", "<api-key>")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://execution.kairos.trade/v3/wallets/{address}/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Kairos-Wallet-Api"] = '<x-kairos-wallet-api>'
request["X-Kairos-Partner-Id"] = '<api-key>'
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"orderId": "3f2b8c1e-5d4a-4e6f-9b7c-1a2d3e4f5a6b",
"venue": "predictfun",
"market": "predictfun:1027194",
"marketId": "1027194",
"outcome": "Yes",
"tokenId": "81517620335745318418347838710345678901234567890",
"side": "buy",
"type": "limit",
"price": "0.52",
"size": "10",
"filledSize": "0",
"avgFillPrice": null,
"timeInForce": "GTD",
"postOnly": false,
"expiresAt": "2026-10-29T00:00:00Z",
"status": "live",
"venueOrderId": "512334:0x3c9a…",
"clientOrderId": "acme-7f3a91",
"createdAt": "2026-10-28T12:00:00Z",
"updatedAt": "2026-10-28T12:00:01Z"
}
]
}{
"error": "unknown or expired action"
}{
"error": "sign-in token has expired; run a login action"
}{
"error": "unknown partner id"
}{
"error": "wallet not found"
}{
"error": "rate limit exceeded for this endpoint; retry later"
}{
"error": "internal error"
}{
"error": "unknown or expired action"
}{
"error": "unknown or expired action"
}{
"error": "unknown or expired action"
}Authorizations
Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every /v3 call; sent instead of an API key. Letters, digits and ._:-, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.
Wallet sign-in token: SIWE <token>, where <token> is result.token from a login action (exactly one space after SIWE). Proves the wallet on reads of its orders and positions, and on trade plans, fee settlements and on-chain intents. The token is bound to the partner and the environment that issued it and lasts 24 hours; run a new login action to renew it.
Headers
Wallet API contract version. Send 2 — the multi-venue contract this reference documents. Without the header (or with any other value) /v3/actions and /v3/wallets/* serve the original Polymarket-only contract, which ignores venue prefixes, expiresAt and setup.venues, omits chainId, venue and fallbackRequests from steps, refuses orders on a wallet that is not set up (409), and returns snake_case order and position rows.
2 Path Parameters
The wallet's EVM address (0x + 40 hex; checksum not required).
^0x[0-9a-fA-F]{40}$Query Parameters
true returns only working orders; false (default) returns every status. Only the literal true / false are accepted.
Maximum rows to return. Values outside 1–500 are clamped.
1 <= x <= 500Read one venue only. Case-insensitive; predict.fun is accepted for predictfun. An unknown name is 400 unknown venue "<name>"; a venue not offered on this deployment returns an empty list.
Venue id. predict.fun is accepted as an input alias of predictfun.
polymarket, predictfun, hyperliquid Was this page helpful?
curl --request GET \
--url https://execution.kairos.trade/v3/wallets/{address}/orders \
--header 'Authorization: <api-key>' \
--header 'X-Kairos-Partner-Id: <api-key>' \
--header 'X-Kairos-Wallet-Api: <x-kairos-wallet-api>'import requests
url = "https://execution.kairos.trade/v3/wallets/{address}/orders"
headers = {
"X-Kairos-Wallet-Api": "<x-kairos-wallet-api>",
"X-Kairos-Partner-Id": "<api-key>",
"Authorization": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Kairos-Wallet-Api': '<x-kairos-wallet-api>',
'X-Kairos-Partner-Id': '<api-key>',
Authorization: '<api-key>'
}
};
fetch('https://execution.kairos.trade/v3/wallets/{address}/orders', 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://execution.kairos.trade/v3/wallets/{address}/orders",
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: <api-key>",
"X-Kairos-Partner-Id: <api-key>",
"X-Kairos-Wallet-Api: <x-kairos-wallet-api>"
],
]);
$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://execution.kairos.trade/v3/wallets/{address}/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Kairos-Wallet-Api", "<x-kairos-wallet-api>")
req.Header.Add("X-Kairos-Partner-Id", "<api-key>")
req.Header.Add("Authorization", "<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://execution.kairos.trade/v3/wallets/{address}/orders")
.header("X-Kairos-Wallet-Api", "<x-kairos-wallet-api>")
.header("X-Kairos-Partner-Id", "<api-key>")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://execution.kairos.trade/v3/wallets/{address}/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Kairos-Wallet-Api"] = '<x-kairos-wallet-api>'
request["X-Kairos-Partner-Id"] = '<api-key>'
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"orderId": "3f2b8c1e-5d4a-4e6f-9b7c-1a2d3e4f5a6b",
"venue": "predictfun",
"market": "predictfun:1027194",
"marketId": "1027194",
"outcome": "Yes",
"tokenId": "81517620335745318418347838710345678901234567890",
"side": "buy",
"type": "limit",
"price": "0.52",
"size": "10",
"filledSize": "0",
"avgFillPrice": null,
"timeInForce": "GTD",
"postOnly": false,
"expiresAt": "2026-10-29T00:00:00Z",
"status": "live",
"venueOrderId": "512334:0x3c9a…",
"clientOrderId": "acme-7f3a91",
"createdAt": "2026-10-28T12:00:00Z",
"updatedAt": "2026-10-28T12:00:01Z"
}
]
}{
"error": "unknown or expired action"
}{
"error": "sign-in token has expired; run a login action"
}{
"error": "unknown partner id"
}{
"error": "wallet not found"
}{
"error": "rate limit exceeded for this endpoint; retry later"
}{
"error": "internal error"
}{
"error": "unknown or expired action"
}{
"error": "unknown or expired action"
}{
"error": "unknown or expired action"
}
