Chart Ticks
The lightest price primitive: one compact event per trade, emitted the instant it lands (no batching). Built for live price lines and lightweight charts where you want price + volume per trade without the full trade object.
Field names are deliberately short to minimize wire overhead.
The tick object
| Field | Type | Meaning |
|---|---|---|
t | string | Trade id, {signature}:{event_index} — use for dedup |
m | string | Token mint |
ts | number | Trade time, unix ms |
b | number | Candle bucket start, unix ms — group ticks into the right candle |
o | string | Strict per-trade order key (decimal string) for exact ordering |
p | number | Unit price, USD per token |
vu | number | USD volume |
vt | number | Token volume |
s | number | Side — 1 buy, -1 sell, 0 neutral |
f | boolean | Organic flag — true = counts in the filtered view, false = flash/arb (full view only) |
o is a string, not a number, on purpose: per-trade order keys exceed JavaScript’s safe integer range. Compare it as a decimal/bigint, never as a JS number. The f flag lets you render both OHLCV views client-side from a single stream — keep all ticks for full, drop f === false for filtered.
Stream
L1 Channel token:{mint}:ticks
const ws = new WebSocket("wss://api.conyr.ai/ws");
ws.onopen = () =>
ws.send(JSON.stringify({ op: "subscribe", channels: ["token:EPjFWd...:ticks"] }));
ws.onmessage = (e) => {
const { channel, data } = JSON.parse(e.data);
if (channel?.endsWith(":ticks")) {
// data = { t, m, ts, b, o, p, vu, vt, s, f }
drawPricePoint(data.ts, data.p, data.s);
}
};Chart ticks are stream-only — there’s no REST history for ticks. For historical price action use OHLCV Candles, and for full per-trade detail (fees, labels, bundle links) use the trade tape.