Skip to content

Quotes & pools

List corridors

GET /v1/pools?chainId=8453

Returns the corridors available to your key. chainId is optional — omit it to list every chain your key's environment covers. Requires quotes:read.

json
{
  "data": [
    {
      "chainId": 8453,
      "poolAddress": "0x…",
      "collateralAsset": "0x…",
      "debtAsset": "0x…",
      "displayName": "cNGN → USDT",
      "buyRateRay": "1550000000000000000000000000",
      "sellRateRay": "1548000000000000000000000000",
      "ratesFetchedAt": "2026-07-07T12:00:00.000Z",
      "minPositionSize": "1000000",
      "createdAt": "2026-01-01T00:00:00.000Z"
    }
  ]
}

collateralAsset is the local-currency token you sell; debtAsset is what you receive (usually USDT). Rates are RAY-scaled and may be null when the oracle is stale.

See available liquidity and offers

GET /v1/order-book?chainId=8453&sellToken=0xCNGN&buyToken=0xUSDT

Returns the live, funded offers for one swap direction, best rate first. It also returns aggregate capacity, so you can show available liquidity before asking the user for a swap amount. Requires quotes:read.

json
{
  "data": {
    "chainId": 8453,
    "sellToken": "0x…",
    "buyToken": "0x…",
    "hasLiquidity": true,
    "liveOffers": 2,
    "executableOffers": 2,
    "availableSellAmount": "8004000000",
    "availableBuyAmount": "7870000000",
    "bestRateRay": "990000000000000000000000000",
    "asOf": "2026-07-21T10:00:00.000Z",
    "offers": [
      {
        "id": "offer_…",
        "maker": "0x…",
        "sellAmount": "3001500000",
        "feeAmount": "1500000",
        "buyAmount": "2970000000",
        "rateRay": "990000000000000000000000000",
        "expiresAt": "2026-07-21T11:00:00.000Z"
      }
    ]
  }
}

availableSellAmount is the fee-inclusive amount of sellToken needed to clear the maximum depth one swap can execute. Each offer’s sellAmount includes its feeAmount, so it can be passed directly to /quote or /swaps. availableBuyAmount is the corresponding buyToken proceeds if every listed offer fills. liveOffers counts the full funded book; executableOffers and the offers array are capped to the 100 offers a single swap can execute. All amounts are atomic-unit strings. Offers are checked for expiry, spent nonces, and maker funding before they are returned, but on-chain liquidity can still change between this read and execution.

Get a quote

GET /v1/quote?chainId=8453&sellToken=0xCNGN&buyToken=0xUSDT&sellAmount=1000000000

A live, executable price for selling sellAmount of sellToken (collateral) into buyToken (debt) against the resting order book. Requires quotes:read.

Query paramRequiredNotes
chainIdyesMust match your key's environment
sellTokenyesCollateral asset address
buyTokenyesDebt asset address
sellAmountyesAtomic units, base-10 string
minRatenoMinimum debt-per-collateral rate (RAY). Defaults to 0 (accept any).
json
{
  "data": {
    "chainId": 8453,
    "sellToken": "0x…",
    "buyToken": "0x…",
    "sellAmount": "1000000000",
    "fillableAmount": "1000000000",
    "proceeds": "612000000",
    "effectiveRateRay": "612000000000000000000000000",
    "remainingAmount": "0",
    "fullyFilled": true,
    "ordersMatched": 2,
    "liveOrders": 7,
    "hasLiquidity": true
  }
}
  • fillableAmount — how much of your sell clears at or above minRate.
  • proceeds — the debt asset you'd receive for that fillable part.
  • hasLiquidity: false (liveOrders is 0) means there's no filler market in this direction right now. That's not an error — back off and retry.
  • Partial fills are normal: if fillableAmount < sellAmount, only part clears at your price. Lower minRate or sell less.

A quote is a read. To actually execute, call POST /v1/swaps, which returns the transactions to sign.