PPrime Minister of Israel after the next election? ·…51%▲24PIsraeli Legislative Election Winner · Likud>99%▲73PFed Decision in October? · No change96%▲2PTrail Blazers vs. Lakers · O/U 241.598%▲59PPistons vs. Knicks · Karl-Anthony Towns: Points O/U 19.578%▲50PIsrael Election: Likud # of seats? · 25-2994%▲76KPrime Minister of Israel after the 2026 election? ·…63%▲43KPro Baseball Champion · Milwaukee90%▼5KWhich party will win the U.S. House? · Democratic…91%—K2026 Midterms: Congress Balance of Power? · Democrats sweep63%▼1PMLB World Series Champion 2026 · Milwaukee Brewers91%▼5KTexas Senate winner? · James Talarico66%—PBalance of Power: 2026 Midterms · Democrats Sweep66%—PWhat price will Bitcoin hit in October? · ↓…72%—PDelaware vs. Western Kentucky50%▲2PPresidential Election Winner 2028 · JD Vance18%▼1KPro Baseball Championship Series MVP Winner · Jackson Chourio44%▲5KTexas Governor winner? · Greg Abbott67%▼2PNext French Presidential Election · Marine Le Pen43%▼1PWhich party will win the Senate in 2026? ·…67%▲1PUS-Iran ceasefire continues through...? · October 3195%▲2PFrance declares state of emergency by...? · December 317%▼3PRepublican Presidential Nominee 2028 · J.D. Vance39%▲1KFlorida Governor winner? · Byron Donalds75%▼4

API de Kalshi: guía en español

La API REST y el WebSocket de Kalshi, con solicitudes de ejemplo, claves firmadas, endpoints para operar y límites.

Kalshi publica sus datos de mercado en una API REST gratuita y permite operar de forma programática con claves de API firmadas. Leer eventos, mercados, libros de órdenes y operaciones no necesita cuenta; enviar órdenes necesita una cuenta de Kalshi con fondos y una clave de API. Esta guía repasa la API, muestra solicitudes que funcionan y explica la autenticación, según la documentación y la especificación de la API de Kalshi a octubre de 2026.

La API de un vistazo

Servicio URL Autenticación
API REST (producción) https://external-api.kalshi.com/trade-api/v2 Lectura: ninguna · operar: clave firmada
API REST (host anterior, todavía admitido) https://api.elections.kalshi.com/trade-api/v2 Igual que arriba
API REST (demo) https://external-api.demo.kalshi.co/trade-api/v2 Cuenta y claves de demo aparte
WebSocket (producción) wss://external-api-ws.kalshi.com/trade-api/ws/v2 Conexión firmada obligatoria
WebSocket (demo) wss://external-api-ws.demo.kalshi.co/trade-api/ws/v2 Conexión firmada obligatoria
FIX FIXT.1.1 / FIX 5.0 SP2 sobre TLS A pedido, para usuarios institucionales

Aunque se llama “elections”, ese host sirve todos los mercados de Kalshi, no solo los políticos. Las claves de demo y de producción son distintas y no funcionan en los servidores de la otra.

Cómo se organizan los datos de Kalshi

  • Serie: una pregunta que se repite, como la temperatura máxima diaria en Nueva York (KXHIGHNY).
  • Evento: una edición concreta, como un día determinado (KXHIGHNY-26OCT28).
  • Mercado: un contrato de sí o no dentro del evento, como un rango de temperatura (KXHIGHNY-26OCT28-T67).

Los precios son textos en dólares de punto fijo con hasta cuatro decimales, como "0.5600", en los campos que terminan en _dollars. Las cantidades de contratos son textos con dos decimales en los campos que terminan en _fp, como volume_fp y open_interest_fp. Kalshi eliminó a principios de 2026 los campos antiguos en centavos enteros (yes_bid, last_price y otros), así que el código escrito con ellos hay que actualizarlo.

Leer mercados (sin cuenta)

Los eventos abiertos de una serie, con sus mercados incluidos:

curl "https://external-api.kalshi.com/trade-api/v2/events?series_ticker=KXHIGHNY&status=open&with_nested_markets=true"

Un solo mercado, con sus reglas y precios actuales:

curl "https://external-api.kalshi.com/trade-api/v2/markets/KXHIGHNY-26OCT28-T67"

Campos útiles del mercado: yes_bid_dollars, yes_ask_dollars, last_price_dollars, volume_24h_fp, open_interest_fp, close_time, status, result, y rules_primary / rules_secondary, que traen las reglas de resolución en inglés.

Endpoint Qué devuelve
GET /exchange/status Si la bolsa y el trading están activos
GET /series/{series_ticker} Detalles de la serie, incluidos el tipo de comisión y las fuentes de resolución
GET /events Eventos; filtra por status y series_ticker; hasta 200 por página
GET /events/{event_ticker} Un evento y sus mercados
GET /markets Mercados; filtra por event_ticker, series_ticker, status y tickers; hasta 1,000 por página
GET /markets/{ticker}/orderbook Las ofertas de compra de cada lado, con depth opcional
GET /markets/trades Operaciones recientes, filtrables por ticker y por tiempo
GET /series/{series}/markets/{ticker}/candlesticks Historial de precios en intervalos de 1 minuto, 1 hora o 1 día

Las listas se paginan con un cursor: devuelve el cursor que recibiste para traer la siguiente página, y detente cuando llegue vacío. Los eventos combinados (multivariados) no aparecen en /events y tienen su propio endpoint, /events/multivariate.

Dos detalles que confunden. El libro de órdenes muestra solo ofertas de compra: comprar “Sí” a 40¢ equivale a vender “No” a 60¢, así que el precio de venta se deduce del otro lado. Y los estados con los que filtras (open, closed, settled) no son los mismos que devuelve la API (active, closed, determined, finalized y otros).

Autenticación: claves de API y solicitudes firmadas

  1. Crea una clave en la configuración del perfil de tu cuenta de Kalshi, en API Keys. Recibes un ID de clave, y la clave privada se descarga una sola vez como archivo PEM. Kalshi recomienda hoy claves Ed25519; las claves RSA firmadas con RSA-PSS (SHA-256) siguen admitidas para clientes antiguos.
  2. Firma cada solicitud. Arma el texto timestamp + MÉTODO + ruta, con el timestamp en milisegundos y la ruta con /trade-api/v2 pero sin los parámetros de consulta, por ejemplo 1703123456789GET/trade-api/v2/portfolio/balance. Fírmalo con tu clave privada y codifica la firma en base64.
  3. Envía tres encabezados: KALSHI-ACCESS-KEY (tu ID de clave), KALSHI-ACCESS-TIMESTAMP y KALSHI-ACCESS-SIGNATURE.

A diferencia de Polymarket, no hay billetera ni firmas en la blockchain: una clave de Kalshi está ligada a tu cuenta verificada, y las operaciones se liquidan en dólares.

Endpoints para operar

Endpoint Uso
GET /portfolio/balance Saldo en efectivo y valor de la cartera
GET /portfolio/positions Posiciones abiertas (sin liquidar); las liquidadas están en /portfolio/settlements
GET /portfolio/fills Tus operaciones ejecutadas
POST /portfolio/events/orders Enviar una orden
DELETE /portfolio/events/orders/{order_id} Cancelar una orden (también hay endpoints para modificarla y reducirla)

Una orden necesita un ticker, un side (bid o ask), un count y un price como textos, un time_in_force (good_till_canceled, immediate_or_cancel o fill_or_kill) y una opción para evitar operar contra ti mismo. Todas las órdenes son límite: Kalshi quitó las órdenes de mercado de la API en 2026. El endpoint antiguo POST /portfolio/orders quedó obsoleto en junio de 2026, así que el código nuevo debe usar la familia /portfolio/events/orders.

WebSocket

Conéctate a la URL del WebSocket con los mismos tres encabezados firmados, firmando timestamp + "GET" + "/trade-api/ws/v2". La conexión tiene que ir firmada aunque solo quieras datos públicos. Después, suscríbete:

{"id": 1, "cmd": "subscribe", "params": {"channels": ["orderbook_delta", "ticker"], "market_tickers": ["KXHIGHNY-26OCT28-T67"]}}

Los canales de mercado incluyen orderbook_delta (una foto inicial y luego los cambios), ticker, trade y market_lifecycle_v2. Los de cuenta incluyen fill, user_orders y market_positions.

Límites y SDK

  • Los límites de solicitudes son presupuestos de tokens por segundo, y la mayoría de las solicitudes cuesta 10 tokens. Las cuentas nuevas empiezan en el nivel Basic (200 de lectura, 100 de escritura); los niveles más altos se piden o se ganan con volumen. Si te pasas, recibes un HTTP 429. GET /account/limits muestra tus límites actuales.
  • SDK oficiales: Python (kalshi_python_sync y kalshi_python_async en PyPI) y TypeScript (kalshi-typescript en npm). El paquete antiguo kalshi-python está obsoleto.
  • Los datos históricos anteriores a la fecha de corte de Kalshi están en endpoints aparte, bajo /historical/.

API de Kalshi vs API de Polymarket

Kalshi Polymarket
Datos públicos Una API REST, sin clave API Gamma, CLOB y Data, sin clave
Autenticación para operar Clave Ed25519 o RSA, encabezados firmados Firma de la billetera (EIP-712) más credenciales HMAC
Dinero Dólares en una cuenta regulada pUSD en Polygon, respaldado 1 a 1 por USDC (exchange principal)
Libro de órdenes Ofertas de compra de cada lado; la venta se deduce del otro lado Compras y ventas por cada token de resultado

La otra mitad está en nuestra guía de la API de Polymarket. Los tableros en vivo de Prediction Tape usan las dos API públicas.

Preguntas frecuentes

¿La API de Kalshi es gratis?
Sí. Leer datos de mercado es gratis y no necesita cuenta. Operar por la API cuesta las mismas comisiones que operar en la app.
¿Necesito una clave de API para ver los precios de Kalshi?
No para la API REST: eventos, mercados, libros de órdenes, operaciones y velas son públicos. Sí necesitas una clave firmada para operar y para abrir una conexión WebSocket.
¿Puedo hacer un bot de trading para Kalshi?
Sí. La API y los SDK oficiales están pensados para eso. Empieza en el entorno de demo, respeta los límites de solicitudes y recuerda que todas las órdenes son límite. Para operar de verdad necesitas una cuenta verificada en un país donde Kalshi esté disponible.
¿Por qué los precios llegan como texto?
Kalshi pasó a textos en dólares de punto fijo en 2025 y 2026 para admitir precios de menos de un centavo. Léelos como decimales, no como números de punto flotante, si te importa la precisión.

Relacionado: Desarrolladores · Comparar API · API de Polymarket · Glosario · Reseña de Kalshi