curl --request GET \
--url https://api.aisa.one/apis/v1/kalshi/markets \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/kalshi/markets"
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/markets', 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/markets",
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/markets"
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/markets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/kalshi/markets")
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{
"markets": [
{
"ticker": "<string>",
"event_ticker": "<string>",
"market_type": "binary",
"yes_sub_title": "<string>",
"no_sub_title": "<string>",
"created_time": "2023-11-07T05:31:56Z",
"updated_time": "2023-11-07T05:31:56Z",
"open_time": "2023-11-07T05:31:56Z",
"close_time": "2023-11-07T05:31:56Z",
"latest_expiration_time": "2023-11-07T05:31:56Z",
"settlement_timer_seconds": 123,
"status": "initialized",
"yes_bid_dollars": "0.5600",
"yes_bid_size_fp": "10.00",
"yes_ask_dollars": "0.5600",
"yes_ask_size_fp": "10.00",
"no_bid_dollars": "0.5600",
"no_ask_dollars": "0.5600",
"last_price_dollars": "0.5600",
"volume_fp": "10.00",
"volume_24h_fp": "10.00",
"result": "yes",
"can_close_early": true,
"open_interest_fp": "10.00",
"notional_value_dollars": "0.5600",
"previous_yes_bid_dollars": "0.5600",
"previous_yes_ask_dollars": "0.5600",
"previous_price_dollars": "0.5600",
"settlement_bounds_type": "default",
"expiration_value": "<string>",
"rules_primary": "<string>",
"rules_secondary": "<string>",
"price_level_structure": "<string>",
"price_ranges": [
{
"start": "<string>",
"end": "<string>",
"step": "<string>"
}
],
"title": "<string>",
"subtitle": "<string>",
"expected_expiration_time": "2023-11-07T05:31:56Z",
"expiration_time": "2023-11-07T05:31:56Z",
"settlement_value_dollars": "0.5600",
"settlement_ts": "2023-11-07T05:31:56Z",
"settlement_floor_dollars": "0.5600",
"occurrence_datetime": "2023-11-07T05:31:56Z",
"fee_waiver_expiration_time": "2023-11-07T05:31:56Z",
"early_close_condition": "<string>",
"strike_type": "greater",
"floor_strike": 123,
"cap_strike": 123,
"functional_strike": "<string>",
"custom_strike": {},
"mve_collection_ticker": "<string>",
"mve_selected_legs": [
{
"event_ticker": "<string>",
"market_ticker": "<string>",
"side": "<string>",
"yes_settlement_value_dollars": "0.5600"
}
],
"primary_participant_key": "<string>",
"is_provisional": true,
"exchange_index": 0
}
],
"cursor": "<string>"
}Get Kalshi Markets
List markets on Kalshi, the CFTC-regulated US prediction exchange, with live bid/ask quotes in dollars.
curl --request GET \
--url https://api.aisa.one/apis/v1/kalshi/markets \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/kalshi/markets"
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/markets', 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/markets",
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/markets"
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/markets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/kalshi/markets")
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{
"markets": [
{
"ticker": "<string>",
"event_ticker": "<string>",
"market_type": "binary",
"yes_sub_title": "<string>",
"no_sub_title": "<string>",
"created_time": "2023-11-07T05:31:56Z",
"updated_time": "2023-11-07T05:31:56Z",
"open_time": "2023-11-07T05:31:56Z",
"close_time": "2023-11-07T05:31:56Z",
"latest_expiration_time": "2023-11-07T05:31:56Z",
"settlement_timer_seconds": 123,
"status": "initialized",
"yes_bid_dollars": "0.5600",
"yes_bid_size_fp": "10.00",
"yes_ask_dollars": "0.5600",
"yes_ask_size_fp": "10.00",
"no_bid_dollars": "0.5600",
"no_ask_dollars": "0.5600",
"last_price_dollars": "0.5600",
"volume_fp": "10.00",
"volume_24h_fp": "10.00",
"result": "yes",
"can_close_early": true,
"open_interest_fp": "10.00",
"notional_value_dollars": "0.5600",
"previous_yes_bid_dollars": "0.5600",
"previous_yes_ask_dollars": "0.5600",
"previous_price_dollars": "0.5600",
"settlement_bounds_type": "default",
"expiration_value": "<string>",
"rules_primary": "<string>",
"rules_secondary": "<string>",
"price_level_structure": "<string>",
"price_ranges": [
{
"start": "<string>",
"end": "<string>",
"step": "<string>"
}
],
"title": "<string>",
"subtitle": "<string>",
"expected_expiration_time": "2023-11-07T05:31:56Z",
"expiration_time": "2023-11-07T05:31:56Z",
"settlement_value_dollars": "0.5600",
"settlement_ts": "2023-11-07T05:31:56Z",
"settlement_floor_dollars": "0.5600",
"occurrence_datetime": "2023-11-07T05:31:56Z",
"fee_waiver_expiration_time": "2023-11-07T05:31:56Z",
"early_close_condition": "<string>",
"strike_type": "greater",
"floor_strike": 123,
"cap_strike": 123,
"functional_strike": "<string>",
"custom_strike": {},
"mve_collection_ticker": "<string>",
"mve_selected_legs": [
{
"event_ticker": "<string>",
"market_ticker": "<string>",
"side": "<string>",
"yes_settlement_value_dollars": "0.5600"
}
],
"primary_participant_key": "<string>",
"is_provisional": true,
"exchange_index": 0
}
],
"cursor": "<string>"
}tickers (comma-separated), scope to a group with event_ticker / series_ticker, or narrow with status, search, and the created / close / settled timestamp ranges.
Returns markets[] with title, status, yes_bid_dollars / yes_ask_dollars, last_price_dollars, volume_fp, open_interest_fp, and rules_primary (the settlement criteria), plus a cursor to page with.
For executed fills rather than quotes, use get_kalshi_trades. For the crypto-native venue carrying similar questions, use get_polymarket_markets.
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.
Event ticker to filter by. Only a single event ticker is supported.
Number of results per page. Defaults to 100. Maximum value is 1000.
0 <= x <= 1000Filter items that close before this Unix timestamp
Filter items that created before this Unix timestamp
Filter items that settled before this Unix timestamp
Return markets with metadata updated at or before this Unix timestamp (in seconds). Tracks non-trading changes only. May be combined with min_updated_ts and mve_filter=exclude. May also be combined with series_ticker, which requires mve_filter=exclude. Incompatible with other filters.
Filter items that close after this Unix timestamp
Filter items that created after this Unix timestamp
Filter items that settled after this Unix timestamp
Return markets with metadata updated later than this Unix timestamp (in seconds). Tracks non-trading changes only. May be combined with max_updated_ts and mve_filter=exclude. May also be combined with series_ticker, which requires mve_filter=exclude. Incompatible with other filters.
Filter by multivariate events (combos). 'only' returns only multivariate events, 'exclude' excludes multivariate events.
only, exclude Filter by series ticker
Filter by market status. Leave empty to return markets with any status.
unopened, open, paused, closed, settled Filter by specific market tickers. Comma-separated list of market tickers to retrieve.