Skip to main content

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_id is used to create an order.
All Market API endpoints are public and require no authentication. Base URL: 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 has layer, min_amount, max_amount (in smallest units), and is_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’s endpoints array.
    • price: Indicative price for the pair (string, may be null).
    • routes: Supported execution routes, each with from_layer and to_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

If no routes exist for the requested pair, the endpoint returns a 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 no pair_id:
  • from_asset: Source leg specification.
    • asset_id: Asset identifier (e.g., BTC or 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 as from_asset.
Exactly one of 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 with asset_id, name, ticker, layer, amount (smallest unit), and precision.
  • price: Price of 1 whole unit of from_asset expressed in the smallest unit of to_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.layerto_asset.layer) must be one of the pair’s supported routes from /api/v1/market/pairs; unsupported routes return a 400 error.
  • Amounts should stay within the per-layer min_amount/max_amount limits found in each asset’s endpoints array.
  • The expires_at field 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_id can be used in subsequent swap initiation or LSPS1 order requests until it expires.

For details about swap operations, proceed to Swap APIs.