Skip to main content

Typed Lighter

A fully typed, validated async client for the Lighter API.

PyPI version Python versions Docs License



from typed_lighter import Lighter

async with Lighter.new(public=True) as client:
  books = await client.api.markets.order_books(filter='perp')
  for book in books['order_books'][:5]:
    print(book['market_id'], book['symbol'], book['supported_price_decimals'])

Lighter is a perpetuals and spot order book running on its own ZK rollup. Every state change (orders, transfers, leverage, API keys) is a signed L2 transaction; everything else is a REST read, a WebSocket stream, or an auth-token-gated account write. The client mirrors that split:

Surface What it covers Credentials
client.api REST: markets, candles, accounts, orders and trades, transfers, blocks, pools, referrals, RFQ public, or an auth token for private reads
client.tx Signed transactions: orders, cancels, leverage, margin, transfers, sub-accounts, API keys, pools, staking API key
client.streams WebSocket channels: order books, trades, candles, market stats, account orders, positions, notifications public, or an auth token for private channels
client.signer Local signing with no network: every transaction type, auth tokens, key generation API key
client.explorer The public block explorer (mainnet and testnet): blocks, batches, logs, account history none
client.deposit_bridge Universal deposit addresses from other chains bridge API key

Signing happens in pure Python, inside the package: no compiled library, no external process. Transactions go over HTTP or over the shared WebSocket connection, chosen per call.

Authenticated Quick Start

from typed_lighter import Lighter

async with Lighter.new() as client:  # reads LIGHTER_ACCOUNT_INDEX, LIGHTER_API_KEY_INDEX, LIGHTER_API_PRIVATE_KEY
  account = client.signer.account_index
  orders = await client.api.account.orders.active(account_index=account)
  for order in orders['orders']:
    print(order['market_index'], order['order_index'], order['price'], order['status'])

See Authenticated Setup for how accounts, API keys and auth tokens work on Lighter.

Why Typed Lighter?

  • 🎯 Precise Types: Typed requests and responses on every surface, down to order-type unions and Literal statuses, not dict/Any.
  • ✅ Runtime Validation: REST replies, WebSocket frames and transaction receipts validated by default, not just typed on paper.
  • ⚡ Async First: Async HTTP and one multiplexed WebSocket connection for streams and transactions, built for concurrent workflows.
  • 📚 Full Surface: Every REST endpoint and stream channel, all 20 user transaction types, the explorer and the deposit bridge, not just the popular ones.

Installation

pip install typed-lighter

How To

Reference

Design Philosophy

Typed Lighter follows the principles outlined in this blog post.

Details matter. Developer experience matters.

License

MIT — see LICENSE.

Release files for typed-lighter 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for typed-lighter 0.1.0
File Size Uploaded
typed_lighter-0.1.0.tar.gz 162.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for typed-lighter 0.1.0
File Interpreter ABI Platform
typed_lighter-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 454.6 kB

Release files / typed_lighter-0.1.0.tar.gz

Download URL typed_lighter-0.1.0.tar.gz
Size 162.7 kB
Tags Source
SHA-256 checksum
How to use checksums
53820ff8d0a5680e729c4d8988009f2b807b8959ae874281141f46e223d0c825
BLAKE2b-256 checksum
How to use checksums
eed900a69c6f2161ca416ab85d096c236229c9f3bc3bb8c04f272f85683530cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / typed_lighter-0.1.0-py3-none-any.whl

Download URL typed_lighter-0.1.0-py3-none-any.whl
Size 291.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d3edd06ae3e3aea10573056572a4c9b6038a1f1ff643359246d86e472c1d6cf
BLAKE2b-256 checksum
How to use checksums
714c4dda904182590043bb2a7a96b4283ab0b5c458089ed93711dd90cf9baa0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page