Company
API
The Kairo Perps API is live and read-only. Trading is never routed through Kairo: orders are signed by the trader's wallet and sent to the venue by the SDK, which attaches Kairo's builder code so 0.03% of filled notional goes to the protocol treasury.
- Version
- 1.0
- Effective
- 2026-09-06
- Last updated
- 2026-09-07
Status
- Perps REST API v1: live at /api/public/perps/v1. Open CORS, no keys, 20 requests per second per client (burst 120).
- SDK: @kairo/perps-sdk (sdk/perps in the repository). Reads use this API; writes are wallet-signed.
- Prediction-market data: no hosted endpoint yet. Read it from Arc directly as described below.
Perps endpoints
| Endpoint | Returns |
|---|---|
| GET /markets | All perp markets: mark and oracle price, 24h change, hourly funding, open interest, 24h volume. |
| GET /markets/:symbol | One market. |
| GET /candles/:symbol?interval=1h&limit=200 | OHLCV candles. Intervals 1m, 5m, 15m, 1h, 4h, 1d; max 500. |
| GET /account/:address | Account value, margin used, withdrawable, plus open positions. |
| GET /positions/:address | Open positions with entry, liquidation price, unrealised PnL. |
| GET /orders/:address | Resting orders. |
| GET /fills/:address | Last 100 fills, including the builder fee paid to Kairo. |
| GET /builder | Kairo fee: address, rate (0.03%), and whether the venue currently accepts it. |
| GET /approval/:address | Whether the wallet has signed the 0.03% fee approval. |
Every response is JSON with ok: true and a network field, or ok: false with an error string. Health: /api/public/perps/health.
#perps-endpointsKairo fee
Orders placed through the Kairo app or SDK carry a builder code pointing at the Kairo protocol treasury. The venue charges 0.03% of filled notional on top of its own fee and pays it to the treasury. Traders sign a one-time approval capping the fee at exactly 0.03%; the SDK requests it before the first order.
SDK quick start
- npm i @kairo/perps-sdk @nktkas/hyperliquid viem
- const kairo = new KairoPerps({ baseUrl: "https://kairo.market" })
- const btc = await kairo.market("BTC"); const { positions } = await kairo.account(address)
- await kairo.marketOrder(wallet, address, { market: btc, side: "long", size: 0.01 })
The SDK also exposes setLeverage, limitOrder, closePosition, cancel and ensureFeeApproval. Full README lives in sdk/perps/README.md.
#sdkPrediction-market data today
- Connect to an Arc RPC endpoint.
- Fetch MarketCreated logs from the MarketFactory address from the deployment block onward for market discovery.
- Fetch Trade logs from the TradeRouter for volume, fees, pool balances and probability history.
- Call the market maker and conditional-token contracts for live prices, pool balances and positions.