Skip to content

GET /basis/{coin}

$0.02 USDC Powered by Chainlink

Two different measurements for one market:

  • perp_premium_bps, the perp premium: Hyperliquid’s mark price against Hyperliquid’s own oracle price. This is the premium that funding follows, and the one direction, signal and interpretation describe.
  • oracle_divergence_bps: Hyperliquid’s oracle (a weighted median of exchange spot prices) against Chainlink’s spot price on Arbitrum. Both are spot references, so this measures how far two spot sources disagree, not funding pressure.

basis_bps and basis_pct are kept for old clients and are deprecated. They carry the oracle vs Chainlink gap, as they always have, not the perp premium.

GET https://api.cerebruspulse.xyz/basis/{coin}
ParameterTypeRequiredDescription
coinstringYesToken symbol (BTC, ETH, SOL). It needs a Chainlink feed in the snapshot (38 on 2026-09-24, BTC, ETH, SOL, LINK, ARB, DOGE, AVAX, NEAR, AAVE, UNI, OP and PEPE among them) and a Hyperliquid market. An unsupported coin gets a 400 listing the available ones, not charged.

All prices are USD per single token, including for 1000-token markets such as PEPE.

FieldTypeDescription
endpointstringbasis
coinstringThe symbol, upper-case
market_symbolstringHyperliquid’s name for the market (kPEPE for PEPE)
price_unitstring1 <coin>: every price here is per token
timestamp_isostringWhen the response was computed (UTC)
basis.hl_mark_pxnumberHyperliquid mark price
basis.hl_oracle_pxnumberHyperliquid oracle price
basis.chainlink_spot_pxnumberChainlink spot price (Arbitrum)
basis.perp_premium_bpsnumberPerp premium: (hl_mark_px − hl_oracle_px) / hl_oracle_px × 10000
basis.premium_index_bpsnumber | nullHyperliquid’s own premium sample (impact prices against the oracle) in basis points, which its funding averages
basis.oracle_divergence_bpsnumber | null(hl_oracle_px − chainlink_spot_px) / chainlink_spot_px × 10000; null, with the warning chainlink_price_implausible, when the two differ by more than 2×
basis.basis_bpsnumber | nullDeprecated: the same value as oracle_divergence_bps (see meta.deprecated)
basis.basis_pctnumber | nullDeprecated: basis_bps in percent
basis.directionstringhl_premium, hl_discount or aligned: the sign of perp_premium_bps
basis.signalstringA label for the premium’s size and sign: neutral (−10 to 10 bps), mildly_bullish (10 to 50), mildly_bearish (−50 to −10), bearish_contrarian (above 50), bullish_contrarian (below −50). A description of the premium, not a recommendation
basis.interpretationstringThe label in words
metaobjectCommon metadata (Response Schemas)
meta.offeringstringpulse_basis
meta.basis_definitionstringThe two definitions above, as text
meta.deprecatedobjectFields kept for old clients, each with what to read instead
meta.chainlink_data_age_secondsnumber | nullAge of the Chainlink snapshot. Above 120 seconds, meta.warning is stale_chainlink_data
meta.chainlink_round_age_secondsnumber | nullAge of the Chainlink round behind the price, when the snapshot records it; null otherwise
meta.chainlink_feed_networkstringarbitrum
meta.hl_sourcestringmark_and_oracle

GET /basis/BTC: real engine output on market data captured at 2026-09-24 17:05 UTC. Lists are cut to 3 items. Live responses may also carry meta.disclaimer, which the gateway adds.

{
"endpoint": "basis",
"coin": "BTC",
"market_symbol": "BTC",
"price_unit": "1 BTC",
"timestamp_iso": "2026-09-24T17:05:00Z",
"basis": {
"hl_mark_px": 84517,
"hl_oracle_px": 84539,
"chainlink_spot_px": 84501.01946422,
"perp_premium_bps": -2.6,
"premium_index_bps": -4.61,
"oracle_divergence_bps": 4.49,
"basis_bps": 4.49,
"basis_pct": 0.0449,
"direction": "hl_discount",
"signal": "neutral",
"interpretation": "Perp trades at its oracle price: no significant premium"
},
"meta": {
"provider": "Cerebrus Pulse",
"offering": "pulse_basis",
"execution_ms": 0,
"basis_definition": "perp_premium_bps: Hyperliquid mark vs its oracle (perp premium), which direction, signal and interpretation describe; oracle_divergence_bps: Hyperliquid oracle vs Chainlink spot, which basis_bps has always carried",
"deprecated": {
"basis.basis_bps": "the Hyperliquid oracle vs Chainlink spot gap, not the perp premium; read basis.oracle_divergence_bps, or basis.perp_premium_bps for the premium",
"basis.basis_pct": "basis.basis_bps / 100; read basis.oracle_divergence_bps"
},
"data_age_seconds": 60,
"chainlink_data_age_seconds": 55.6,
"chainlink_round_age_seconds": null,
"chainlink_feed_network": "arbitrum",
"hl_source": "mark_and_oracle",
"sources": [
{
"name": "Hyperliquid",
"url": "https://hyperliquid.xyz"
},
{
"name": "Chainlink Data Feeds (Arbitrum One)",
"url": "https://data.chain.link"
}
]
}
}
StatusReason
400No Chainlink feed or Hyperliquid market for the coin, or no snapshot yet (not charged)
402Payment required (the standard x402 flow)
429Rate limit exceeded
503Service disabled, payments down, or an upstream feed is missing or stale; no price is quoted
504Engine timeout (not charged)