Where prices come from
Pulse & the price oracle
Pulse prices come from the public Doge Soft oracle (pool or bonding curve) plus a DOGE/USD spot on pulse.dogesoft.io.
Pulse shows live price and momentum for DRC-20 Coins. The honest answer to "where do these numbers come from" is: two different pricing mechanisms depending on where a coin is in its life, both driven by confirmed on-chain activity, plus a small internal service that picks the right one and adds fiat conversion — described below without pretending it's a black-box price feed.
Bonding-curve pricing, for new launches
A newly-launched coin prices itself against a bonding curve rather than an order book: the more DOGE that's been committed into it, the higher the next unit costs. Each coin's current price is recalculated the moment a bonding-curve buy confirms on-chain, as part of settling that same trade. Nothing polls for this; the price update is a side effect of settling the trade.
Flight stages: when a coin graduates
A coin moves through four stages purely as a function of how much DOGE has been committed to it — fixed thresholds, not a per-coin target:
| Reserve (DOGE) | Stage | Swap live? |
|---|---|---|
| 0 – 10k | Ignition — filling | No, bonding-curve price only |
| 10k – 40k | Escape velocity | Yes |
| 40k – 100k | Interstellar | Yes |
| 100k+ | 𝕏Ð | Yes |
Once a coin passes Ignition, its price stops being the bonding-curve formula and becomes real pool pricing.
Pool pricing, once a coin graduates
Past Ignition, price comes from the pool instead — the same reserves-ratio math the Swap / AMM quote endpoint uses to price a trade before you submit it. Pulse reads the same pool state Swap does, so the price you see in Pulse and the quote you get from Swap should always agree.
Public oracle
The price resolver is public. Pulse reads
https://oracle.dogesoft.io.
source_priority on /api/latest is
amm_pool then bonding_curve.
No API key.
| Endpoint | Auth | Description |
|---|---|---|
GET https://oracle.dogesoft.io/health | Public | Service health. |
GET /api/latest | Public | Current DRC-20 prices. Each row says whether it came from an AMM pool or a bonding curve. |
GET /api/token/:tick | Public | One coin. |
GET /api/pairs | Public | Listed DOGE pairs. |
GET /api/pair/:id | Public | One pair. The id is the pair id from /api/pairs, not a ticker. |
GET /api/search?q= | Public | Ticker search. |
GET /.well-known/dogesoft-oracle.json | Public | Machine-readable map of the routes above. |
Paths other than /health and the well-known file are relative to
https://oracle.dogesoft.io.
DOGE to USD for the Pulse header is a separate public route:
GET https://pulse.dogesoft.io/api/doge-spot
returns price and chg24
(Binance DOGEUSDT, with CoinGecko as fallback). It is cached for about a minute.
There is no /api/analytics/:tick/trades on the AMM.
What this means for integrators
- DRC-20 versus DOGE pricing is a read of confirmed chain state: bonding curve before graduation, pool reserves after. Read it from the oracle or from Swap.
- Only the DOGE versus USD leg uses an external spot, via
/api/doge-spotor the oracle's own fiat conversion. - A bonding-curve coin does not move between confirmed trades.
- For a trade, call Swap's quote endpoint. A Pulse render can be one tick behind the latest confirmation.