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.5.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.5.0
File Size Uploaded
kaleidorg_swap_sdk-0.5.0.tar.gz 234.0 kB Details

Built distributions (wheels)

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

Total release size: 26.2 MB

Release files / kaleidorg_swap_sdk-0.5.0.tar.gz

Download URL kaleidorg_swap_sdk-0.5.0.tar.gz
Size 234.0 kB
Tags Source
SHA-256 checksum
How to use checksums
6001a43c4be6036af8e992487b816ff5607de87ec51c824de86c73cb3141507a
BLAKE2b-256 checksum
How to use checksums
83f3a3a2193d2f4012066c76963408a0e9b2389cbf78f1c57295ea99026b173d
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.5.0-py3-none-win_amd64.whl

Download URL kaleidorg_swap_sdk-0.5.0-py3-none-win_amd64.whl
Size 5.1 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
fed7c0b0541f81d534f6a3d9a90826fe64e761f567e10a33bc4459c8b2cb955f
BLAKE2b-256 checksum
How to use checksums
e3ab07e571d7350aac2ba250b6f1cd53db6e56ff8f0d7cbf3f6e7624a74a3e6a
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.5.0-py3-none-manylinux_2_28_x86_64.whl

Download URL kaleidorg_swap_sdk-0.5.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
c3413a6a7170db84f8118b0e91f7b30a31ebf7ae97a12333d1356f1d540f319d
BLAKE2b-256 checksum
How to use checksums
9e54c83a2e9986e10ea3f819ac7ee22d672a33c9f119ab8b6551b2b3e388cbc9
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.5.0-py3-none-manylinux_2_28_aarch64.whl

Download URL kaleidorg_swap_sdk-0.5.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
61fea9516e4ca92b2bf8d94b0d5af7d63f6af914e022ad883f7e53d3635f8a4c
BLAKE2b-256 checksum
How to use checksums
f6100a8f42dd540337b4c99ee29f16f71b7c8f01f1e84a71f55a2bc8234cc588
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.5.0-py3-none-macosx_11_0_arm64.whl

Download URL kaleidorg_swap_sdk-0.5.0-py3-none-macosx_11_0_arm64.whl
Size 5.1 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7fa2623348ff82028ca3cc59dd19263d032fcc48995be8b647ed0602f48a5075
BLAKE2b-256 checksum
How to use checksums
01aaef7c0f85259eac76704e66a9df225c8417e029360445c8b78c767c6d52ef
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.5.0-py3-none-macosx_10_12_x86_64.whl

Download URL kaleidorg_swap_sdk-0.5.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
f8ee14c2a3d676457d85a521a3e600619c1f7427a65adcef1633a261094aea11
BLAKE2b-256 checksum
How to use checksums
34181fd027faef6d0a8be58f71973aaa361ad66e7f9e4ba8828d7275ffd9358b
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

0.7.0

6 release files

0.6.0

6 release files

This release

0.5.0 This release

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