LithosDocs
ProtocolPayoutsTokenStatsDocs
Start mining
Documentation home
Protocol
  • Lithos Protocol
  • LFSM
    • Rollups
    • NISPs
    • Emissions
    • Mining on Lithos
    • Candidate building
    • Ergo Voting
  • LithosDex
    • Choosing a pool
    • Trading with orders
    • Providing liquidity
    • Creating a pool
    • Difficulty forwards
Run Lithos
  • Startup guide
    • Setting up an Ergo node
  • Configuration
    • Node connection and security
    • Stratum and difficulty
    • Block packages
    • Batching and orders
    • Collateral and emission
    • Wallet and consolidation
    • Statistics and web panels
    • Synchronization and storage
    • Tasks and dispatchers
    • Failure modes
    • Reporting issues
    • Renting hashrate into Lithos
    • Checking your wallet
Client API
  • Overview
    • getLithos client information
    • getList UTXO ids for blocks
    • getUTXO ids by block height
    • getBlock info by UTXO id
    • postBlock info for multiple UTXO ids
    • getGet a block's miner set
    • getList all pool blocks
    • getGet Lithos payouts
    • getStatistics overview
    • getMining and payment totals
    • getMining statistics by hour or day
    • getEstimate Lithos hashrate
    • getNetwork difficulty by epoch
    • getThis client's own hashrate
    • getThis client's hashrate over time
    • getThis client's payouts and claims
    • getCollateral inventory
    • getThis wallet's lending earnings
    • getLocal mining activity
    • getCollateral market snapshot
    • getList queue boxes
    • getList the active set
    • getPermit price history
    • getYour lending status
    • postQuote joining the queue
    • postJoin the collateral queue
    • getLithosDex pool state
    • getEvery LithosDex pool
    • getOne LithosDex pool and its vault
    • getList your outstanding orders on any pool
    • postQuote a direct swap on any pool
    • postSwap directly on any pool
    • postQuote a direct deposit on any pool
    • postDeposit directly on any pool
    • postQuote a direct redemption on any pool
    • postRedeem a provision directly on any pool
    • getList your provisions on any pool
    • postClaim a provision's fees on any pool
    • postCheck a flush on any pool
    • postFlush any pool
    • getA verified pool's price history
    • getA verified pool's fee history
    • getA verified pool's recent activity
    • getA provision's fee history on a verified pool
    • postQuote a new LithosDex pool
    • postCreate a LithosDex pool
    • postQuote a swap order on any pool
    • postPlace a swap order on any pool
    • postQuote a deposit order on any pool
    • postPlace a deposit order on any pool
    • postQuote a redeem order on any pool
    • postPlace a redeem order on any pool
    • getLithosDex fee vault state
    • getList your outstanding orders
    • postQuote a swap order
    • postPlace a swap order
    • postQuote a deposit order
    • postPlace a deposit order
    • postQuote a redeem order
    • postPlace a redeem order
    • postCancel an order
    • postQuote a swap
    • postQuote a swap by desired output
    • postExecute a swap
    • postQuote a liquidity deposit
    • postDeposit liquidity
    • postQuote a liquidity redemption
    • postRedeem liquidity
    • getList liquidity provisions
    • postLook up provision NFTs
    • postClaim settled fees for a provision
    • postQuote a provision resize
    • postResize a provision
    • postCheck a pending fee flush
    • postFlush pending fees to the vault
    • getPool-wide fee history
    • getPool price history
    • getRecent pool activity
    • getFee history for one provision
    • getDifficulty accumulator and the next epoch's difficulty
    • getList open offers
    • postCreate an offer
    • postQuote an offer
    • postQuote filling an offer
    • postFill an offer
    • postQuote cancelling an offer
    • postCancel an offer
    • getThe whole market
    • getYour settled positions and closed offers
    • getList your positions and offers
    • postQuote settling a position
    • postSettle a position
    • getWallet balances
    • getYour block rewards
    • postClaim unlocked block rewards
    • getVerified tokens
    • getGet Stratum information
    • getGet candidate settings
    • getGet difficulty commitment
    • postCommit a difficulty
    • getGet best NISP at height
Lithos

A decentralized mining pool protocol on Ergo. Miners build their own blocks; contracts pay them for proven work.

Live on Ergo mainnet
Protocol
  • How Lithos works
  • Mining on Lithos
  • NISPs
  • Emissions
  • LFSM contracts
Run Lithos
  • Startup guide
  • Configuration
  • LithosDex
  • Difficulty forwards
  • Client API
  • Failure modes
Network
  • Live stats
  • Public stats API
  • Ergo Platform↗
  • SOAT Miner↗
Community
  • Telegram↗
  • X / Twitter↗
  • GitHub↗
Lithos
© 2026 Lithos Protocol. The Lithos client, its contracts and Lithos Launcher are open source under CC0.λίθος — stone
Docs/Client API/Lithos Dex

Create a LithosDex pool

post/dex/pools/createapi_key

Sends four transactions in turn: the pool NFT mint, the vault NFT mint, the mint of the NFT that owns the provision, and the genesis, which creates the pool, its vault and this wallet's provision. Every box one transaction passes to the next is held at the wallet before the first send, so nothing else spends it. The chain stops at the first transaction the node does not accept, and reports those after it as unsent. Besides the locked share, a token/token pool's boxes hold 6.3 ERG and 2.3 ERG for storage rent and its vault one unit of each token, and an ERG/token vault holds 0.1 ERG, none of it recoverable. Needs acknowledgeLocked. The pool is listed once its genesis is in a block.

Request body

LDPoolCreateExecuteRequest · application/json
  • tokenXstringrequired

    ERG for an ERG/token pool, or a token/token pool's first token id

  • tokenYstringrequired

    The pool's other token id

  • amountXstringrequired

    The pool's reserve of X at genesis; nanoERG for ERG, at least 0.01 ERG

  • amountYstringrequired
  • ▶
    feeParamsLDFeeParams

    Fee numerators over feeDenom. dexFeeNum stays in the pool; ergFeeNum / tokenFeeNum are set aside for liquidity providers.

    • dexFeeNuminteger · int64required
    • ergFeeNuminteger · int64required
    • tokenFeeNuminteger · int64required
    • feeDenominteger · int64required

      Denominator of every numerator above

  • acknowledgeLockedbooleanrequired

    Must be true: the pool's own boxes and its locked share can never be taken back

Responses

200The four sends, as far as they wentLDPoolCreated▶
  • outcomestringrequired

    accepted when all four were, else the first step's that was not

    one ofacceptedrejecteduncertainunsent
  • kindstringrequired
    one ofn2tt2t
  • poolNFTstringrequired
  • vaultNFTstringrequired
  • provTokenstringrequired
  • ownerNFTstringrequired

    The NFT in this wallet that owns the creator's provision

  • provisionBoxIdstringrequired

    The creator's provision, which genesis creates

  • ▶
    stepsLDPoolCreateStep[]required
    • stepstringrequired
      one ofPOOL_NFTVAULT_NFTOWNER_NFTGENESIS
    • txIdstringrequired
    • outcomestringrequired

      unsent: an earlier transaction was not accepted

      one ofacceptedrejecteduncertainunsent
    • reasonstring

      The node's refusal, or why the transaction was not sent

400The request is malformed, names ERG as tokenY or one token twice, offers an ERG reserve under 0.01 ERG, gives fees out of bounds, or lacks acknowledgeLocked.ApiError▶
  • errorintegerrequired

    Error code

  • reasonstringrequired

    Error message explaining the reason of the error

  • detailstringrequirednullable

    Detailed error description

403Missing or wrong api_keyApiError▶
  • errorintegerrequired

    Error code

  • reasonstringrequired

    Error message explaining the reason of the error

  • detailstringrequirednullable

    Detailed error description

409The wallet's boxes moved while the chain was built. Resend.LDStateChangedResponse▶
  • errorintegerrequired
  • reasonstringrequired
  • detailstringrequired

    What moved, and what it moved to

  • poolBoxIdstring

    Current pool box id

  • vaultBoxIdstring

    Current vault box id

  • provisionBoxIdstring

    Current provision box id

422The wallet cannot cover the reserves, boxes and fees.ApiError▶
  • errorintegerrequired

    Error code

  • reasonstringrequired

    Error message explaining the reason of the error

  • detailstringrequirednullable

    Detailed error description

503The node or wallet did not answer. Nothing was sent. Retry.ApiError▶
  • errorintegerrequired

    Error code

  • reasonstringrequired

    Error message explaining the reason of the error

  • detailstringrequirednullable

    Detailed error description

defaultErrorApiError▶
  • errorintegerrequired

    Error code

  • reasonstringrequired

    Error message explaining the reason of the error

  • detailstringrequirednullable

    Detailed error description

← PreviousQuote a new LithosDex poolNext →Quote a swap order on any pool
Request
curl -X POST "http://localhost:9000/dex/pools/create" \
  -H "api_key: $LITHOS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "tokenX": "string", "tokenY": "string", "amountX": "string", "amountY": "string", "feeParams": { "dexFeeNum": 9985, "ergFeeNum": 15, "tokenFeeNum": 15, "feeDenom": 10000 }, "acknowledgeLocked": true }'
Response
{
  "outcome": "accepted",
  "kind": "n2t",
  "poolNFT": "string",
  "vaultNFT": "string",
  "provToken": "string",
  "ownerNFT": "string",
  "provisionBoxId": "string",
  "steps": [
    {
      "step": "POOL_NFT",
      "txId": "string",
      "outcome": "accepted",
      "reason": "string"
    }
  ]
}