mirror of
https://github.com/multipleof4/KalBot.git
synced 2026-03-17 05:51:02 +00:00
Feat: Kalshi REST client for markets and orderbook
This commit is contained in:
65
lib/kalshi/rest.js
Normal file
65
lib/kalshi/rest.js
Normal file
@@ -0,0 +1,65 @@
|
||||
import { signRequest, KALSHI_API_BASE } from './auth.js';
|
||||
|
||||
async function kalshiFetch(method, path, body = null) {
|
||||
const headers = signRequest(method, path);
|
||||
const opts = { method, headers };
|
||||
if (body) opts.body = JSON.stringify(body);
|
||||
|
||||
const res = await fetch(`${KALSHI_API_BASE}${path}`, opts);
|
||||
if (!res.ok) {
|
||||
const text = await res.text();
|
||||
throw new Error(`Kalshi API ${method} ${path} → ${res.status}: ${text}`);
|
||||
}
|
||||
return res.json();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get events for the BTC 15-min series.
|
||||
* Returns the currently active event + its markets.
|
||||
*/
|
||||
export async function getActiveBTCEvent() {
|
||||
const data = await kalshiFetch('GET', '/trade-api/v2/events?series_ticker=KXBTC15M&status=open&limit=1');
|
||||
const event = data.events?.[0];
|
||||
if (!event) return null;
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get markets for a specific event ticker.
|
||||
*/
|
||||
export async function getEventMarkets(eventTicker) {
|
||||
const data = await kalshiFetch('GET', `/trade-api/v2/events/${eventTicker}`);
|
||||
return data.event?.markets || [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get orderbook for a specific market ticker.
|
||||
*/
|
||||
export async function getOrderbook(ticker) {
|
||||
const data = await kalshiFetch('GET', `/trade-api/v2/markets/${ticker}/orderbook`);
|
||||
return data.orderbook || data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get single market details.
|
||||
*/
|
||||
export async function getMarket(ticker) {
|
||||
const data = await kalshiFetch('GET', `/trade-api/v2/markets/${ticker}`);
|
||||
return data.market || data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Place a real order on Kalshi. NOT used in paper mode.
|
||||
*/
|
||||
export async function placeOrder(params) {
|
||||
return kalshiFetch('POST', '/trade-api/v2/portfolio/orders', params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get wallet balance.
|
||||
*/
|
||||
export async function getBalance() {
|
||||
return kalshiFetch('GET', '/trade-api/v2/portfolio/balance');
|
||||
}
|
||||
|
||||
export { kalshiFetch };
|
||||
Reference in New Issue
Block a user