{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/getchord-xyz/json-schema/getchord-xyz-sol-trade-quote-schema.json",
  "title": "SolTradeQuote",
  "description": "One executable quote.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/getchord-xyz-openapi.json#/components/schemas/SolTradeQuote",
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "const": true
    },
    "route": {
      "type": "string",
      "enum": [
        "direct",
        "jupiter",
        "jupiter_meta"
      ],
      "description": "`direct` = Chord's own route (pump pools or Chord's router) · `jupiter` = Jupiter's swap API · `jupiter_meta` = Jupiter's order (RFQ makers, DFlow, OKX)."
    },
    "mint": {
      "type": "string",
      "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      "description": "Solana address, base58, case-sensitive. Never lower-case it."
    },
    "side": {
      "type": "string",
      "enum": [
        "buy",
        "sell"
      ]
    },
    "inAmount": {
      "type": "string",
      "pattern": "^\\d+$",
      "description": "What the wallet puts in: lamports for a buy, the token's smallest unit for a sell."
    },
    "outAmount": {
      "type": "string",
      "pattern": "^\\d+$",
      "description": "What the simulation of `tx` delivered to the wallet: tokens for a buy, lamports for a sell (wSOL counted as SOL), after every fee."
    },
    "minOut": {
      "type": "string",
      "pattern": "^\\d+$",
      "description": "The least the transaction accepts before it fails, from `slippageBps`."
    },
    "slippageBps": {
      "type": "integer",
      "description": ""
    },
    "feeLamports": {
      "type": "string",
      "pattern": "^\\d+$",
      "description": "Chord's fee. 0 today."
    },
    "feeBps": {
      "type": "integer",
      "description": "Chord's fee rate. 0 today."
    },
    "networkFeeLamports": {
      "type": "integer",
      "description": "Base + priority fee the wallet pays; 0 when Jupiter or a market maker pays (`gasless`)."
    },
    "units": {
      "type": "integer",
      "description": "Compute units of the simulation."
    },
    "walletLamportsDelta": {
      "type": "string",
      "pattern": "^-?\\d+$",
      "description": "The wallet's whole SOL change in the simulation, network fee and rent of new accounts included."
    },
    "tx": {
      "type": "string",
      "description": "The unsigned v0 transaction, base64 — exactly what was simulated. Sign it unchanged and POST it to `/sol/trade/send`."
    },
    "txBytes": {
      "type": "integer",
      "description": ""
    },
    "blockhash": {
      "type": "string",
      "description": ""
    },
    "lastValidBlockHeight": {
      "type": "integer",
      "description": "After this block height the transaction can no longer land."
    },
    "simulatedSlot": {
      "type": "integer",
      "description": ""
    },
    "ms": {
      "type": "number",
      "description": ""
    },
    "venue": {
      "type": "string",
      "description": "`direct` only: where it trades (the largest leg when the order is split): `pumpswap`, `pumpfun`, `raydium_v4`, `raydium_cpmm`, `raydium_clmm`, `orca`, `meteora_dlmm`, `meteora_damm_v2`, `meteora_dbc`, `raydium_launchlab`."
    },
    "layout": {
      "type": "string",
      "description": "`direct` on a pump pool: the instruction layout copied."
    },
    "solBased": {
      "type": "boolean",
      "description": "A PumpSwap pool whose base is SOL."
    },
    "pool": {
      "type": "string",
      "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      "description": "Solana address, base58, case-sensitive. Never lower-case it."
    },
    "partial": {
      "type": "boolean",
      "description": "A pump.fun curve had fewer tokens left than the input buys: the quote takes all it has, for at most `inAmount`."
    },
    "hops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "Venue."
          },
          "pool": {
            "type": "string",
            "description": "Pool."
          },
          "percent": {
            "type": "number",
            "description": "Share of the input, %."
          }
        }
      },
      "description": "The legs: Chord's router (one or two pools) or Jupiter's route plan."
    },
    "router": {
      "type": "string",
      "description": "`jupiter_meta`: which router won Jupiter's auction (`metis`, `jupiterz`, `dflow`, `okx`)."
    },
    "gasless": {
      "type": "boolean",
      "description": "`jupiter_meta`: Jupiter or the market maker pays the network fee; the wallet is a second signer."
    },
    "expireAt": {
      "type": "integer",
      "description": "`jupiter_meta` RFQ quotes: Unix seconds the market maker's price lives to. Ask again when under ten seconds are left."
    }
  },
  "required": [
    "ok",
    "route",
    "mint",
    "side",
    "inAmount",
    "outAmount",
    "minOut",
    "tx"
  ]
}