{"sources":["binance"],"intervals":["1m","3m","5m","15m","30m","1h","2h","4h","6h","8h","12h","1d","3d","1w"],"max_candles_per_request":5000,"semantics":{"range":"half-open [start_ms, end_ms) - the candle opening exactly at end_ms is NOT included","alignment":"start_ms and end_ms must be exact multiples of the interval; unaligned requests are rejected rather than silently rounded","timestamps":"milliseconds since the unix epoch, UTC","numbers":"prices and sizes are strings, exactly as the exchange sent them - never reparsed, because reparsing breaks byte-level reproducibility","closed_candles_only":"a candle that has not closed is never returned; serving a forming candle hands the caller lookahead through the data layer","revisions":"first write wins - if the exchange later changes a candle we keep serving the original and report the disagreement"},"verification":{"canonical_version":"x403-md-1","row_encoding":"open_time|open|high|low|close|volume|close_time|quote_volume|trades","leaf":"sha256(0x00 || canonical_row)","node":"sha256(0x01 || left || right)","odd_node":"promoted unchanged, never duplicated"}}