Overview
The Market APIs are the starting point for any swap integration. They give you the information you need before creating a swap order:- List assets — discover all assets supported by the maker (asset IDs, tickers, precision, per-layer trading limits).
- List trading pairs — find which pairs are active and which routes they support.
- Request a quote — get a locked price for a specific amount; the returned
rfq_idis used to create an order.
https://api.signet.kaleidoswap.com/api/v1 (Signet)
List Assets
Endpoint
GET /api/v1/market/assets
Description
List the assets supported by the maker, with optional filters and pagination. This endpoint is safe to poll and cache.Query Parameters
All filters are AND-combined; all are optional.Response Structure
assets: Array of supported assets.ticker: Short name or symbol of the asset (e.g.,USDT).asset_id: The unique identifier of the asset.name: Full name of the asset (e.g.,Tether USD).precision: Decimal precision for the asset.protocol_ids: Map of protocol name to the asset’s identifier on that protocol.media: Additional media or metadata about the asset (optional).issued_supply: Total issued supply of the asset.timestamp: Asset metadata timestamp.endpoints: Array of per-layer trading limits — each entry haslayer,min_amount,max_amount(in smallest units), andis_active.is_active: Boolean indicating if the asset is currently active.added_at: Timestamp when the asset was added.supported_layers: List of layers the asset can settle on (e.g.,["BTC_LN", "BTC_L1"]).
network: Indicates whether the response pertains to the mainnet, signet, or regtest.total: Total count of matching assets (not just the current page).limit/offset: Pagination echo of the request.timestamp: The server-side timestamp when the response was generated.
Example Response
List Trading Pairs
Endpoint
GET /api/v1/market/pairs
Description
Retrieve the list of supported trading pairs for swap operations, with filters and pagination. This endpoint is safe to poll and cache.Query Parameters
All parameters are optional. Single-pair identifiers are mutually exclusive.Response Structure
pairs: Array of supported trading pairs.id: The unique identifier (UUID) of the pair.base/quote: Full asset objects (ticker,asset_id,name,precision,protocol_ids,media,issued_supply,endpoints). Per-layer min/max trading limits live in each asset’sendpointsarray.price: Indicative price for the pair (string, may benull).routes: Supported execution routes, each withfrom_layerandto_layer.is_active: Boolean indicating if the trading pair is currently active.ticker: The pair ticker (e.g.,BTC/USDT).base_asset/base_asset_id: Base asset ticker and unique identifier.quote_asset/quote_asset_id: Quote asset ticker and unique identifier.
total: Total count of matching pairs (not just the current page).limit/offset: Pagination echo of the request.timestamp: The server-side timestamp when the response was generated.
Example Response
Get Pair Routes
Endpoint
POST /api/v1/market/pairs/routes
Description
Return the supported execution routes for a specific trading pair. Exactly one identification method must be provided in the request body:pair_id, from_asset_id + quote_asset_id, pair_ticker, or base_ticker + quote_ticker.
Example Request
Example Response
404 error.
Discover Routes
Endpoint
POST /api/v1/market/routes
Description
Discover direct and multi-hop routes between assets. The response is informational and does not reserve liquidity.Request Body
Example Response
Get Route Reachability Matrix
Endpoint
GET /api/v1/market/routes/matrix
Description
Return a matrix showing which assets can reach each other and the minimum hop count for each combination. Safe to poll and cache.Example Response
Request Quote for a Pair
Endpoint
POST /api/v1/market/quote
Description
Request an RFQ-backed quote for a route between two asset legs. The response includes detailed information about the quote, including prices, fees, and expiration time.Request Structure
The request body contains two nested leg objects — there is nopair_id:
from_asset: Source leg specification.asset_id: Asset identifier (e.g.,BTCor an RGB contract ID).layer: Settlement layer (e.g.,BTC_LN,RGB_LN,BTC_L1,RGB_L1).amount(optional): Amount in the asset’s smallest unit.
to_asset: Destination leg specification — same fields asfrom_asset.
from_asset.amount or to_asset.amount must be provided: set from_asset.amount for a forward quote or to_asset.amount for a reverse quote.
Example Request
Response Structure
rfq_id: A unique identifier for this quote request.from_asset/to_asset: Complete leg specifications, each withasset_id,name,ticker,layer,amount(smallest unit), andprecision.price: Price of 1 whole unit offrom_assetexpressed in the smallest unit ofto_asset.fee: Fee breakdown object:base_fee: Fixed fee component.variable_fee: Amount-dependent fee component.fee_rate: The variable fee rate.final_fee: Total fee (base_fee + variable_fee).fee_asset: The asset the fee is denominated in.fee_asset_precision: Decimal precision of the fee asset.
timestamp: The server-side timestamp when the quote was generated.expires_at: The timestamp when this quote will expire.
Example Response
Additional Notes
- The requested route (
from_asset.layer→to_asset.layer) must be one of the pair’s supportedroutesfrom/api/v1/market/pairs; unsupported routes return a400error. - Amounts should stay within the per-layer
min_amount/max_amountlimits found in each asset’sendpointsarray. - The
expires_atfield indicates when this quote will no longer be valid for initiating a swap. - The fee is already reflected in the calculated leg amount.
- The
rfq_idcan be used in subsequent swap initiation or LSPS1 order requests until it expires.
For details about swap operations, proceed to Swap APIs.