DEXCH.ART@dexchartit

Crypto and stocks, in one place

The people’s
terminal.

Good data.·Open markets.·No permission required.

Dexchart is a terminal for crypto and stocks, built for people who want to understand the market — not just watch it move. We bring together reliable data, ways to learn, and a social world where traders can connect, share ideas, and grow together.

$CHART0x2112a316a2e56d7300092e5a41d2a84dd11d3bd6
or press returnRead the whitepaper

API

Base URL https://api.dexch.art — responses are JSON, shaped { data } or { data, nextCursor }; errors are { error: { code, message } }.

Screener

GET/api/v1/tokens

The screener: filterable, sortable, cursor-paginated token list.

chains
comma list: bsc,robinhood,solana
preset
new | almost | graduated | gainers | rwa (rwa = pairs quoted in a tokenized stock or commodity)
sort
trending | new | volume24h | marketCap | liquidity | txns24h | holders | progress | priceChange24h | priceChange1h | lastActivity | migratedAt
order
asc | desc (default desc)
search
symbol, name or exact contract address
cursor
opaque, from nextCursor of the previous page
limit
page size, max 100
minMcap, maxMcap, minLiq, minVol, minTxns, minHolders
numeric range filters (USD / counts)
minProgress, maxProgress
bonding progress, percent
minAge, maxAge
token age, minutes
hasSocials, dexPaid, safeOnly
boolean flags
GET/api/v1/tokens/batch

Batch summaries by explicit keys. Unknown keys are absent, never errors.

keys
comma list of chain:address, max 100
GET/api/v1/feeds/:name

Redis-backed leaderboards: trending | new | bonded (just graduated) | hot (1h volume).

chains
comma list, default all
limit
max 100
offset
windowed into the merged board
GET/api/v1/search

Typeahead over symbol and name, plus exact address lookup.

q
query text

Token detail

GET/api/v1/tokens/:chain/:address

Full detail for one token — everything the token page shows.

GET/api/v1/tokens/:chain/:address/trades

Most recent trades, newest first.

limit
max 200
before
ISO timestamp — page older trades
GET/api/v1/tokens/:chain/:address/candles

OHLCV bars for charting.

timeframe
1m | 5m | 15m | 1h | 4h | 1d
limit
bar count
GET/api/v1/tokens/:chain/:address/holders

Largest holders with balances.

limit
max 100
GET/api/v1/wallets/:chain/:address/holdings

One wallet's native balance and its balance of one token, read from the chain on request in a single multicall. Raw base units as strings, with decimals and a USD mark where a price is known. EVM chains only — Solana answers 400 rather than guessing.

token
token address — the balance to read alongside gas

Platform

GET/api/v1/stats

Per-chain totals and indexer health.

GET/api/v1/filter-options

The chains and launchpads this deployment actually serves.

POST/api/v1/submissions

Report an unlisted token. Body: { chain, address } — nothing else is accepted; every displayed field is read from chain.

Opinions

GET/api/v1/tokens/:chain/:address/opinions

What people have said about one token, with the bull/bear tally. Top-level only; the newest few replies are inlined on each.

sort
latest | top
cursor
from nextCursor
limit
max 50
POST/api/v1/tokens/:chain/:address/opinions

Write one. Body: { body, stance?, parentId? }. Signed-in wallets only. Two rules are enforced before the row is written and cannot be bypassed: no links of any kind, and no contract address other than this token — obfuscated forms included.

GET/api/v1/opinions

The global stream, every row carrying the token it is about.

chains
comma-separated
sort
latest | top
GET/api/v1/opinions/:id/replies

The full thread under one opinion, oldest first.

POST/api/v1/opinions/:id/like

React. Idempotent — one per wallet, enforced by the primary key. DELETE the same path to undo.

DELETE/api/v1/opinions/:id

Remove your own, or any as an admin. Soft: the row keeps its place so its replies still read, and loses its text at the API boundary.

Promotion — paid in the platform token

GET/api/v1/promote/config

Platform token, treasury address, profile price and boost packages. enabled:false when the deployment has no payment config.

POST/api/v1/promote/profile

Apply a paid profile update. Body: { chain, address, paymentTx, description?, imageUrl?, websiteUrl?, twitterUrl?, telegramUrl? }. The payment transfer is verified on chain; one hash redeems one purchase.

POST/api/v1/promote/boost

Apply a boost package. Body: { chain, address, paymentTx, packageId }. Boosted tokens rank higher while active and always wear a visible ⚡ mark.

WebSocket

Connect to wss://api.dexch.art/ws, then { "action": "subscribe", "channels": ["token:update"] }. Frames arrive as { channel, data }.

token:update
live market snapshot per token (rate-shaped firehose)
trade:new
individual trades (rate-shaped firehose)
token:created
new launches
token:graduated
curve → DEX migrations
<channel>:<chain>:<address>
scoped variant of token:update / trade:new — every frame for that token, never sampled

Bare channels are rate-shaped samples — enough to paint a screener, not a ledger. For every frame on one token, subscribe the scoped form.