Skip to main content

Frequently Asked Questions

Whichever matches your stack. Both are standalone implementations that generate their types from the same OpenAPI specifications, so the API shape, the sub-clients, and the error hierarchy are identical across the two. Every example in these docs shows both.Runtime requirements: Node.js 18+ for TypeScript, Python 3.10+ for Python. A Rust core is in progress.
They are the two halves of a swap, and most flows use both.A typical atomic swap quotes and initialises through client.maker, whitelists the swapstring on client.rln, then executes back through client.maker. See How to Swap.
For the atomic swap path, yes. The taker’s node is what holds the keys, whitelists the swapstring, and routes the HTLC. That is precisely why the maker never takes custody — there is no step where it could.You can run the node locally or point the SDK at a remote one you control. See Node Hosting for the deployment options.
No. The SDK is a typed client over two HTTP APIs. Keys live in the RGB Lightning Node you point it at, and signing happens there. Nothing in the SDK can move funds that your node has not authorised.
Regtest and Signet (MutinyNet) are live today; mainnet is coming soon.
  • Regtesthttps://api.regtest.kaleidoswap.com, instant blocks, best for unit tests
  • Signethttps://api.signet.kaleidoswap.com, realistic conditions, best before mainnet
Pass these as baseUrl / base_url; the SDK appends /api/v1 itself. Full list in Available Environments.
Two separate compatibility surfaces:Both need to line up. If a call fails with an unexpected shape rather than an error, a version mismatch is the first thing to check.
The API works in raw integer amounts, not decimals. An asset’s precision decides the conversion, and it differs per asset — BTC and USDT do not share one.Use the helpers rather than doing the arithmetic yourself:
See Utilities for the full set, including asset mapping.
No. WebSocket is for streaming live quotes with automatic reconnection, which matters if you are showing a moving price or reacting to one. A single quote over REST is enough for a one-off swap.See WebSocket for the streaming API.
Not against the maker API. CORS is disabled on most endpoints, so a browser-based app needs its own backend to proxy the calls. Keep the SDK server-side and expose only what your frontend needs.
Every SDK exception extends KaleidoError, so catching that one type covers the whole hierarchy. Each error exposes isRetryable() / is_retryable(), which tells you whether retrying is safe — do not retry blindly, since some failures will never succeed on a second attempt.See Error Handling for the full hierarchy and the retry-with-backoff pattern, and Best Practices for how it fits a production client.

Get Help

Check the Troubleshooting for errors rather than questions. For anything else, report a problem through your preferred channel from the options below, including:
  1. SDK version (getVersion() / get_version())
  2. Language and runtime version (Node.js / Python)
  3. Error message and stack trace
  4. Minimal code to reproduce
  5. Environment (Regtest / Signet / Mainnet)

Telegram Community

Ask the community.

GitHub Issues

Report a bug on the relevant repository.

Email Support

Direct support for urgent issues.