Tokens

OHLCV candles for a token

Open/high/low/close + volume candles aggregated from the 1-minute base series. PRO gets all timeframes with the last 30 days of history measured from now (history_floor): a window entirely older returns 200 with zero candles and history_outside_plan: true, a partly older one is clamped (history_clamped: true). ULTRA (and BUSINESS) adds net-flow/liquidity fields and full retained history. This tier split applies to Solana candles only; RHC candles are full-history on PRO+. Candles are read newest-first in grid-aligned database windows that start small and grow while reads are fast; each request has a time budget of about five seconds. When the time budget runs out (typically a dense token over closed months on cold storage) the default answer is 503 read_budget_exhausted with covered_from and Retry-After; with partial=allow the newest complete candles read so far are returned with truncated: true and covered_from (continue with to=covered_from). Never a partial candle.

get/tokens/{mint}/candles

Request

  • Base URL: https://madeonsol.com/api/v1
  • URL: https://madeonsol.com/api/v1/tokens/{mint}/candles
  • Auth: HTTP bearer

Path parameters

mintstring required
Example:FfuWjhMm5LP3anZ5zq8SG4iqzYVvhM4LoyNMM957pump

Solana token mint address

Query parameters

tf'1m' | '5m' | '15m' | '1h' | '4h' | '1d'

Candle timeframe. Also accepted as timeframe; tf wins if both are sent.

limitinteger

Max candles to return (1500 = one full day of 1m bars with margin)

fromstring date-time

ISO8601 window start, inclusive (defaults to limit×tf back). PRO: floored at now minus 30 days

tostring date-time

ISO8601 window end, exclusive (defaults to now)

partial'allow'

Opt in to partial delivery. When the request's read budget (about 4-7 s of database time) runs out, typically for a dense token over closed months on cold storage: with partial=allow the response is 200 with the newest complete candles, truncated=true and covered_from (continue with to=covered_from); without it the response is 503 with error_kind=read_budget_exhausted, Retry-After and covered_from. Truncation by the per-request call cap (sparse tokens, very wide windows) is always 200 truncated=true, as before.

Response

OK

mintstring
timeframe'1m' | '5m' | '15m' | '1h' | '4h' | '1d'
fromstring date-time
tostring date-time
countinteger
net_flow_includedboolean

true on ULTRA — signals whether the net-flow/liquidity fields below are present

truncatedboolean

true when the read stopped before limit candles or from were reached: the per-request call cap (always), or the time budget (only with partial=allow; otherwise 503). The returned candles are complete; covered_from is the oldest instant searched, so request older candles with to=covered_from.

covered_fromstring date-time

Oldest instant actually searched; equals from when the whole window was scanned

history_floorstring date-time nullable

PRO: now minus 30 days, rounded up to the tf grid (oldest bucket served). null on ULTRA/BUSINESS (no floor)

history_clampedboolean

PRO: part of the requested window was older than history_floor and was cut; from echoes the clamped start

history_outside_planboolean

PRO: the whole requested window is older than history_floor, so 200 with zero candles

Changes

No recorded changes to this operation across all 1 revision of this API.