Public API

Developer Reference

Two JSON endpoints expose live ByKaranteli performance data. CORS-enabled, rate-limited, cached. No authentication required. Attribution in embedded content is appreciated.

Quick facts

Rate limit
20 / min / IP
429 on exceed with retry-after
Cache
5 min TTL
Cache-Control: public, max-age=300
CORS
Allow-Origin: *
GET + OPTIONS preflight supported
Auth
None
All endpoints public / read-only
Formats
JSON · CSV
append ?format=csv for spreadsheets
RSS
live closed-signal stream, 72h window

MCP server · use this data inside AI assistants

bykaranteli-mcp is an official MCP (Model Context Protocol) server that exposes this API as 35 tools inside Claude, Cursor and any other MCP-capable assistant: market indices, funding heatmap and arbitrage, pressure scores, top movers, recent signals, per-symbol performance, the strategy leaderboard, daily liquidations and cascades, ETF flows, COT positioning, options snapshot and tape, Coinbase premium, flow toxicity, slippage ladders, FOMC impact, open interest, whale tape, lead-lag, correlations, IV surface, macro liquidity, network health, new listings, venue markets, quantum exposure, the LiqMap liquidation clusters and more. Free, no API key, Node 18+.

Hosted endpoint · no install (claude.ai web, mobile, hosted agents)

Paste https://mcp.bykaranteli.com as a custom connector (claude.ai: Settings > Connectors > Add custom connector). Same 35 tools, nothing to install, no key.

Claude Code
claude mcp add bykaranteli -- npx -y bykaranteli-mcp
Claude Desktop · claude_desktop_config.json
{
  "mcpServers": {
    "bykaranteli": { "command": "npx", "args": ["-y", "bykaranteli-mcp"] }
  }
}

Source and docs: github.com/bykarantelicom/bykaranteli-mcp · npmjs.com/package/bykaranteli-mcp

Pay-per-call endpoints for agents (x402)

Everything above stays free. These endpoints go deeper and price each call in USDC over the x402 protocol, so an autonomous agent can buy one answer without an account, an API key or a subscription. Payment settles onchain per request; there is nothing to sign up for on either side.

Settlement

USDC on Solana mainnet or Base mainnet · price quoted per call · network fees covered by the facilitator

/api/x402/prepaid-key$10

Prepaid API key: one payment mints a bk_live key loaded with $10 of credit. Send it as the x-api-key header on any route below and each call deducts its listed price, so scripts and agents make hundreds of calls after one settlement. ?key= tops up an existing key; /api/x402/prepaid-key/balance is free.

/api/x402/orderbook-history$0.005

Five minute spot order book depth snapshots per venue (Binance, Coinbase, Kraken, Bybit, OKX) for ten coins: 0.1% bins within 5% of mid, 2% depth per side, book reach, kept 14 days.

/api/x402/hl-whale-events$0.005

Every recorded position change of the 300 largest Hyperliquid accounts: opened, closed, increased, reduced, flipped, with size before and after, entry and liquidation price.

/api/x402/positioning-history$0.005

Hourly long/short ratios, top-trader ratios and taker flow for 30 perps on Binance, Bybit and OKX, recorded on our side.

/api/x402/rsi-history$0.002

Hourly RSI(14) rows for about 580 perps on eight intervals, the board behind /rsi.

/api/x402/spot-microstructure$0.010

Minute bars with the taker buy versus total quote split, pre-joined across venues and kept beyond exchange retention.

/api/x402/liquidations-raw$0.010

Individual liquidation events from our own sockets on Binance, Bybit, OKX, Gate, HTX, dYdX and Aster (Deribit delayed), with millisecond timestamps.

/api/x402/liqmap-levels$0.005

Full multi-exchange liquidation map: modeled leverage clusters, real forceOrder levels, top magnets, funding and orderbook context.

/api/x402/options-flow$0.005

Recorded Deribit + OKX tape: daily premium-flow history plus the full big-print list with strike, expiry and implied volatility.

/api/x402/cot-history$0.005

CFTC Commitments of Traders weekly history for crypto futures, assembled and normalised.

/api/x402/oi-history$0.005

Five minute open interest history for the major perpetuals, normalised across symbols in one query.

/api/x402/funding-history$0.005

Settled funding rate history per symbol and venue, the series behind carry and basis work.

/api/x402/options-oi-history$0.005

Daily options open interest by strike and expiry with mark implied volatility and traded notional.

/api/x402/flow-vpin$0.002

VPIN order flow toxicity history: the 90 day daily track plus the last 500 volume buckets.

/api/x402/venue-markets-history$0.005

Ten-minute venue snapshots of price, volume, open interest and funding across 56 feeds on 43 exchanges since 2026-08-21.

/api/x402/whale-trades-raw$0.002

Every $1M+ aggressive print from our own trade sockets with side, price, quantity and notional, 90 days.

Machine-readable catalog: /api/x402
How a call works
# 1. Ask without payment: the endpoint answers 402 with machine-readable terms
curl -i https://bykaranteli.com/api/x402/flow-vpin

# 2. Any x402 client pays and retries automatically
npm i @x402/fetch @x402/core @x402/svm
# wrapFetchWithPayment(fetch, client) -> 200 + data, settled in USDC

Prices are per successful response: a failed request settles nothing. What you pay for is depth and history, never access: every live snapshot above stays free and unmetered.

GET/api/public/performance

Aggregate live performance snapshot across 30 / 90 / 180 day windows, net PnL, PF, Sharpe, DD, side breakdown, daily equity curve.

Example request
curl -s https://bykaranteli.com/api/public/performance | jq '.windows."90d"'
Response shape (truncated)
{
  "generatedAt": "2026-04-21T06:47:00.000Z",
  "firstSignalAt": "2026-03-21T07:41:27.285Z",
  "lastSignalAt": "2026-04-21T06:45:12.507Z",
  "totalTrades": 104397,
  "windows": {
    "30d": {
      "trades": 90876, "wins": 45470, "losses": 45406, "ties": 0,
      "winRatePct": 50.04,
      "profitFactorGross": 1.5406, "profitFactorNet": 1.339,
      "avgNetBps": 35.94, "medianNetBps": 1.04,
      "avgWinBps": 283.70, "avgLossBps": -212.18,
      "sumNetBps": 3265831.81, "maxDrawdownBps": …,
      "sharpeAnnualized": …, "calmarAnnualized": …,
      "avgDurationMinutes": …
    },
    "90d": { … },
    "180d": { … }
  },
  "sideBreakdown": { "30d": { "LONG": {…}, "SHORT": {…} }, … },
  "equityCurve180d": [ { "day": "2026-03-21", "cumulativeNetBps": 35.94, "tradesToDate": 1 }, … ],
  "disclaimers": { "evalMode": "terminal", "feesIncluded": true, "slippageIncluded": true, "fundingIncluded": true, … }
}
GET/api/public/leaderboard

Strategy-level ranking computed per window with composite score = PF × √(trades/25) × winness.

Query parameters
NameTypeRequiredDescription
window30 | 90 | 180noLookback window in days. Default 90.
Example request
curl -s 'https://bykaranteli.com/api/public/leaderboard?window=90' | jq '.strategies[:5]'
Response shape (truncated)
{
  "generatedAt": "2026-04-21T06:47:00.000Z",
  "windowDays": 90,
  "minTradesQualified": 25,
  "totalStrategies": 14,
  "qualifiedCount": 11,
  "strategies": [
    {
      "strategy": "breakout_v3",
      "trades": 812, "longTrades": 450, "shortTrades": 362,
      "wins": 430, "losses": 382,
      "winRatePct": 52.96,
      "profitFactorNet": 1.42,
      "avgNetBps": 28.1, "sumNetBps": 22817.2,
      "maxDrawdownBps": 14203.5,
      "sharpeAnnualized": 1.18,
      "lastTradeAt": "2026-04-21T06:30:18.201Z",
      "qualified": true,
      "compositeScore": 5.74
    },
    …
  ],
  "disclaimers": { … }
}
GET/api/public/symbols

Per-symbol performance ranking (qualified + low-sample). Same shape as /strategies but keyed by signals.symbol.

Query parameters
NameTypeRequiredDescription
window30 | 90 | 180noLookback window in days. Default 90.
Example request
curl -s 'https://bykaranteli.com/api/public/symbols?window=90' | jq '.symbols[:5]'
Response shape (truncated)
{
  "generatedAt": "2026-04-21T06:47:00.000Z",
  "windowDays": 90,
  "minTradesQualified": 20,
  "totalSymbols": 48,
  "qualifiedCount": 36,
  "symbols": [
    {
      "symbol": "BTCUSDT",
      "trades": 3120, "longTrades": 1780, "shortTrades": 1340,
      "wins": 1610, "losses": 1480,
      "winRatePct": 52.1, "profitFactorNet": 1.28,
      "avgNetBps": 18.4, "sumNetBps": 57408.0,
      "bestTradeBps": 612.0, "worstTradeBps": -480.3,
      "maxDrawdownBps": 9821.4,
      "lastTradeAt": "2026-04-21T06:38:21.118Z",
      "qualified": true, "compositeScore": 4.82
    },
    …
  ]
}
GET/api/public/pressure

Composite 0-100 derivatives pressure score for every tracked Binance USDT-M perpetual (OI delta 1h/4h/24h + funding rate + basis). Direction-aware regimes.

Query parameters
NameTypeRequiredDescription
limit1-200noMax rows. Default 60.
sidelong | shortnoFilter by direction bias.
Example request
curl -s 'https://bykaranteli.com/api/public/pressure?limit=20&side=long' | jq '.items[:5]'
Response shape (truncated)
{
  "generatedAt": "2026-04-23T20:47:28.616Z",
  "count": 60,
  "items": [
    {
      "symbol": "BARDUSDT",
      "score": 45, "direction": "SHORT", "regime": "SHORT_RAMP",
      "regimeLabel": "Net short bias building",
      "components": { "oi24hPct": -8.7, "oi4hPct": 1.5, "oi1hPct": 0.1, "fundingRatePct": -0.037, "basisPct": -0.19 },
      "explainer": [ "Open interest down 8.7% over 24h", "Funding rate -0.037% per interval" ]
    },
    …
  ]
}
GET/api/public/pressure/[symbol]

Per-symbol pressure snapshot with live refresh if cache stale.

Example request
curl -s https://bykaranteli.com/api/public/pressure/BTCUSDT
GET/api/public/funding-arb

Cross-exchange funding rate spread for top symbols across 6 exchanges (Binance, OKX, Bybit, Gate, HTX, BingX) with net-of-cost annualized APR.

Example request
curl -s https://bykaranteli.com/api/public/funding-arb | jq '.rows[:5]'
GET/api/liqmap/public

Public LiqMap snapshot (24H): multi-exchange liquidation-level estimate for 100 major perpetuals (Binance + Bybit + OKX + Gate + HTX + Hyperliquid) with real liquidations overlaid. ?symbol=BTC..OP.

Example request
curl -s 'https://bykaranteli.com/api/liqmap/public?symbol=BTC' | jq '.real_levels.totals'
GET/api/public/heatmap

Funding rate heatmap snapshot: current rate, next settlement, and 24h history buckets for every tracked Binance USDT-M perpetual.

Example request
curl -s https://bykaranteli.com/api/public/heatmap | jq '.rows[:5]'
GET/api/public/top-movers

24h top gainers and losers across tracked perpetuals with price, volume, and open interest deltas.

Example request
curl -s https://bykaranteli.com/api/public/top-movers | jq '.gainers[:5]'
GET/api/public/altseason

Altcoin Season Index: live reading, strongest and weakest large alts, recorded daily history.

Example request
curl -s https://bykaranteli.com/api/public/altseason | jq '.value'
GET/api/public/themes

Eight equal-weight narrative indices (AI, RWA, DePIN, meme, L1, L2, DeFi, quantum) with fixed baskets and daily points since 2025-01-01; add ?points=0 for the scoreboard only.

Example request
curl -s https://bykaranteli.com/api/public/themes | jq '.themes[] | {key, last, ret_30d_pct}'
GET/api/public/factors

Factor board: every recorded metric in its historical band with the median 7-day BTC move that followed versus the base rate.

Example request
curl -s https://bykaranteli.com/api/public/factors | jq '.rows[:5]'
GET/api/public/venues/markets

Venue layer aggregates across 56 feeds on 43 exchanges: total perp OI, DEX share, funding range, spot dispersion, stablecoin pegs; ?symbol=BTC for one coin's rows.

Example request
curl -s https://bykaranteli.com/api/public/venues/markets | jq '.symbols[:3]'
GET/api/public/venues/lead-lag

Who moves first: one-minute return cross-correlations per venue pair and UTC day with the lead asymmetry.

Example request
curl -s https://bykaranteli.com/api/public/venues/lead-lag | jq '.pairs[] | {id, summary}'
GET/api/public/options/surface

IV surface by expiry and moneyness, per-expiry ATM / 25-delta put and call IV, skew and butterfly, constant-30d history; ?currency=BTC|ETH.

Example request
curl -s https://bykaranteli.com/api/public/options/surface?currency=BTC | jq '{atm_30d, skew25_30d_pp}'
GET/api/public/options

Deribit options snapshot: OI walls, dealer gamma exposure, zero-gamma level, DVOL, term structure.

Example request
curl -s https://bykaranteli.com/api/public/options | jq '.BTC.snap | {spot, call_wall, put_wall}'
GET/api/public/options-flow

Deribit + OKX options tape recorded every 15 minutes: premium, strikes, put/call, block trades, venue per print.

Example request
curl -s https://bykaranteli.com/api/public/options-flow | jq '.summary'
GET/api/public/etf

US spot BTC, ETH and SOL ETF flows: today's provisional aggregate with the per-fund table, the last 30 finalized trading days, and the IBIT issuer check (BlackRock shares outstanding x NAV vs the tape).

Example request
curl -s https://bykaranteli.com/api/public/etf | jq '{btc: .assets.BTC.latest_finalized, issuer: .issuer_check}'
GET/api/public/flow

Order-flow toxicity (VPIN) computed from taker prints, 120 days of history.

Example request
curl -s https://bykaranteli.com/api/public/flow | jq '.latest'
GET/api/public/premium

Coinbase premium versus Binance and cash-and-carry basis, daily history back to 2017; Kimchi premium (Upbit, Bithumb, Coinone) and Turkey premium (BtcTurk) since 2026-08-21.

Example request
curl -s https://bykaranteli.com/api/public/premium | jq '.latest'
GET/api/public/cot

CFTC Commitments of Traders for Bitcoin futures, weekly, backfilled to 2018.

Example request
curl -s https://bykaranteli.com/api/public/cot | jq '.latest'
GET/api/public/events

FOMC meetings with the measured 5, 30 and 60-minute BTC reaction (CPI and jobs report join once the release calendar is connected).

Example request
curl -s https://bykaranteli.com/api/public/events | jq '.reactions[-3:]'
GET/api/public/slippage

Live execution slippage ladders by order size from real order books, recorded hourly.

Example request
curl -s https://bykaranteli.com/api/public/slippage | jq '.live'
GET/api/public/whales

Whale tape: $1M+ aggressive market prints from our own sockets with 24h aggregates and buy share.

Example request
curl -s https://bykaranteli.com/api/public/whales | jq '.aggregates'
GET/api/public/indicators

Bitcoin cycle indicators recomputed nightly from a first-party close record since 2012: Pi Cycle Top (with cross dates), Mayer Multiple, 200-week and 2-year MAs, golden ratio multiple, profitable days, stock-to-flow, Puell Multiple from our own node, Bitfinex margin positioning. ?days= window, ?points=0 for latest only.

Example request
curl -s 'https://bykaranteli.com/api/public/indicators?points=0' | jq '.latest, .pi_cycle_crosses'
GET/api/public/rsi

RSI heatmap: Wilder RSI(14) on eight intervals (15m to 1M) for ~580 Binance USDT perpetuals, crypto top-400 by volume plus every TradFi perp, with overbought and oversold counts per interval. ?symbol=, ?kind=crypto|tradfi and ?sort=<interval> filter and order.

Example request
curl -s 'https://bykaranteli.com/api/public/rsi?sort=4h' | jq '.summary, .rows[:5]'
GET/api/public/venues/oi-history

Multi-venue open interest history: hourly sum of perp open interest across every venue in our registry at the hour's last 10-minute snapshot (whitebit and bitmart excluded), the DEX share (Hyperliquid, dYdX, Aster, Paradex, Lighter, GMX) and the current OI-weighted funding. ?days=1..90, default 30; recorded since 2026-08-21.

Example request
curl -s 'https://bykaranteli.com/api/public/venues/oi-history?days=7' | jq '.oi_weighted_funding_pct, .points[-1]'
GET/api/public/coverage

Coverage registry derived live: liquidation feeds per venue with kind (full, sampled, delayed, shadow, none), since date, 24h events and last record; 10-minute snapshot feeds per venue and market with symbol counts and last bucket; funding arbitrage legs, positioning sources, whale tape, spot minutes and the Hyperliquid whale scan with freshness.

Example request
curl -s https://bykaranteli.com/api/public/coverage | jq '.totals, .liquidations[:3]'
GET/api/public/orderbook

Spot order book depth for BTC, ETH, SOL, XRP, DOGE, ADA, LINK, AVAX, LTC and BNB: the books of Binance, Coinbase, Kraken, Bybit and OKX binned into 0.1% buckets within 5% of mid (USD notional, bids and asks arrays), the largest walls with venue split, 2% depth and book reach per venue; ?hours=1..24 adds the summed 5-minute history. Raw per-venue snapshots on the paid route /api/x402/orderbook-history.

Example request
curl -s 'https://bykaranteli.com/api/public/orderbook?symbol=BTC&hours=6' | jq '.walls[:5], .venues'
GET/api/public/positioning

Positioning board for the 30 most traded Binance USDT perps: Binance global and top-trader long/short account and position ratios and taker buy/sell ratio, Bybit share of accounts long, OKX long/short ratio, top-trader position ratio and taker volume, plus CVD series (24h at 5m, 7d at 1h) for BTC, ETH and SOL. Hourly history on the paid route /api/x402/positioning-history.

Example request
curl -s 'https://bykaranteli.com/api/public/positioning?symbol=BTCUSDT' | jq '.rows[0]'
GET/api/public/jupiter

Jupiter Perps (Solana) board: exact long and short open interest per market (SOL, ETH, BTC) from the on-chain custody state, pool utilization and hourly borrow rates, JLP AUM and APR, 24h volume, the week's top traders by realized PnL. ?base=SOL&days=7 adds hourly OI history (max 30 days).

Example request
curl -s 'https://bykaranteli.com/api/public/jupiter?base=SOL&days=1' | jq '.markets[0], .history.points[-1]'
GET/api/public/hyperliquid-whales

Hyperliquid whale tracker: the 300 largest accounts by equity scanned every 5 minutes, long vs short notional per coin with the largest position on each side, every open position, and with events=1 the last 200 position changes (opened, closed, increased, reduced, flipped). Paid full event history on /api/x402/hl-whale-events.

Example request
curl -s 'https://bykaranteli.com/api/public/hyperliquid-whales?coin=BTC&events=1' | jq '.by_coin, .events[:5]'
GET/api/public/tradfi

TradFi perpetuals board: every Binance stock, index and commodity perp with funding, basis, open interest, 24h volume and liquidations, which other venues list it, and the trading-session state. ?market= and ?symbol= filter.

Example request
curl -s 'https://bykaranteli.com/api/public/tradfi?market=EQUITY' | jq '.rows[:5]'
GET/api/public/liquidations

Recorded 24h liquidations by side, symbol and venue, the coverage kind of every venue, and a coverage-adjusted market estimate with its inputs.

Example request
curl -s https://bykaranteli.com/api/public/liquidations | jq '{recorded, market_estimate, by_exchange}'
GET/api/public/incidents

Auto-detected liquidation cascades with size, side, coins and price path.

Example request
curl -s https://bykaranteli.com/api/public/incidents | jq '.[0]'
GET/api/public/oi

Open interest leaderboard: intraday OI gainers and losers.

Example request
curl -s https://bykaranteli.com/api/public/oi | jq '.gainers[:5]'
GET/api/public/correlations

30-day rolling Pearson correlation matrix of daily returns across the top perps.

Example request
curl -s https://bykaranteli.com/api/public/correlations | jq '.symbols'
GET/api/public/charge

PsiCharge liquidity-state model: score, state and the published year-by-year scorecard.

Example request
curl -s https://bykaranteli.com/api/public/charge | jq '{score, state}'
GET/api/public/quantum

Quantum-exposed Bitcoin supply measured daily from our own node, with provenance hashes.

Example request
curl -s https://bykaranteli.com/api/public/quantum | jq '{exposed_btc, base_height}'
GET/api/public/macro

Macro liquidity series: Fed funds, 10-year yield, Fed balance sheet, reverse repo and stablecoin supply; ?days=365.

Example request
curl -s https://bykaranteli.com/api/public/macro | jq '.latest'
GET/api/public/network

Bitcoin network health from our own node: hashrate, difficulty, fees, mempool; ?days=365.

Example request
curl -s https://bykaranteli.com/api/public/network | jq '.latest'
GET/api/public/listings

New and delisted perpetual contracts across six exchanges, scanned hourly; ?days=30.

Example request
curl -s https://bykaranteli.com/api/public/listings | jq '.listed[:5]'
GET/api/public/context

Band-conditioned context for any recorded metric: where today sits and what followed; ?metric=coinbase_premium_pct.

Example request
curl -s https://bykaranteli.com/api/public/context | jq '.interpretationEn'
GET/api/public/smart-money/[symbol]

Smart-money read for one symbol from recorded positioning.

Example request
curl -s https://bykaranteli.com/api/public/smart-money/BTCUSDT | jq '.'
GET/api/v1/public/datasets/[name]

19 CC0 datasets as CSV or JSON: market history, symbol board, listings, liquidations, ETF flows (total + by fund), COT, premium, DVOL, options chain + flow, metrics, quantum, theme indices, venue markets, whale trades, stablecoin pegs, basis, slippage. Full catalog at /data. Daily CSV mirrors: github.com/bykarantelicom/crypto-datasets

Example request
curl -s https://bykaranteli.com/api/v1/public/datasets/daily-market.csv | head -5
GET/api/public/indices

All market indices in one payload: Retail Euphoria Index (proprietary) + Fear & Greed (alternative.me) + CoinGecko global + DeFiLlama stablecoin flow + the Altcoin Season Index (top-50 alts vs BTC, 90d).

Example request
curl -s https://bykaranteli.com/api/public/indices | jq '.euphoria.score, .fearGreed.today.valueRaw'
GET/api/public/euphoria

Retail Euphoria Index standalone. Composite of F&G + trending memes + BTC dominance + top-30 crowd positioning.

Example request
curl -s https://bykaranteli.com/api/public/euphoria | jq '{score, regime, explainer}'
GET/api/public/signals/[id]

Verifiable signal receipt: SHA-256 fingerprint + all decision parameters + outcome. Accepts UUID or hex hash prefix.

Example request
curl -s https://bykaranteli.com/api/public/signals/d3fbb0e3-4aef-4a8b-9fa6-2da02401f07e | jq '{hash, shortCode, symbol, side, outcome, netBps}'
GET/embed/pressure/[symbol]

Embeddable HTML widget showing current pressure score for a symbol. Use in iframe. Dark theme, no tracking.

Example request
<iframe src="https://bykaranteli.com/embed/pressure/BTCUSDT" width="340" height="200" style="border:0"></iframe>
GET/embed/liquidations

Embeddable 24h liquidations widget: long/short totals, event count, top symbols, largest print. Gallery and terms at /widgets.

Example request
<iframe src="https://bykaranteli.com/embed/liquidations" width="100%" height="300" style="border:0"></iframe>
GET/embed/orderbook/[symbol]

Embeddable spot order book depth widget for one of the ten tracked coins: 2% depth, imbalance, walls, mirrored bin strip.

Example request
<iframe src="https://bykaranteli.com/embed/orderbook/BTC" width="100%" height="380" style="border:0"></iframe>
GET/embed/positioning/[symbol]

Embeddable long/short positioning widget for one perp (Binance, Bybit, OKX ratios and taker flow).

Example request
<iframe src="https://bykaranteli.com/embed/positioning/BTC" width="100%" height="200" style="border:0"></iframe>
GET/embed/whales

Embeddable Hyperliquid whales widget: long versus short notional of the top-300 accounts per coin.

Example request
<iframe src="https://bykaranteli.com/embed/whales" width="100%" height="330" style="border:0"></iframe>
GET/embed/rsi

Embeddable RSI(14) breadth widget: overbought/oversold counts per interval plus the extremes on ?interval.

Example request
<iframe src="https://bykaranteli.com/embed/rsi?interval=4h" width="100%" height="340" style="border:0"></iframe>
GET/api/public/recent

Last N closed signals within an H-hour window. Good for tickers, activity feeds, and notifications.

Query parameters
NameTypeRequiredDescription
hours1-168noWindow size in hours. Default 24, max 168 (7d).
limit1-100noMax signals. Default 20.
Example request
curl -s 'https://bykaranteli.com/api/public/recent?hours=24&limit=20' | jq '.signals[:5]'
Response shape (truncated)
{
  "generatedAt": "2026-04-21T06:47:00.000Z",
  "hours": 24,
  "total24h": 1247, "wins24h": 648, "losses24h": 572, "timeouts24h": 27,
  "net24hBps": 34219.8,
  "signals": [
    {
      "symbol": "ETHUSDT", "side": "LONG", "outcome": "TP1",
      "netBps": 182.4,
      "evaluatedAt": "2026-04-21T06:44:10.009Z",
      "createdAt":   "2026-04-21T05:58:01.301Z"
    },
    …
  ]
}

Embed example

Drop this into any HTML page. Numbers refresh every 5 minutes client-side.

<div id="bk-perf"></div>
<script>
  (async () => {
    const r = await fetch('https://bykaranteli.com/api/public/performance');
    const j = await r.json();
    const m = j.windows['90d'];
    const pct = (m.sumNetBps / 100).toFixed(2);
    document.getElementById('bk-perf').innerHTML =
      `<strong>ByKaranteli 90d:</strong> ${pct >= 0 ? '+' : ''}${pct}%
       · PF ${m.profitFactorNet?.toFixed(2)}
       · ${m.trades} trades
       · <a href="https://bykaranteli.com/performance">source</a>`;
  })();
  setInterval(() => location.reload(), 300000);
</script>

Fair use

  • Rate limit is 20 requests per minute per IP. Respect it or get 429'd.
  • Data is read-only. No PII or trading actions exposed.
  • Attribution: a visible link back to bykaranteli.com or the source page (e.g. /performance) is appreciated when embedding.
  • Commercial use is allowed. Rebranding our numbers as your own in-house backtest is not.
  • Scraping internal routes (/dashboard/*, /api/admin/*, /api/terminal/*) is blocked and monitored. Stick to /api/public/*.

Not investment advice. The numbers returned describe ByKaranteli's live signal-engine performance and are not a recommendation to trade. Past performance does not guarantee future returns.