# Kalshi Python SDK (sync and async)

Kalshi's current official Python client - weekly releases, Python 3.13 only, no source.

*https://predictionmarkets.tools/tools/kalshi-python-sync · Trading Clients, SDKs & Bots*

## Facts

### At a glance

| Field | Value |
| --- | --- |
| Vendor | Kalshi |
| Category | Trading Clients, SDKs & Bots |
| Job | sdk |
| Website | https://pypi.org/project/kalshi-python-sync/ |
| Pricing model | free |
| Free tier | true |
| Open source | false |
| Licence | LicenseRef-Proprietary |
| Self-hosted | true |
| Tested hands-on | false |
| Last updated | 2026-09-19 |

### Availability

| Field | Value |
| --- | --- |
| Jurisdictions | global |
| Open to US persons | true |
| KYC required | false |

### Markets

| Field | Value |
| --- | --- |
| Settlement | cash |
| Resolved by | none |

### Economics

| Field | Value |
| --- | --- |
| Taker fee | none |
| Maker fee | none |
| Liquidity model | clob |
| Platforms | library |
| AI features | none |

### Interfaces

| Field | Value |
| --- | --- |
| API | true |
| WebSocket | false |
| Scripting | none |
| Python | true |
| MCP server | false |
| Export | json |

### Capabilities

Yes: order_book, automation, live_trading, portfolio_tracking

No: charting, screening, backtesting, paper_trading, calibration_scoring, cross_venue, alerts, news, tax_reporting

*Verified: pricing 2026-09-19; availability 2026-09-19; capabilities 2026-09-19.*

## What it is

Kalshi's current official Python client, and the reason the older [kalshi-python](https://predictionmarkets.tools/tools/kalshi-python)
card is a dead end. It ships as two packages built from the same specification -
`kalshi_python_sync` and `kalshi_python_async` - and Kalshi's SDK documentation names both, adds a
TypeScript sibling on npm (`kalshi-typescript`), and says in as many words that the old
`kalshi-python` package is deprecated.

It is generated code, and it does not pretend otherwise: the README inside the wheel is the
OpenAPI Generator's template, naming generator version 7.17.0 and API version 3.30.0. The package
metadata carries Kalshi's support address as the author email, which is the strongest evidence
available that this is the exchange's own publication - the homepage it lists,
`github.com/Kalshi/exchange-infra`, is not readable by the public.

Inside are seventeen API modules covering what the exchange does: markets, events, orders, order
groups, portfolio, account, exchange status, historical data, live data, multivariate contracts,
milestones, structured targets, search, communications, incentive programs, API keys and FCM. Six
runtime dependencies - `urllib3`, `python-dateutil`, `pydantic`, `typing-extensions`,
`lazy-imports` and `cryptography`, the last of which does the request signing.

Release cadence is the best thing about it. Thirty-one versions since 3.0.0 on 2025-12-02, the
latest 3.30.0 on 2026-09-15, and Kalshi's documentation says releases track the OpenAPI
specification and generally go out on a Tuesday or Wednesday, ahead of the corresponding API
change. Compare that with the package it replaced, which has not shipped since September 2025.

## Availability

The library imposes nothing and installs anywhere pip works - subject to Python 3.13.

The credential does the gating. Authentication is an API key id plus an RSA private key, with
RSA-PSS request signing, and the key comes from a funded Kalshi account. Who may open one is a
question about the exchange, answered on [kalshi](https://predictionmarkets.tools/tools/kalshi); the flags on this card describe
the package, which grants no access and blocks none.

## Pricing

Free to install, and the exchange does not charge for API access. The licence is not free in the
other sense: the published metadata says `LicenseRef-Proprietary`, so this is a package you may
install and use, not one you may fork, vendor or relicense. If you need code you own, Kalshi's own
documentation tells you to generate your own client from its specifications.

What a fill costs is Kalshi's fee schedule, which lives on the venue's card.

## Markets & resolution

A client resolves nothing. Orders placed through it rest on Kalshi's order book and settle in
dollars against the exchange's determination, and the questions reachable through it are whatever
Kalshi lists. Prices are in cents over the wire - the generated examples divide balances by 100 -
which is the one data-model detail that bites first.

## Integrations

REST only. There is no WebSocket client in either package, no CLI and no MCP server; anything
live has to be written against Kalshi's separate streaming specification by hand. The TypeScript
package `kalshi-typescript` is the same generated family in another language, published by the
same account and at the same version, and its npm metadata carries an OpenAPI Generator default
licence rather than a considered one.

For a Python client that does stream, and that you may read, [pykalshi](https://predictionmarkets.tools/tools/pykalshi) is the
third-party answer.

## Limitations

**Python 3.13 or nothing.** The requirement is in the package metadata, and it rules out most
production images in use today. Nothing on the package page explains why a generated REST client
needs the newest interpreter.

**No WebSocket.** The whole streaming half of the Kalshi API is outside these packages.

**No public source repository.** The link in the metadata 404s, and the licence is proprietary, so
the answer to "what does this do with my key" comes from reading the installed wheel rather than a
repository, a changelog or an issue tracker. There is no issue tracker.

**Kalshi says it may lag.** Its documentation tells active traders to treat the REST OpenAPI and
WebSocket AsyncAPI specifications as the source of truth and, for production, to generate their
own client or integrate directly. That is unusually honest, and it is also a recommendation not to
depend on this package.

**Generated ergonomics.** Model names track the specification, not the way a trader thinks; there
are no domain objects, no local order book, no dataframe helpers and no retry policy of its own.

**The documentation host was not reachable from here.** The deprecation notice, the RSA-PSS
detail and the release cadence above were read in the Internet Archive's capture of Kalshi's SDK
overview page dated 2026-07-09, because the live host refused every automated request we made on
2026-09-19. The package facts - versions, dates, dependencies, module list, licence field,
Python floor - come from PyPI and from the wheel itself, both read on 2026-09-19.

## Alternatives

[pykalshi](https://predictionmarkets.tools/tools/pykalshi) is the maintained third-party client: MIT, WebSocket streaming, a
local order book, pandas output, Python 3.9 and up.

[ccxt](https://predictionmarkets.tools/tools/ccxt) and [pmxt](https://predictionmarkets.tools/tools/pmxt) reach Kalshi among several venues, if one integration
across exchanges matters more than exchange-shaped errors.

[kalshi-python](https://predictionmarkets.tools/tools/kalshi-python) is the deprecated package this one replaces, and
[kalshi-api](https://predictionmarkets.tools/tools/kalshi-api) is the API underneath all of them, which you can call with plain
HTTP if a generated client is not worth 3.13.

## FAQ

### Which Kalshi Python package should I install?

kalshi_python_sync or kalshi_python_async. Kalshi's SDK documentation marks the older kalshi-python package as deprecated. Both current packages were at 3.30.0 on 2026-09-15; the older one stopped at 2.1.4 on 2025-09-06.

### Why does it refuse to install?

Most often the Python version. The published metadata requires Python 3.13 or newer - not 3.12 - which is stricter than almost anything else in this category and stricter than the deprecated package it replaces, which accepted 3.9.

### Can I stream order book updates with it?

No. These packages are generated from the REST specification and ship no WebSocket client; the seventeen API modules inside are all HTTP. Kalshi documents its streaming API through a separate AsyncAPI specification, and you write that client yourself or use a third-party one.

### Is the source public?

Not as far as we can see. The package metadata points at github.com/Kalshi/exchange-infra, which returns 404 to an unauthenticated request, and the licence field reads LicenseRef-Proprietary. What you can read is the generated Python inside the wheel.

## Also from Kalshi

- [Kalshi API](https://predictionmarkets.tools/tools/kalshi-api.md)
- [kalshi-python](https://predictionmarkets.tools/tools/kalshi-python.md)
- [Kalshi](https://predictionmarkets.tools/tools/kalshi.md)

## Background

- [What running a bot does not solve](https://predictionmarkets.tools/guides/what-a-bot-cannot-fix.md) — A bot fixes speed and consistency. Rate limits, a missing rehearsal, a field that stops arriving, a partial fill and a paused market are not coding problems.

- [Where your key lives when software trades for you](https://predictionmarkets.tools/guides/where-your-key-lives.md) — Four different credentials are all called a key, and they differ in what a copy permits. What the clients in this catalogue ask for, and what to ask them back.

## Also worth comparing

- [Polymarket US Python SDK](https://predictionmarkets.tools/tools/polymarket-us-python.md) — Official SDK for Polymarket US - installs as polymarket-us, unreleased since January.
- [Polymarket US TypeScript SDK](https://predictionmarkets.tools/tools/polymarket-us-typescript.md) — Official TypeScript client for Polymarket US - npm has shipped nothing since January.
- [pykalshi](https://predictionmarkets.tools/tools/pykalshi.md) — Unofficial Kalshi client with what the generated SDK leaves out - streams and retries.
- [CCXT](https://predictionmarkets.tools/tools/ccxt.md) — One client for seven prediction venues, inside a 104-exchange crypto library.
- [limitless-sdk](https://predictionmarkets.tools/tools/limitless-sdk.md) — Limitless Exchange's own async Python SDK - CLOB and NegRisk orders, WebSocket, MIT.
- [PMXT](https://predictionmarkets.tools/tools/pmxt.md) — CCXT-shaped client for prediction markets, with a hosted API and a self-hosted mode.
