Pools, quotes, liquidity
Swap / AMM
DRC-20 ↔ DOGE pools and bonding-curve launches on amm.dogesoft.io. Swap and liquidity are paused for now; bonding-curve launches are live.
Swap is an automated market maker for DRC-20 ↔ DOGE, plus a bonding-curve launchpad for brand-new coins.
Endpoints below are relative to https://amm.dogesoft.io/api.
Swap and liquidity are paused. Swapping, adding and removing liquidity and claiming fees are on hold for now, so don't build new integrations on them yet. Bonding-curve launches (below) are unaffected. This page will be updated when Swap returns.
Fee model
Every swap pays a 2% fee in DOGE total:
1% to liquidity providers + 1% platform
(pool JSON fee: "0.01" is the LP share only).
Fees are always realized in DOGE — not “2% of whatever asset you put in.”
For a DOGE → DRC-20 swap, the fee is taken out of the DOGE going in, before it
hits the pool's reserve calculation; for a DRC-20 → DOGE swap, it's taken out of the gross DOGE coming
out. Anyone can supply liquidity to a pool and earn a pro-rata share of the LP 1%. Platform share is swept separately.
Quotes & pools
| Endpoint | Description |
|---|---|
GET/POST /swap/quote | Price a swap, including the full 2% DOGE fee. Fields: tokenIn, tokenOut, amountIn (query string on GET, JSON on POST). |
GET /pools | List every active pool. |
GET /pools/:tokenA/:tokenB | Reserves and depth for one specific pool. |
Other public reads
Same host, no API key. POST /bonding/launch is the exception: it requires a Doge Soft API key.
| Endpoint | Description |
|---|---|
GET /tokens | Token catalog. |
GET /tokens/:tick | One catalog row. Tick is lowercase in the path. |
GET /stats | Pool counts and reserve totals. |
GET /analytics/:tick | Chart and price stats. Optional range (for example 24h). |
GET /balance/:wallet | DOGE and DRC-20 balances the AMM sees for an address. |
GET /wallet/utxos/:address | UTXOs for an address. |
GET /liquidity | Index of the liquidity routes. |
GET /coin-icon/:name | Coin image proxy. |
There is no GET /api/prices and no GET /api/analytics/:tick/trades.
Executing a swap
| Endpoint | Description |
|---|---|
POST /swap/create | Initiate a swap. Alias: POST /swap/initiate. JSON: tokenIn, tokenOut, amountIn, toAddress, deadline (unix seconds). Exactly one leg is the ticker doge. |
POST /swap/execute | Confirm a created swap with depositTxid. Alias: POST /swap/confirm. |
GET /swap/status/:id | Poll a swap's settlement status. |
GET /swap/history/:address | Past swaps for an address. |
Providing liquidity
Pools are custodial Uniswap-v2-style on https://amm.dogesoft.io/api.
To add, send DOGE + a DRC-20 ADD_LP inscription to the pool
deposit address, then POST /liquidity/add with both deposit txids.
To remove, wallet-sign POST /liquidity/remove with an LP amount
(wallet UI supports 1–100% / half withdraw); both legs are paid out automatically.
Accrued fees are in DOGE — claim via signed POST /liquidity/claim-fees
(202 Accepted) or often bundled into remove payouts.
The Doge Soft wallet resumes incomplete adds from an on-device queue (7-day window; DOGE-only mid-fails are retained and not double-submitted).
| Endpoint | Description |
|---|---|
GET /liquidity/positions/:walletAddress | Your open positions across all pools. |
POST /liquidity/add | Deposit both sides of a pair into a pool. |
POST /liquidity/remove | Withdraw a position (supports partial / half withdraw). |
GET /liquidity/fees/:walletAddress | Unclaimed fee balance across your positions. |
POST /liquidity/claim-fees | Claim accrued fees — signature-gated, settles asynchronously. |
claim-fees requires a wallet-signed authorization, then atomically zeroes
your unclaimed balance and records the claim. It returns 202 Accepted —
settlement to your address happens shortly after, not in the same request.
Bonding-curve launches
Brand-new coins can launch through a bonding curve before they have enough depth for a real pool — see how bonding-curve pricing works.
| Endpoint | Description |
|---|---|
GET /bonding/active | Coins currently on the bonding curve. |
POST /bonding/launch | Launch a new bonding-curve coin. Requires a Doge Soft-issued API key — not a public self-serve endpoint. |
GET /bonding/:symbol | Current curve state for one coin. |
POST /bonding/quote | Price a bonding-curve buy before committing. |
POST /bonding/:symbol/reserve | Reserve an allocation ahead of confirmation. |
POST /bonding/confirm | Confirm a reserved purchase once payment lands on-chain. |
Until the buyer's deposit is deep enough, POST /bonding/confirm returns
409 { ok: false, retryable: true, confirmations, requiredConfirmations }.
If you call it once right after broadcast and give up on any
non-2xx response, a real payment can land on-chain with nothing ever recorded. Retry while the
response says retryable: true (every 20–30s is reasonable) until it
succeeds or a generous timeout, and persist the pending confirm so it survives a reload.
Status. Bonding-curve launches are live. Swap execution and liquidity are paused, so a coin that completes its curve can't trade on Swap until Swap returns.