Python client for the Typesense API: https://github.com/typesense/typesense
$ pip install typesense
You can also add typesense to your project's requirements.txt.
You can find some examples here.
See detailed API documentation.
Use AsyncClient when working in an async runtime:
import asyncio import typesense async def main() -> None: client = typesense.AsyncClient({ "api_key": "abcd", "nodes": [{"host": "localhost", "port": "8108", "protocol": "http"}], "connection_timeout_seconds": 2, }) print(await client.collections.retrieve()) await client.api_call.aclose() if __name__ == "__main__": asyncio.run(main())
See examples/async_collection_operations.py for a fuller async walkthrough.
The client sends requests with httpx by default. On Python 3.10+ you can pass an httpx2 client instead. httpx2 is Pydantic's maintained continuation of httpx, and it fixes a connection pool leak in httpcore (encode/httpcore#1093) that can leave an AsyncClient failing every request with PoolTimeout under load.
$ pip install "typesense[httpx2]"
import httpx2 import typesense http_client = httpx2.AsyncClient( timeout=httpx2.Timeout(2.0), limits=httpx2.Limits(max_connections=100, max_keepalive_connections=20), ) client = typesense.AsyncClient( { "api_key": "abcd", "nodes": [{"host": "localhost", "port": "8108", "protocol": "http"}], }, http_client=http_client, )
typesense.Client takes an httpx2.Client the same way. The connection pool settings in the config (pool_timeout_seconds, max_connections, max_keepalive_connections) only apply to the default client, so set them on your own client instead. The Typesense client does not close a client you pass in.
| Typesense Server | typesense-python |
|---|---|
| >= v30.0 | >= v2.0.0 |
| >= v28.0 | >= v1.0.0 |
| >= v26.0 | >= v0.20.0 |
| >= v0.25.0 | >= v0.16.0 |
| >= v0.23.0 | >= v0.14.0 |
| >= v0.21.0 | >= v0.13.0 |
| >= v0.20.0 | >= v0.11.0 |
| >= v0.19.0 | >= v0.10.0 |
| >= v0.17.0 | >= v0.9.0 |
| >= v0.16.0 | >= v0.8.0 |
| >= v0.15.0 | >= v0.7.0 |
Note
Development happens in async-only code; sync code is generated automatically via utils/run-unasync.py.
Bug reports and pull requests are welcome on GitHub at [https://github.com/typesense/typesense-python].
If you change any part of the client's source code, run uv run utils/run-unasync.py before opening a PR to keep the generated sync files in sync.
typesense-python is distributed under the Apache 2 license.