Skip to main content

Official Python SDK for LnBot — Bitcoin for AI Agents. Send and receive sats over Lightning with a few lines of code.

Project description

lnbot

PyPI version PyPI downloads Python License: MIT

The official Python SDK for LnBot — Bitcoin for AI Agents.

Give your AI agents, apps, and services access to Bitcoin over the Lightning Network. Create wallets, send and receive sats, and get real-time payment notifications.

from lnbot import LnBot

ln = LnBot(api_key="key_...")

invoice = ln.invoices.create(amount=1000, memo="Coffee")
ln.payments.create(target="alice@ln.bot", amount=500)

LnBot also ships a TypeScript SDK, Go SDK, Rust SDK, CLI, and MCP server.


Install

pip install lnbot

Quick start

1. Create a wallet

from lnbot import LnBot

ln = LnBot()
wallet = ln.wallets.create(name="my-agent")

print(wallet.primary_key)          # your API key
print(wallet.address)              # your Lightning address
print(wallet.recovery_passphrase)  # back this up!

2. Receive sats

ln = LnBot(api_key=wallet.primary_key)

invoice = ln.invoices.create(amount=1000, memo="Payment for task #42")
print(invoice.bolt11)

3. Wait for payment

for event in ln.invoices.watch(invoice.number):
    if event.event == "settled":
        print("Paid!")

4. Send sats

ln.payments.create(target="alice@ln.bot", amount=500)
ln.payments.create(target="lnbc10u1p...")

5. Check balance

wallet = ln.wallets.current()
print(f"{wallet.available} sats available")

Async support

Every method has an async equivalent via AsyncLnBot:

from lnbot import AsyncLnBot

async with AsyncLnBot(api_key="key_...") as ln:
    wallet = await ln.wallets.current()
    invoice = await ln.invoices.create(amount=1000)

    async for event in ln.invoices.watch(invoice.number):
        if event.event == "settled":
            print("Paid!")

Error handling

from lnbot import LnBot, BadRequestError, UnauthorizedError, NotFoundError, ConflictError, LnBotError

try:
    ln.payments.create(target="invalid", amount=100)
except BadRequestError:
    ...  # 400
except UnauthorizedError:
    ...  # 401
except NotFoundError:
    ...  # 404
except ConflictError:
    ...  # 409
except LnBotError as e:
    print(e.status, e.body)

Configuration

from lnbot import LnBot

ln = LnBot(
    api_key="key_...",            # or set LNBOT_API_KEY env var
    base_url="https://api.ln.bot",  # optional — this is the default
    timeout=30.0,                   # optional — request timeout in seconds
)

The API key can also be provided via the LNBOT_API_KEY environment variable. If both are provided, the constructor argument takes precedence.


API reference

Wallets

Method Description
ln.wallets.create(name=) Create a new wallet (no auth required)
ln.wallets.current() Get current wallet info and balance
ln.wallets.update(name=) Update wallet name

Invoices

Method Description
ln.invoices.create(amount=, memo=, reference=) Create a BOLT11 invoice
ln.invoices.list(limit=, after=) List invoices
ln.invoices.get(number) Get invoice by number
ln.invoices.watch(number, timeout=) SSE stream for settlement/expiry

Payments

Method Description
ln.payments.create(target=, amount=, ...) Send sats to a Lightning address or BOLT11 invoice
ln.payments.list(limit=, after=) List payments
ln.payments.get(number) Get payment by number

Addresses

Method Description
ln.addresses.create(address=) Create a random or vanity Lightning address
ln.addresses.list() List all addresses
ln.addresses.delete(address) Delete an address
ln.addresses.transfer(address, target_wallet_key=) Transfer address to another wallet

Transactions

Method Description
ln.transactions.list(limit=, after=) List credit and debit transactions

Webhooks

Method Description
ln.webhooks.create(url=) Register a webhook endpoint (max 10)
ln.webhooks.list() List all webhooks
ln.webhooks.delete(webhook_id) Delete a webhook

API Keys

Method Description
ln.keys.list() List API keys (metadata only)
ln.keys.rotate(slot) Rotate a key (0 = primary, 1 = secondary)

Backup & Restore

Method Description
ln.backup.recovery() Generate 12-word BIP-39 recovery passphrase
ln.backup.passkey_begin() Start passkey backup (WebAuthn)
ln.backup.passkey_complete(session_id=, attestation=) Complete passkey backup
ln.restore.recovery(passphrase=) Restore wallet with recovery passphrase
ln.restore.passkey_begin() Start passkey restore (WebAuthn)
ln.restore.passkey_complete(session_id=, assertion=) Complete passkey restore

Requirements

  • Python 3.10+
  • Get your API key at ln.bot

Links

Other SDKs

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lnbot-0.3.0.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lnbot-0.3.0-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file lnbot-0.3.0.tar.gz.

File metadata

  • Download URL: lnbot-0.3.0.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lnbot-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7fdddc102bc61d7cb3588d393a47ef5c3537fd5f20d02abbbe162b5119378aa6
MD5 09c006e10c060abf35de0667a8c75f6f
BLAKE2b-256 184507256c2e51cf730845d47c24bd805f6d7b45acfd0bb41095add0a16d3854

See more details on using hashes here.

File details

Details for the file lnbot-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: lnbot-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lnbot-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 828eb64e445b0270c3dc94a660a681dfba02785f03612c0047c03caca81cd43b
MD5 7a8ef0855089ecef06d30206324b9a02
BLAKE2b-256 fd1ffee8e6649f8383c921391d24b69a9d770b918c8f87cd01a99bb0022748a5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page