REST

Candles for any pool, eight timeframes.

Historical and recent OHLCV over a plain REST API. No SDK, no schema to reverse-engineer, and no websocket to hold open if you only need a range query.

Candles
146M+
Pairs
1.2M+
Timeframes
8
Response, p95
<50ms
Pipelinelive · public demo stream

What happens between a validator and your response.

Connecting
0 frames this session
Inspector
Hover or focus a node to hold the flow and read what is passing through it. Every value comes from the last swap this page received.
feed
connecting
frames this session
0
events decoded
read live on /products
last venue
Synthesizer

Ticks in, candles out, gaps bridged.

Trades on a live mint arrive whenever they arrive. Each one is floored to a bucket boundary and folded into that bucket's open, high, low, close and volume; empty buckets between traded ones are bridged so the axis stays a timeline. This is the terminal chart's own forwardFill, run in your browser on real fills.

Minara · 72yH…34jt · connecting
ticks in window
0
1s buckets
0
traded
0
forward-filled
0

Solid bars traded. Hollow bars are the ones forwardFill synthesised between two traded buckets, flat at the previous close with zero volume, so the axis stays a timeline. The space before now is left empty: gaps are bridged between known bars, never extrapolated toward the present.

Query console

Run it here.

This is the public API, called from your browser through a proxy that holds the key. Change a control and it reruns.

GET/api/v1/candles/latestrunning
timeframe
Response · first 2 of 48
// running…
The same rows, drawn
Surface

Six endpoints cover the whole dataset.

Endpoints
  • GET/api/v1/candles/latestMost recent candles, newest first
  • GET/api/v1/candlesRange query with start and end, oldest first
  • GET/api/v1/pairsPools for a mint, ranked by recent volume
  • GET/api/v1/top-moversGainers and losers for a window
  • GET/api/v1/protocolsThe venue list, no key required
  • GET/stats/globalCorpus counters across every venue
Candle schema
  • timestampstring

    ISO-8601 with a +00:00 offset, not a Z suffix

  • open / high / low / closenumber

    SOL per token, decimal-adjusted

  • volume_solnumber

    Lamports: divide by 1e9 for SOL

  • volume_tokennumber

    Base units: divide by 10^quote_decimals

  • trade_countnumber

    Trades in the bucket

  • buy_count / sell_countnumber

    Direction resolved per venue

  • unique_tradersnumber

    Distinct wallets in the bucket

Worth knowing

Two things that will bite you.

ordering

/candles/latest returns newest-first; /candles returns oldest-first. Charting the first without reversing draws the series backwards.

units

volume_sol is lamports, not SOL. Prices are SOL per token and already decimal-adjusted, so no decimals lookup is needed.

Other transports

Need it live instead?

The same candles stream over WebSocket, and every decoded swap is available on its own feed.

Workbench

Build the call, copy the client.

Change the parameters, pick a language, and run it against the live API. The code on the right is the request the panel below just made.

Request

Top movers for the window, ranked by volume.

Runs against the live API from your browser. No key needed here: the demo key is applied server-side.

curl -s 'https://api.dexploit.dev/trending?limit=5' \
  -H 'x-api-key: $DEXPLOIT_API_KEY'
Responsep95 engine <50ms

Press Run to execute this request against the live API.

Plans

Rate limits, stated per second.

Starterentry
$0
Rate
20 RPS
History
Full history
Support
Community
Developer
$50/mo
Rate
100 RPS
Connections
10 concurrent
History
Full history
Support
Email
Pro
$199/mo
Rate
500 RPS
Connections
50 concurrent
History
Full history
Support
Priority

Limits are per second. The plans have no monthly request quota, so none is quoted here.