# Atomiq Docs > Atomiq is a fully trustless cross-chain DEX enabling swaps between Bitcoin/Lightning and smart chains (Solana, Starknet, EVM) using a Bitcoin light client, submarine swaps (HTLCs), and a Request-for-Quote Liquidity Provider network. Two integration surfaces exist: the TypeScript SDK (preferred for JavaScript/TypeScript environments) and a public or self-hosted REST API (use when the SDK cannot run — non-JS runtimes or environments without local persistence). - [Atomiq Docs](https://docs.atomiq.exchange/index.md) ## overview ### actors Atomiq is designed as a permissionless system where multiple independent parties interact to enable trustless cross-chain swaps. The main participants are the User, Liquidity Provider (LP), and Watchtower (also referred to as a relayer). Each plays a distinct role across both Bitcoin L1 and Lightning swaps, while all operations remain non-custodial and verifiable through smart contracts, cryptography, and Bitcoin consensus. - [Actors in the Atomiq Protocol](https://docs.atomiq.exchange/overview/actors.md): Atomiq is designed as a permissionless system where multiple independent parties interact to enable trustless cross-chain swaps. The main participants are the User, Liquidity Provider (LP), and Watchtower (also referred to as a relayer). Each plays a distinct role across both Bitcoin L1 and Lightning swaps, while all operations remain non-custodial and verifiable through smart contracts, cryptography, and Bitcoin consensus. ### contracts Atomiq's smart contracts are deployed across multiple chains, with two distinct architectural approaches depending on the target platform. - [Contracts](https://docs.atomiq.exchange/overview/contracts.md): Atomiq's smart contracts are deployed across multiple chains, with two distinct architectural approaches depending on the target platform. - [Contract Addresses](https://docs.atomiq.exchange/overview/contracts/contract-addresses.md): Summary of all contract addresses used by atomiq across different chains. The contracts are classified based on which Bitcoin network they support: - [EVM & Starknet Contracts](https://docs.atomiq.exchange/overview/contracts/evm-starknet.md): The EVM and Starknet contract deployments share a modular architecture — the protocol logic is decomposed into small, composable contract modules that can be combined and upgraded independently. The same architectural design is implemented on both platforms, with each module fulfilling an identical role. - [Solana Contracts](https://docs.atomiq.exchange/overview/contracts/solana.md): The Solana deployment uses a monolithic architecture, where the protocol is implemented as two standalone Anchor programs — a swap program and a BTC relay program. Unlike the modular EVM & Starknet contracts, all swap logic (HTLC, PrTLC, and transaction verification) lives within a single swap program rather than being split into separate handler contracts. The UTXO-controlled vault primitive is not implemented on Solana, meaning Solana can only process legacy swaps in the Bitcoin → Solana direction. ### core-primitives These pages cover the low-level mechanisms that make Atomiq's trustless swap protocol possible. They define how Bitcoin state is verified on-chain, how funds are escrowed across chains, and how settlement can be enforced without relying on a trusted intermediary. - [Core Primitives](https://docs.atomiq.exchange/overview/core-primitives.md): These pages cover the low-level mechanisms that make Atomiq's trustless swap protocol possible. They define how Bitcoin state is verified on-chain, how funds are escrowed across chains, and how settlement can be enforced without relying on a trusted intermediary. - [Bitcoin light client (on-chain)](https://docs.atomiq.exchange/overview/core-primitives/bitcoin-light-client.md): The Bitcoin light client (also called bitcoin relay) is a smart contract deployed on smart chains (Solana, Starknet, EVM, etc.) that verifies and stores Bitcoin block headers using the proof-of-work consensus algorithm. It acts as a permissionless & trustless oracle of Bitcoin's state — anyone can submit block headers and their validity is verified entirely on-chain. No trusted third party, signer set, or attestation is required. - [HTLC (hash-time locked contract)](https://docs.atomiq.exchange/overview/core-primitives/htlc.md): An HTLC is an escrow smart contract between two parties that uses a cryptographic hash to link transactions across independent blockchains. The swap protocol uses a secret and its hash (where the hash is calculated sha256(secret)) to create an all-or-nothing outcome: either both parties successfully exchange assets, or both safely refund through time-bound recovery paths. - [PrTLC (proof-time locked contract)](https://docs.atomiq.exchange/overview/core-primitives/prtlc.md): A PrTLC is an escrow smart contract between two parties that uses a proof of a Bitcoin transaction—provided through the on-chain Bitcoin light client—to enable conditional release of funds on the smart chain (Solana, Starknet, EVM). The protocol replaces the hash-based condition of traditional HTLCs with a proof-lock tied to a Bitcoin transaction confirming on the Bitcoin blockchain, creating an all-or-nothing outcome: either the counterparty sends the required Bitcoin transaction and proves it to claim the escrowed assets, or the funds are refunded after a timeout. - [UTXO-controlled vault](https://docs.atomiq.exchange/overview/core-primitives/utxo-controlled-vault.md): A UTXO-controlled vault is a smart contract on the smart chain that holds LP liquidity and authorizes withdrawals solely based on verified Bitcoin transactions, using the on-chain Bitcoin light client to confirm UTXO states and prevent front-running. By importing Bitcoin's deterministic UTXO ordering to the smart chain, the vault ensures a tamper-proof withdrawal queue, where each update spends the previous vault UTXO and creates a new one, chaining transactions in a linear, verifiable sequence enforced by Bitcoin consensus. ### protocol-overview Atomiq facilitates trustless cross-chain swaps through a combination of on-chain smart contract logic and off-chain coordination, ensuring atomic execution without intermediaries. Users initiate swaps by requesting quotes from a decentralized network of Liquidity Providers (LPs) via an off-chain request-for-quote (RFQ) system. This allows competitive pricing and zero slippage while keeping the actual settlement fully on-chain and trustless. - [Protocol Overview](https://docs.atomiq.exchange/overview/protocol-overview.md): Atomiq facilitates trustless cross-chain swaps through a combination of on-chain smart contract logic and off-chain coordination, ensuring atomic execution without intermediaries. Users initiate swaps by requesting quotes from a decentralized network of Liquidity Providers (LPs) via an off-chain request-for-quote (RFQ) system. This allows competitive pricing and zero slippage while keeping the actual settlement fully on-chain and trustless. ### swaps Swaps between Bitcoin and smart chains are inherently asymmetric — Bitcoin cannot execute smart contracts, so each direction requires a different approach. Smart chain → Bitcoin swaps use PrTLCs where the LP proves it sent BTC, while Bitcoin → Smart chain swaps use UTXO-controlled vaults where a single cooperatively-signed Bitcoin transaction atomically settles both sides. Lightning swaps follow a symmetric HTLC pattern, linking Lightning payment secrets to smart chain contracts. - [Swaps](https://docs.atomiq.exchange/overview/swaps.md): Swaps between Bitcoin and smart chains are inherently asymmetric — Bitcoin cannot execute smart contracts, so each direction requires a different approach. Smart chain → Bitcoin swaps use PrTLCs where the LP proves it sent BTC, while Bitcoin → Smart chain swaps use UTXO-controlled vaults where a single cooperatively-signed Bitcoin transaction atomically settles both sides. Lightning swaps follow a symmetric HTLC pattern, linking Lightning payment secrets to smart chain contracts. - [Bitcoin → Smart chains](https://docs.atomiq.exchange/overview/swaps/bitcoin-sc-new.md): This is the current protocol for swapping on-chain Bitcoin to smart chain tokens. It uses the UTXO-controlled vault primitive, where the LP deposits liquidity into a vault on the smart chain whose withdrawals are controlled by Bitcoin transactions (verified through the Bitcoin light client). The user and LP cooperatively sign a single Bitcoin transaction that atomically sends BTC to the LP and authorizes the smart chain payout to the user. Unlike the legacy PrTLC-based approach, users don't need any smart chain balance upfront, the LP doesn't lock funds per-swap, and watchtowers are a UX convenience rather than a security requirement. - [Bitcoin → Solana (legacy)](https://docs.atomiq.exchange/overview/swaps/bitcoind-sc-legacy.md): This is the legacy protocol only used on Solana, superseded by the UTXO-controlled vault based Bitcoin → Smart chain swap on all the other chains which eliminates the cold-start problem and watchtower dependency. - [Lightning → Solana (legacy)](https://docs.atomiq.exchange/overview/swaps/lightning-sc-legacy.md): This is the legacy protocol only used on Solana, superseded by the new Lightning → Smart chain swap on all the other chains, which eliminates the need for users to hold smart chain tokens upfront. - [Lightning → Smart chain](https://docs.atomiq.exchange/overview/swaps/lightning-sc-new.md): This is the current protocol for receiving smart chain tokens via a Lightning payment. It uses an HTLC created by the LP on the smart chain, solving the "cold start" problem of the legacy approach — users don't need any smart chain balance to receive funds. After the LP locks the HTLC, the user broadcasts the payment secret over Nostr, and incentivized watchtowers claim the funds on the user's behalf, earning a small fee. The user can always self-claim as a fallback. - [Smart chain → Bitcoin](https://docs.atomiq.exchange/overview/swaps/sc-bitcoin.md): This swap uses a PrTLC (proof-time locked contract) to enable trustless swaps from smart chain tokens to on-chain Bitcoin. The user locks tokens in a PrTLC on the smart chain, and the LP claims them by proving — through the Bitcoin light client — that it sent the agreed BTC amount to the recipient's Bitcoin address. If the LP fails to deliver, the user can unilaterally refund after the timelock expires. A cooperative refund path also allows the LP to release the user's funds immediately if the payment cannot be completed, without waiting for the timeout. - [Smart chain → Lightning](https://docs.atomiq.exchange/overview/swaps/sc-lightning.md): This swap enables paying a Lightning Network invoice using smart chain (Solana, Starknet, EVM) tokens. It works by linking a Lightning payment to an on-chain HTLC escrow: the user locks tokens in an HTLC on the smart chain using the Lightning invoice's payment hash, and the LP attempts to route and pay the Lightning payment. When the recipient settles the invoice they reveal the hash preimage (secret), which the LP then uses to claim the funds from the HTLC escrow. If the payment fails, the LP can cooperatively refund the user immediately, or the user can self-refund after the timelock expires. ## guides ### lps LP nodes provide liquidity for the swaps, handle cross-chain swaps, determine prices & earn swap fees. Reputation is also tracked for every LP and increases with every successfully processed swap and decreases for failed swaps (ones which resulted in the client having to refund after a timeout). - [Liquidity provider nodes (LPs)](https://docs.atomiq.exchange/guides/lps.md): LP nodes provide liquidity for the swaps, handle cross-chain swaps, determine prices & earn swap fees. Reputation is also tracked for every LP and increases with every successfully processed swap and decreases for failed swaps (ones which resulted in the client having to refund after a timeout). - [Localhost Tunnel (Pinggy)](https://docs.atomiq.exchange/guides/lps/pinggy-tunnel.md): You only need to do this in case your machine running the LP node software doesn't have a static & public IP address accessible from the public internet. This is usually the case if you want to run the LP node at your home, which then runs in a local network and is not accessible from the outside world because of NAT. - [Running LP node](https://docs.atomiq.exchange/guides/lps/running-lp-node.md): LP node runs in docker containers & it is fully separated from your other programs, there is also no need to install anything other than docker on the main system. ## sdk-guide The Atomiq SDK is a TypeScript multichain client for building trustless swaps between smart chains and Bitcoin, both on-chain and over Lightning. This page is the entry point for the SDK docs and helps you choose the right path through the documentation, whether you are setting up the SDK for the first time, implementing a specific swap family, building the surrounding quote UI, or hardening the integration for production. - [SDK Guide](https://docs.atomiq.exchange/sdk-guide.md): The Atomiq SDK is a TypeScript multichain client for building trustless swaps between smart chains and Bitcoin, both on-chain and over Lightning. This page is the entry point for the SDK docs and helps you choose the right path through the documentation, whether you are setting up the SDK for the first time, implementing a specific swap family, building the surrounding quote UI, or hardening the integration for production. ### advanced This section is for integrations that go beyond the default SDK flow. It focuses on production concerns around transaction control, runtime behavior, real-time state, and persistence. - [Advanced](https://docs.atomiq.exchange/sdk-guide/advanced.md): This section is for integrations that go beyond the default SDK flow. It focuses on production concerns around transaction control, runtime behavior, real-time state, and persistence. - [Configuration](https://docs.atomiq.exchange/sdk-guide/advanced/configuration.md): Customize the swapper instance with advanced options. - [Events](https://docs.atomiq.exchange/sdk-guide/advanced/events.md): The SDK emits events on both individual swaps and the top-level swapper. Use them for real-time UI state, pending swap tracking, analytics, LP monitoring, and route-limit refreshes. - [Manual Transactions](https://docs.atomiq.exchange/sdk-guide/advanced/manual-transactions.md): Use the txs*() methods when your app needs to sign and broadcast smart-chain transactions outside the SDK's built-in signer flow. This is useful for manual signing flows (e.g. hardware wallets or custom custody solutions) or apps where transaction approval is handled by another application layer. - [Storage](https://docs.atomiq.exchange/sdk-guide/advanced/storage.md): The SDK persists initiated swaps and a small amount of chain-specific helper data. In browser environments this works out of the box. In Node.js or custom environments you need to provide storage backends explicitly. ### quick-start This section is the shortest path from an empty project to a working swap. The guides here help you pick the right runtime, initialize the SDK, connect wallets or signers, request a quote, and execute the route. - [Quick Start](https://docs.atomiq.exchange/sdk-guide/quick-start.md): This section is the shortest path from an empty project to a working swap. The guides here help you pick the right runtime, initialize the SDK, connect wallets or signers, request a quote, and execute the route. - [Creating Quotes](https://docs.atomiq.exchange/sdk-guide/quick-start/creating-quotes.md): Every swap starts with a quote. Call swapper.swap() to create one — this contacts LPs, finds the best rate, and returns a swap object you can inspect before executing the swap. - [Executing Swaps](https://docs.atomiq.exchange/sdk-guide/quick-start/executing-swaps.md): After you create and inspect a quote with swapper.swap(...), the usual next step is swap.execute(...). - [Quick Start – Browser](https://docs.atomiq.exchange/sdk-guide/quick-start/quick-start-browser.md): This guide covers installing the Atomiq SDK in a browser and its chain-specific connectors and walks you through setting up and initializing the Atomiq SDK. - [Quick Start – Node.js](https://docs.atomiq.exchange/sdk-guide/quick-start/quick-start-nodejs.md): This guide covers installing the Atomiq SDK in Node.js and its chain-specific connectors and walks you through setting up and initializing the Atomiq SDK. ### swap-management This section covers what happens after a swap has already been created and persisted. These pages are for retrieving past swaps, recovering them after app restarts, and handling the cases where a swap needs follow-up outside the normal high-level flow. - [Swap Management](https://docs.atomiq.exchange/sdk-guide/swap-management.md): This section covers what happens after a swap has already been created and persisted. These pages are for retrieving past swaps, recovering them after app restarts, and handling the cases where a swap needs follow-up outside the normal high-level flow. - [Claiming](https://docs.atomiq.exchange/sdk-guide/swap-management/claiming.md): For swaps in the Bitcoin (on-chain or Lightning) → Smart Chain direction, the SDK normally handles claiming automatically via watchtower services. - [Historical Swaps](https://docs.atomiq.exchange/sdk-guide/swap-management/historical-swaps.md): The SDK persists all swaps locally, allowing you to retrieve them later by ID. - [Refunds](https://docs.atomiq.exchange/sdk-guide/swap-management/refunds.md): When a swap in the Smart Chain → Bitcoin direction fails, you can refund your tokens back to your wallet, this can happen when: ### swaps This section helps you choose the guide for the exact swap your app is executing. Each page covers one swap family in detail, including the protocol behind it, the required wallets or signers, the manual execution path, and the recovery actions that matter when the automatic flow does not fully finish. - [Swap Guides](https://docs.atomiq.exchange/sdk-guide/swaps.md): This section helps you choose the guide for the exact swap your app is executing. Each page covers one swap family in detail, including the protocol behind it, the required wallets or signers, the manual execution path, and the recovery actions that matter when the automatic flow does not fully finish. - [Bitcoin → Smart Chain](https://docs.atomiq.exchange/sdk-guide/swaps/btc-to-smart-chain.md): Swap Bitcoin L1 (on-chain) to Starknet or EVM tokens. These swaps are based on the UTXO-controlled vault primitive and verified through the on-chain Bitcoin light client. - [Lightning → Smart Chain](https://docs.atomiq.exchange/sdk-guide/swaps/lightning-to-smart-chain.md): Swap Bitcoin Lightning to Starknet or EVM tokens. These swaps are based on an LP-initiated HTLC on the destination chain. After the LP receives the Lightning payment, it creates the HTLC and the user broadcasts the payment secret over Nostr so watchtowers can claim on the user's behalf. The user can always self-claim as a fallback. - [Smart Chain → BTC/Lightning](https://docs.atomiq.exchange/sdk-guide/swaps/smart-chain-to-btc.md): Swap smart chain tokens (Solana, Starknet & EVM tokens) to Bitcoin L1 (on-chain) or Lightning L2. These swaps are based on the HTLC (for lightning) & PrTLC (for on-chain) primitives. - [Bitcoin → Solana](https://docs.atomiq.exchange/sdk-guide/swaps/solana/btc-to-solana.md): Swap Bitcoin L1 (on-chain) to Solana tokens. Solana still uses the legacy PrTLC based Bitcoin → smart chain flow, verified through the on-chain Bitcoin light client. Unlike the newer UTXO-controlled vault protocol used on Starknet and EVM, the user must first initialize a destination-side swap escrow on Solana and lock a SOL deposit before sending BTC. - [Lightning → Solana](https://docs.atomiq.exchange/sdk-guide/swaps/solana/lightning-to-solana.md): Swap Bitcoin Lightning to Solana tokens. Solana still uses the legacy HTLC based Lightning → smart chain flow. The user pays a Lightning invoice first, then manually initializes and claims the destination-side HTLC on Solana, revealing the secret that lets the LP settle the Lightning payment. ### utilities The Utilities section is for the helper APIs you use while assembling a swap form or route selection flow. Rather than walking through a single swap end to end, these pages focus on the smaller decisions that happen around it: parsing user input, choosing valid token pairs, understanding the route, checking limits, and estimating spendable balance. In UI terms, this includes parsing Bitcoin addresses, BOLT11 invoices, LNURLs, Lightning addresses, and smart-chain addresses, building route-aware token selectors, and adapting the form based on the selected swap protocol. - [Utilities](https://docs.atomiq.exchange/sdk-guide/utilities.md): The Utilities section is for the helper APIs you use while assembling a swap form or route selection flow. Rather than walking through a single swap end to end, these pages focus on the smaller decisions that happen around it: parsing user input, choosing valid token pairs, understanding the route, checking limits, and estimating spendable balance. In UI terms, this includes parsing Bitcoin addresses, BOLT11 invoices, LNURLs, Lightning addresses, and smart-chain addresses, building route-aware token selectors, and adapting the form based on the selected swap protocol. - [Address Parser](https://docs.atomiq.exchange/sdk-guide/utilities/address-parser.md): swapper.Utils.parseAddress() & swapper.Utils.parseAddressSync() are the SDK's unified parsers for user-entered destination and source fields. It is useful anywhere you accept free-form input before calling swapper.swap(...), because the same field may contain a Bitcoin address, a BOLT11 invoice, an LNURL, a Lightning address, or a smart chain address. - [Supported Tokens](https://docs.atomiq.exchange/sdk-guide/utilities/supported-tokens.md): The SDK exposes route discovery helpers on the swapper instance so you can build token selectors, validate route availability before quoting, and resolve stored token identifiers back into typed token objects. - [Swap Limits](https://docs.atomiq.exchange/sdk-guide/utilities/swap-limits.md): swapper.getSwapLimits() returns the currently known minimum and maximum bounds for a given token pair. This is useful for amount validation and min/max hints in quote forms. - [Swap Types](https://docs.atomiq.exchange/sdk-guide/utilities/swap-types.md): swapper.getSwapType() is the SDK's protocol classifier for a token pair. Given a source Token and destination Token, it tells you which swap protocol the SDK will use. This is useful when you want to branch UI, show capability flags such as gas drop support, or understand which swap flow a later swapper.swap(...) quote will follow. - [Wallet Balance](https://docs.atomiq.exchange/sdk-guide/utilities/wallet-balance.md): swapper.Utils exposes fee-aware balance helpers for both smart chain wallets and Bitcoin wallets. ## rest-api-guide The Atomiq REST API is an HTTP interface for the Atomiq cross-chain DEX, covering trustless swaps between Bitcoin / Lightning and smart chains (Starknet, Solana, Botanix, Citrea, Alpen, Goat). - [REST API Guide](https://docs.atomiq.exchange/rest-api-guide.md): The Atomiq REST API is an HTTP interface for the Atomiq cross-chain DEX, covering trustless swaps between Bitcoin / Lightning and smart chains (Starknet, Solana, Botanix, Citrea, Alpen, Goat). ### bitcoin-and-lightning Most of the API looks the same across all supported chains. Bitcoin on-chain and Lightning are the exceptions — PSBTs, BOLT11 invoices, LNURL, and Lightning preimages are Bitcoin-world concepts the smart-chain side doesn't share. This page groups everything direction-specific in one place. - [Bitcoin & Lightning](https://docs.atomiq.exchange/rest-api-guide/bitcoin-and-lightning.md): Most of the API looks the same across all supported chains. Bitcoin on-chain and Lightning are the exceptions — PSBTs, BOLT11 invoices, LNURL, and Lightning preimages are Bitcoin-world concepts the smart-chain side doesn't share. This page groups everything direction-specific in one place. ### creating-and-executing This page covers the core swap lifecycle that every direction follows: create → poll → sign → submit → repeat until finished. Bitcoin- and Lightning-specific details (PSBT building, LNURL, preimage reveal) are split into Bitcoin & Lightning Specifics. - [Creating & Executing a Swap](https://docs.atomiq.exchange/rest-api-guide/creating-and-executing.md): This page covers the core swap lifecycle that every direction follows: create → poll → sign → submit → repeat until finished. Bitcoin- and Lightning-specific details (PSBT building, LNURL, preimage reveal) are split into Bitcoin & Lightning Specifics. ### listing-swaps The API keeps a persistent record of every created swap, except the expired non-executed swaps (which are purged from the database). These endpoints allow you to get either the subset of swaps which are currently pending/ongoing or a list of all swaps executed by a given wallet address. This is useful for the "Pending swaps" screen, the post-app-restart recovery flow and for simply showing the history of all the swaps the given user has completed. - [Listing Swaps](https://docs.atomiq.exchange/rest-api-guide/listing-swaps.md): The API keeps a persistent record of every created swap, except the expired non-executed swaps (which are purged from the database). These endpoints allow you to get either the subset of swaps which are currently pending/ongoing or a list of all swaps executed by a given wallet address. This is useful for the "Pending swaps" screen, the post-app-restart recovery flow and for simply showing the history of all the swaps the given user has completed. ### quoting These endpoints let you build a complete swap form with dynamic token pickers, "Send Max" button, amount limit validation and address parsing. You usually use them before creating the swap, to constrain the tokens and amounts the user is allowed to swap. For the bare-minimum create and execute flow, see Creating & Executing a Swap. - [Quoting Swaps](https://docs.atomiq.exchange/rest-api-guide/quoting.md): These endpoints let you build a complete swap form with dynamic token pickers, "Send Max" button, amount limit validation and address parsing. You usually use them before creating the swap, to constrain the tokens and amounts the user is allowed to swap. For the bare-minimum create and execute flow, see Creating & Executing a Swap. ### run-locally Most integrators will talk to the public Atomiq REST API. This section is for teams that need to host the API themselves — to keep quote traffic on their own infrastructure, run against testnets, control rate limits centrally, or combine it with a custom auth layer. - [Run REST API Locally](https://docs.atomiq.exchange/rest-api-guide/run-locally.md): Most integrators will talk to the public Atomiq REST API. This section is for teams that need to host the API themselves — to keep quote traffic on their own infrastructure, run against testnets, control rate limits centrally, or combine it with a custom auth layer. - [Configuration](https://docs.atomiq.exchange/rest-api-guide/run-locally/configuration.md): The service reads its entire runtime config from a single YAML file. The path is selected by the CONFIG_PATH environment variable; the bundled docker-compose.yml sets it to /src/config/config.yaml, which corresponds to ./config/config.yaml on the host. ## Optional - [Atomiq SDK on npm](https://www.npmjs.com/package/@atomiqlabs/sdk): TypeScript SDK package for integrating Atomiq swaps. - [Atomiq SDK code examples](https://github.com/atomiqlabs/atomiq-sdk-demo): TypeScript SDK integration examples. - [Atomiq REST API — OpenAPI 3.1 spec (JSON)](https://docs.atomiq.exchange/rest-api-reference/openapi.json): Machine-readable OpenAPI specification for the Atomiq REST API. Use this as the source of truth for endpoint shapes, parameters, and error responses when generating client code. - [Atomiq REST API code examples](https://github.com/atomiqlabs/atomiq-api-docker/tree/main/scripts): REST API integration examples. - [Atomiq GitHub organization](https://github.com/atomiqlabs): All Atomiq protocol, SDK, and contract repositories.