curl --request GET \
--url https://external-api.kalshi.com/trade-api/v2/historical/orders \
--header 'KALSHI-ACCESS-KEY: <api-key>' \
--header 'KALSHI-ACCESS-SIGNATURE: <api-key>' \
--header 'KALSHI-ACCESS-TIMESTAMP: <api-key>'import requests
url = "https://external-api.kalshi.com/trade-api/v2/historical/orders"
headers = {
"KALSHI-ACCESS-KEY": "<api-key>",
"KALSHI-ACCESS-SIGNATURE": "<api-key>",
"KALSHI-ACCESS-TIMESTAMP": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'KALSHI-ACCESS-KEY': '<api-key>',
'KALSHI-ACCESS-SIGNATURE': '<api-key>',
'KALSHI-ACCESS-TIMESTAMP': '<api-key>'
}
};
fetch('https://external-api.kalshi.com/trade-api/v2/historical/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://external-api.kalshi.com/trade-api/v2/historical/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 => [
"KALSHI-ACCESS-KEY: <api-key>",
"KALSHI-ACCESS-SIGNATURE: <api-key>",
"KALSHI-ACCESS-TIMESTAMP: <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://external-api.kalshi.com/trade-api/v2/historical/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("KALSHI-ACCESS-KEY", "<api-key>")
req.Header.Add("KALSHI-ACCESS-SIGNATURE", "<api-key>")
req.Header.Add("KALSHI-ACCESS-TIMESTAMP", "<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://external-api.kalshi.com/trade-api/v2/historical/orders")
.header("KALSHI-ACCESS-KEY", "<api-key>")
.header("KALSHI-ACCESS-SIGNATURE", "<api-key>")
.header("KALSHI-ACCESS-TIMESTAMP", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://external-api.kalshi.com/trade-api/v2/historical/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["KALSHI-ACCESS-KEY"] = '<api-key>'
request["KALSHI-ACCESS-SIGNATURE"] = '<api-key>'
request["KALSHI-ACCESS-TIMESTAMP"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"order_id": "<string>",
"user_id": "<string>",
"client_order_id": "<string>",
"ticker": "<string>",
"outcome_side": "yes",
"book_side": "bid",
"type": "limit",
"status": "resting",
"yes_price_dollars": "0.5600",
"no_price_dollars": "0.5600",
"fill_count_fp": "10.00",
"remaining_count_fp": "10.00",
"initial_count_fp": "10.00",
"taker_fill_cost_dollars": "0.5600",
"maker_fill_cost_dollars": "0.5600",
"taker_fees_dollars": "0.5600",
"maker_fees_dollars": "0.5600",
"side": "yes",
"action": "buy",
"expiration_time": "2023-11-07T05:31:56Z",
"created_time": "2023-11-07T05:31:56Z",
"last_update_time": "2023-11-07T05:31:56Z",
"self_trade_prevention_type": "taker_at_cross",
"order_group_id": "<string>",
"cancel_order_on_pause": true,
"subaccount_number": 123,
"exchange_index": 0
}
],
"cursor": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}Get Historical Orders
Endpoint for getting orders that have been archived to the historical database.
API keys restricted to a subaccount return only that subaccount’s orders. If supplied, subaccount must match the key’s restriction.
curl --request GET \
--url https://external-api.kalshi.com/trade-api/v2/historical/orders \
--header 'KALSHI-ACCESS-KEY: <api-key>' \
--header 'KALSHI-ACCESS-SIGNATURE: <api-key>' \
--header 'KALSHI-ACCESS-TIMESTAMP: <api-key>'import requests
url = "https://external-api.kalshi.com/trade-api/v2/historical/orders"
headers = {
"KALSHI-ACCESS-KEY": "<api-key>",
"KALSHI-ACCESS-SIGNATURE": "<api-key>",
"KALSHI-ACCESS-TIMESTAMP": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'KALSHI-ACCESS-KEY': '<api-key>',
'KALSHI-ACCESS-SIGNATURE': '<api-key>',
'KALSHI-ACCESS-TIMESTAMP': '<api-key>'
}
};
fetch('https://external-api.kalshi.com/trade-api/v2/historical/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://external-api.kalshi.com/trade-api/v2/historical/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 => [
"KALSHI-ACCESS-KEY: <api-key>",
"KALSHI-ACCESS-SIGNATURE: <api-key>",
"KALSHI-ACCESS-TIMESTAMP: <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://external-api.kalshi.com/trade-api/v2/historical/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("KALSHI-ACCESS-KEY", "<api-key>")
req.Header.Add("KALSHI-ACCESS-SIGNATURE", "<api-key>")
req.Header.Add("KALSHI-ACCESS-TIMESTAMP", "<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://external-api.kalshi.com/trade-api/v2/historical/orders")
.header("KALSHI-ACCESS-KEY", "<api-key>")
.header("KALSHI-ACCESS-SIGNATURE", "<api-key>")
.header("KALSHI-ACCESS-TIMESTAMP", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://external-api.kalshi.com/trade-api/v2/historical/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["KALSHI-ACCESS-KEY"] = '<api-key>'
request["KALSHI-ACCESS-SIGNATURE"] = '<api-key>'
request["KALSHI-ACCESS-TIMESTAMP"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"order_id": "<string>",
"user_id": "<string>",
"client_order_id": "<string>",
"ticker": "<string>",
"outcome_side": "yes",
"book_side": "bid",
"type": "limit",
"status": "resting",
"yes_price_dollars": "0.5600",
"no_price_dollars": "0.5600",
"fill_count_fp": "10.00",
"remaining_count_fp": "10.00",
"initial_count_fp": "10.00",
"taker_fill_cost_dollars": "0.5600",
"maker_fill_cost_dollars": "0.5600",
"taker_fees_dollars": "0.5600",
"maker_fees_dollars": "0.5600",
"side": "yes",
"action": "buy",
"expiration_time": "2023-11-07T05:31:56Z",
"created_time": "2023-11-07T05:31:56Z",
"last_update_time": "2023-11-07T05:31:56Z",
"self_trade_prevention_type": "taker_at_cross",
"order_group_id": "<string>",
"cancel_order_on_pause": true,
"subaccount_number": 123,
"exchange_index": 0
}
],
"cursor": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}Authorizations
Your API key ID
Base64 signature of the pre-sign text (timestamp + method + path) made with the API key's algorithm - RSA-PSS with SHA-256 for RSA keys, Ed25519 for Ed25519 keys
Request timestamp in milliseconds
Query Parameters
Filter by market ticker
Filter items after this Unix timestamp
Filter items before this Unix timestamp
Number of results per page. Defaults to 100.
1 <= x <= 1000Pagination cursor. Use the cursor value returned from the previous response to get the next page of results. Leave empty for the first page.
Subaccount number (0 for primary, 1-63 for subaccounts). If omitted, defaults to all subaccounts.