Skip to main content

KaleidoSwap SDK Python Bindings

Python bindings for the KaleidoSwap SDK: atomic swaps (Boltz protocol) between Bitcoin, Lightning, and Liquid.

Installation

python -m pip install kaleidorg_swap_sdk

Python 3.10+ is supported. Prebuilt wheels cover Linux x86_64/aarch64, macOS x86_64/arm64, and Windows x86_64; other platforms build the published source distribution and need a Rust 1.88+ toolchain.

Quick Start

⚠️ WARNING: All examples are only to be used in REGTEST.

import kaleidorg_swap_sdk
import asyncio

async def main():
    # Initialize for regtest (do NOT use this example in production)
    network = kaleidorg_swap_sdk.Network.REGTEST
    boltz_api = kaleidorg_swap_sdk.BoltzApiClientV2.default(network)

    # Example: Create a submarine swap (Lightning → Bitcoin)
    key_pair = kaleidorg_swap_sdk.KeyPair()
    btc_chain = kaleidorg_swap_sdk.btc_chain_from_network(network)

    invoice = "lightning-invoice-to-pay"

    request = kaleidorg_swap_sdk.CreateSubmarineRequest(
        _from=btc_chain,
        to=btc_chain,
        invoice=invoice,
        refund_public_key=key_pair.public(),
    )

    swap = await boltz_api.create_swap(request)
    print(f"Send {swap.expected_amount} sats to {swap.address}")

asyncio.run(main())

Partner attribution (organization API keys)

A partner organization can have the swaps it originates attributed to it. That needs an organization API key from the KaleidoSwap partner panel — a kld_test_… key for signet and staging, kld_live_… for mainnet and production. Without one, BoltzApiClientV2 behaves exactly as before and creates unattributed swaps.

import os
import kaleidorg_swap_sdk

client = kaleidorg_swap_sdk.BoltzApiClientV2.kaleido_maker(
    "https://maker.signet.kaleidoswap.com/v2",
    os.environ["KALEIDOSWAP_API_KEY"],
    None,  # timeout in seconds
)

client.api_key_environment()  # "test"
client.api_key_id()           # the key id the partner panel shows

Scrub the key in error reporters that capture locals. It crosses the binding as a plain str, so it is a function argument on a stack frame for the length of the call. The SDK keeps it out of its own errors, logs and repr, but anything that renders frame locals — pytest --showlocals, Sentry's with_locals, some logging formatters — reads it off the frame regardless. Scrub it in your reporter's before-send hook.

The result is an ordinary client — every swap route works the same way — that sends the key as Authorization: Bearer … to that maker URL, and only to that maker URL. The key answers which partner organization created this swap? and nothing else: it authorizes no claim, no refund, no fund movement and no panel access. The per-swap swap_auth credential the maker returns on create stays separate and unchanged.

The URL must be https unless it is a loopback address, since a bearer credential over plain HTTP is readable by anything on the path. A value that cannot be a key is rejected here rather than reaching the maker as a 401 — which is the same answer a revoked key gets. There is no accessor for the secret half: api_key_id() and api_key_environment() are all the client will tell you, and UniFFI renders no string form of the object at all.

Keep the key in server-side configuration. It is permanent until revoked, so never ship it inside a mobile or desktop application, where every user holds it.

Swap Types

  • Submarine swaps - Lightning → On-chain Bitcoin/Liquid
  • Reverse swaps - On-chain Bitcoin/Liquid → Lightning
  • Chain swaps - Bitcoin ↔ Liquid atomic swaps

Examples

Complete working examples are available in the examples/ directory:

Release files for kaleidorg-swap-sdk 0.7.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 kaleidorg-swap-sdk 0.7.0
File Size Uploaded
kaleidorg_swap_sdk-0.7.0.tar.gz 256.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for kaleidorg-swap-sdk 0.7.0
File
kaleidorg_swap_sdk-0.7.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
kaleidorg_swap_sdk-0.7.0-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
kaleidorg_swap_sdk-0.7.0-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
kaleidorg_swap_sdk-0.7.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
kaleidorg_swap_sdk-0.7.0-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 26.4 MB

Release files / kaleidorg_swap_sdk-0.7.0.tar.gz

Download URL kaleidorg_swap_sdk-0.7.0.tar.gz
Size 256.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5bed088cb0289fabe09392f8948eb55f0a9965eb6c51ca74c6cb84e4f58db203
BLAKE2b-256 checksum
How to use checksums
eb9871a8877cb5eb7c6490553e9393e3fcbda8ed2e2fe6add20a0e1fd79f0e8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / kaleidorg_swap_sdk-0.7.0-py3-none-win_amd64.whl

Download URL kaleidorg_swap_sdk-0.7.0-py3-none-win_amd64.whl
Size 5.1 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
0142e48d27841433d5ce2caf9e9a4cbad63d59856f770d0298564346ce815016
BLAKE2b-256 checksum
How to use checksums
378548b4bc2e785f1c3ee5d2134b34977907b4e8d3213df5336c743b8ceda53c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / kaleidorg_swap_sdk-0.7.0-py3-none-manylinux_2_28_x86_64.whl

Download URL kaleidorg_swap_sdk-0.7.0-py3-none-manylinux_2_28_x86_64.whl
Size 5.3 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
ddb20fc837bbe8bc3a0f6f59f95e2e927bb850a7f272fd54262799d7104ad46a
BLAKE2b-256 checksum
How to use checksums
134923de3bc6938bfdc9c320aa3644f510c9b9bfc386faf20daaf8f1e1ca3ae3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / kaleidorg_swap_sdk-0.7.0-py3-none-manylinux_2_28_aarch64.whl

Download URL kaleidorg_swap_sdk-0.7.0-py3-none-manylinux_2_28_aarch64.whl
Size 5.3 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
8d4719c8d3d4d7ca50f3721164ef81db226ab35a771a3dddf82c4c042930d1b9
BLAKE2b-256 checksum
How to use checksums
91891b997ce47e784cbc2d4a43e41f8960fdfd4b970813fd5308d86977922bf6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / kaleidorg_swap_sdk-0.7.0-py3-none-macosx_11_0_arm64.whl

Download URL kaleidorg_swap_sdk-0.7.0-py3-none-macosx_11_0_arm64.whl
Size 5.2 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
96628da01e24d7551edac153d76abb13414d9b37fd63b2ef1b6bdcc2872a2c60
BLAKE2b-256 checksum
How to use checksums
c9611c1def45288610eec97390f75eaa2781dfb91ff36064120d876f6c8dd48a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / kaleidorg_swap_sdk-0.7.0-py3-none-macosx_10_12_x86_64.whl

Download URL kaleidorg_swap_sdk-0.7.0-py3-none-macosx_10_12_x86_64.whl
Size 5.2 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c1bbad0d38b7813e3f726f53f2a0a0ed44fc07938dfd90a67bfd283c85ce159f
BLAKE2b-256 checksum
How to use checksums
477ac3964d5fd2ee9546edabc0e4a15122f4dc8ed531ed669a27991cfac2b138
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.10.0

6 release files

0.9.0

6 release files

0.8.0

6 release files

0.7.2

6 release files

0.7.1

6 release files

This release

0.7.0 This release

6 release files

0.6.0

6 release files

0.5.0

6 release files

0.4.0

6 release files

0.3.0

6 release files

0.2.0

6 release files

0.1.1

6 release files

0.1.0

6 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