API reference
State & confluence
Read the market, follow changes, and find agreement.
/api/v1/stateThe board
Current directional state of every indicator on every asset and timeframe. One call, whole market. Start here on each run.
/api/v1/signalsThe changes
Every state transition, newest first, with an exclusive cursor. Poll this to stay in sync without refetching the board.
/api/v1/flipsThe flips
Recent changes grouped by asset and ranked by how many indicators turned the same way — the website’s Flips panel as data.
/api/v1/confluenceThe agreement
Assets where N+ different indicators currently align, ranked — with every underlying vote returned so you can audit the score.
Static response example showing one asset. The live response counts only the assets and readings returned.
{
"as_of": "2026-08-12T13:03:07.884Z",
"assets": [
{
"ticker": "SOL", "name": "Solana", "asset_class": "crypto",
"signals": {
"trend_oracle": { "1h": "bullish", "4h": "bullish", "1d": "neutral" },
"bayesian_trend": { "1h": "bullish", "4h": "neutral", "1d": "neutral" },
"reversals": { "1h": "neutral", "4h": "bullish", "1d": "bullish" }
}
}
],
"counts": { "assets": 1, "readings": 9 }
}Reading an agreement score
A score of 0.667 means four of six reporting indicators agree on direction. It does not mean a 66.7% chance of profit. These models can respond to the same price movements, so their votes can be correlated. Inspect the underlying votes and evaluate the combination against your own baseline.
Votes come from every indicator key in the stored state. That includes PerpKit’s trend reading and, on some assets, legacy keys that have not been updated since a rename: dexter (now enzo, renamed 2026-04-13). So total_reporting can differ between assets. The catalog lists them under legacy_indicator_keys.
How flips are grouped
Pass timeframe (default 1d), hours and direction (all, bullish or bearish). Windows per timeframe, in hours: 1h 1 / 3 / 6; 4h 6 / 12 / 24; 1d 24 / 48 / 72. The middle one is the default.
- Only the newest change per asset, indicator and timeframe inside the window counts. The direction filter applies after that pick, so a cell whose newest change went the other way is left out rather than replaced by an older change.
- One group per asset. bullish and bearish count the indicators whose newest change turned that way; dominant is the larger side, or "mixed" on a tie; score is the larger count. A change to neutral counts toward neither side.
- By score, then groups with a dominant side before mixed ones, then the most recent change first.
- On 1h, only groups with a score of 2 or more are listed.
- Each request reads the newest rows of the timeframe’s widest window, up to 1h: 1500, 4h: 800, 1d: 500. capped is true when that limit was reached, so older changes inside the window may be missing.
- Groups, order and membership match the website’s Flips panel for a Premium subscriber. The website lists the first 50 groups and shows the price move since the oldest change on the dominant side; the API returns every group and each change’s price instead.