Response Schemas
Response Schemas
Section titled “Response Schemas”Every paid endpoint’s page lists its own fields and shows a real engine response. This page covers what
they share: units, the common meta block, enums, and what the gateway adds.
The examples are real engine output on market data captured on 2026-09-24, copied from the gateway (the
same examples it publishes to the x402 Bazaar and in /openapi.json). Nothing in them is hand-written.
Units and conventions
Section titled “Units and conventions”| Convention | Detail |
|---|---|
| Prices | USD per price_unit. For most markets that is one token (1 BTC). Hyperliquid lists some tokens only as 1000-token markets: PEPE is the kPEPE market, so its prices are per 1000 PEPE and market_symbol is kPEPE. /basis converts to per-token prices |
| Open interest | Counted in contracts of price_unit (derivatives.open_interest, open_interest.current), not USD. Multiply by the price for USD. /liquidations reports USD (total_oi_usd) |
| Funding | Hyperliquid funding rates are hourly. Annualized figures are rate × 24 × 365 × 100; funding_interval_hours is 1 |
| Fractions | open_interest.delta_* and price_change_4h (0.0312 = +3.12%), bollinger.position_pct (0 = lower band, 1 = upper band, outside 0–1 when the close is outside the bands), confluence scores (0–1) |
| Percentages | Other *_pct fields are percentages: atr_pct, width_pct, funding_annualized_pct, annualized_pct, positive_pct, basis_pct, spread_pct, deviation_pct, proximity_pct, distance_pct |
| Basis points | *_bps fields: 1 bp = 0.01% |
| Times | timestamp_iso and every meta.as_of entry are ISO 8601 UTC strings. regime.as_of and sentiment.as_of are Unix seconds (numbers, possibly fractional; 0 when unknown) |
| Candles | Indicators use closed candles only. last_closed_candle_time says when the newest one closed |
| Missing values | A value that could not be computed is null, or the field is absent; never a made-up 0 |
Most responses carry these fields in meta. Endpoint-specific meta fields are on each endpoint’s page.
| Field | Type | Description |
|---|---|---|
meta.provider | string | Cerebrus Pulse |
meta.offering | string | Which analysis produced the response (see the table below) |
meta.execution_ms | number | Engine time for this request, in milliseconds (0 in the captured examples) |
meta.data_age_seconds | number | Age of the main input feed when the response was computed |
meta.as_of.<input> | string | When each input the response used was current, keyed by input: market_data, candles_<tf>, funding, oi_history, cex_dex, arb_log |
meta.sources[].name | string | A third party whose data the response is built from: Hyperliquid, Chainlink Data Feeds, DefiLlama, CoinGecko, alternative.me, FRED, the news RSS feeds or Coinbase Exchange |
meta.sources[].url | string | That provider’s site, where it has one |
meta.sources[].notice | string | Optional. An attribution notice the provider requires (for example “Powered by CoinGecko”) |
meta.warning | string | Optional. stale_data (the price feed is more than 15 minutes old, or the CEX-DEX snapshot more than 10) or stale_chainlink_data (the Chainlink snapshot is more than 2 minutes old) |
meta.warnings | array | Optional. stale_candles, stale_oi_history, lagging_coins, chainlink_price_implausible, stale_data, and stale_regime (added by the gateway) |
meta.disclaimer | string | Optional. A not-financial-advice notice the gateway adds to live responses |
| Endpoint | meta.offering |
|---|---|
/pulse, /demo | cerebrus_pulse |
/bundle | pulse_bundle |
/screener | pulse_screener |
/sentiment | pulse_sentiment |
/funding | pulse_funding |
/oi | pulse_oi |
/spread | pulse_spread |
/correlation | pulse_correlation |
/basis | pulse_basis |
/cex-dex | pulse_cex_dex |
/depeg | pulse_depeg |
/liquidations | pulse_liquidations |
/arb | pulse_stress |
What the gateway adds
Section titled “What the gateway adds”The engine computes each response; the gateway passes it through unchanged except for:
meta.disclaimer, on every engine response while the operator leaves it on.regime.stale,regime.age_secondsandregime.note, plusstale_regimeinmeta.warnings, when the market regime is more than 6 hours old.- On the free
/demo/{coin}(BTC and ETH only):meta.demo,meta.demo_coins,meta.cache_ttl_seconds,meta.upgrade,meta.joinandmeta.why_join.
A paid response also carries the x402 settlement receipt in the PAYMENT-RESPONSE header.
The confluence score
Section titled “The confluence score”confluence.score (in /pulse, /bundle and the screener’s confluence_score) is a vote share:
four indicators vote bullish (1), neutral (0.5) or bearish (0) on the primary timeframe, and the score is the
average. 1 means every vote is bullish, 0.5 balanced or neutral, 0 every vote bearish. It is not a confidence
or a probability, and it has not been validated as predictive (confluence.validated is false). Two votes
follow the trend (RSI, EMA trend) and two fade it (Bollinger position, z-score); family_scores shows each
pair on its own. The top-level fields describe primary_timeframe only; per_timeframe has the rest.
| Field | Values |
|---|---|
rsi_zone | overbought, bullish, neutral, bearish, oversold, unknown |
trend.label, screener trend | bullish, weak_bullish, neutral, weak_bearish, bearish, insufficient_data |
trend.ema_stack | bull_aligned, bear_aligned, mixed, flat, unknown |
confluence.bias, confluence_bias | bullish, bearish, neutral, unknown |
regime.current | A lower-case label from the trading system (e.g. risk_on, risk_off) or unknown; treat unrecognized values as opaque |
sentiment.label | very_bearish, bearish, neutral, bullish, very_bullish, unknown |
vol_regime | LOW, NORMAL, HIGH, EXTREME, UNKNOWN |
funding_bias | long_pays, short_pays, neutral |
oi_trend, open_interest.trend | RISING, FALLING, FLAT, UNKNOWN |
price_oi_divergence | BEARISH_DIV, BULLISH_DIV, NONE, UNKNOWN |
correlation regime | CORRELATED, MIXED, DECORRELATED, UNKNOWN |
basis.direction | hl_premium, hl_discount, aligned |
basis.signal | neutral, mildly_bullish, mildly_bearish, bearish_contrarian, bullish_contrarian |
divergence.direction, cex_dex_direction | cex_premium, dex_premium |
usdc.peg_status | HEALTHY, ELEVATED, WARNING, CRITICAL |
infrastructure.arbitrum_sequencer | up, down, unknown |
summary.cascade_risk | EXTREME, HIGH, MODERATE, LOW, UNKNOWN |
stress_index.level | LOW, MODERATE, HIGH, EXTREME |
Errors
Section titled “Errors”Errors are JSON with a detail string; a refused parameter also names it in param. See
Rate Limits & Errors.