Get Kalshi Trades
curl --request GET \
--url https://api.aisa.one/apis/v1/kalshi/trades \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/kalshi/trades"
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/kalshi/trades', 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/kalshi/trades",
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/kalshi/trades"
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/kalshi/trades")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/kalshi/trades")
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{
"trades": [
{
"trade_id": "<string>",
"ticker": "<string>",
"count_fp": "10.00",
"yes_price_dollars": "0.5600",
"no_price_dollars": "0.5600",
"taker_outcome_side": "yes",
"taker_book_side": "bid",
"created_time": "2023-11-07T05:31:56Z",
"is_block_trade": true,
"taker_side": "yes"
}
],
"cursor": "<string>"
}Kalshi
Get Kalshi Trades
Get the executed-trade tape for Kalshi markets — actual fills, not quotes.
GET
https://api.aisa.one
/
apis
/
v1
/
kalshi
/
trades
Get Kalshi Trades
curl --request GET \
--url https://api.aisa.one/apis/v1/kalshi/trades \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/kalshi/trades"
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/kalshi/trades', 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/kalshi/trades",
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/kalshi/trades"
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/kalshi/trades")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/kalshi/trades")
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{
"trades": [
{
"trade_id": "<string>",
"ticker": "<string>",
"count_fp": "10.00",
"yes_price_dollars": "0.5600",
"no_price_dollars": "0.5600",
"taker_outcome_side": "yes",
"taker_book_side": "bid",
"created_time": "2023-11-07T05:31:56Z",
"is_block_trade": true,
"taker_side": "yes"
}
],
"cursor": "<string>"
}Get the executed-trade tape for Kalshi markets — actual fills, not quotes. Use this when you need realized prices and traded size over a window, for example to see how conviction moved while an event unfolded; narrow with
Set this endpoint up in your agent →
ticker and the min_ts / max_ts Unix-second range, and set is_block_trade to isolate large negotiated trades.
Returns trades[] with trade_id, ticker, count_fp (contracts), yes_price_dollars / no_price_dollars, taker_side, and created_time, plus a cursor to page with.
For the current quotes, settlement rules, and market metadata rather than fills, use get_kalshi_markets.
First time? Point any MCP client at
https://mcp.aisa.one/mcp — Claude
Code, Codex, Cursor, VS Code and the rest. Authorization is OAuth: the client
opens a browser, you click Allow once, and there is no key to paste. Your
agent then reaches every endpoint through five tools: search,
list_categories and get_details are free, use and batch_use are
billed per call. Setup per client is in
Connect via MCP; the live tool list and what each call
costs are on aisa.one/mcp.Cost and request rules
Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.- Default request reference estimate (USD): 0.02
- Cost contract: fixed_success
- Settlement evidence source: request_snapshot
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Pagination cursor. Use the cursor value returned from the previous response to get the next page of results. Leave empty for the first page.
Filter trades by whether they are block trades. Omit to return all trades. Set to true to return only block trades. Set to false to return only non-block trades.
Number of results per page. Defaults to 100. Maximum value is 1000.
Required range:
0 <= x <= 1000Filter items before this Unix timestamp
Filter items after this Unix timestamp
Filter by market ticker