Developer Reference
Public JSON endpoints expose the market data ByKaranteli records: the symbols board, funding, open interest, liquidations, options, ETF flows and positioning. CORS-enabled, rate-limited, cached. Browsers on this site need nothing; programs send a free account key (Authorization: Bearer) from 2026-09-10, and paid plans raise the rate and add member depth. Attribution in embedded content is required on the Free plan.
Quick facts
retry-after?format=csv on symbols, heatmap, top-movers, correlations and every dataset (/api/v1/public/datasets)Quick examples
Common questions, each answered by one call. The command is the same one listed under its endpoint below; the MCP tool gives the same answer inside an assistant.
How much was liquidated today, and on which exchange?
Real liquidation events from eleven exchange feeds in one call, split by venue and side, plus a permanent daily rollup; a floor, not the sector total.
get_liquidationscurl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/liquidations | jq '{recorded, market_estimate, by_exchange}'Where do BTC liquidations sit around the price, and how much on each side?
Liquidation clusters by price level for 201 perpetuals, a six-venue model with real liquidation prints overlaid.
get_liqmapcurl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/liqmap/public?symbol=BTC' | jq '.real_levels.totals'
Which perps carry the most extreme funding right now, positive or negative?
Funding rate per symbol for the most traded Binance USDT-M perps, colour coded, with the open interest change beside it.
get_funding_heatmapcurl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/heatmap | jq '.rows[:5]'
Where are the BTC options call and put walls?
Open interest walls by strike, dealer gamma exposure, max pain per expiry and DVOL from the Deribit, Bybit, Binance, OKX and Delta Exchange option chains, summed or one venue at a time.
get_options_snapshotcurl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" "https://bykaranteli.com/api/public/options?venue=all" | jq '.assets.BTC | {venues_included, call_wall, put_wall}'How much flowed into or out of the US spot bitcoin ETFs on the last trading day?
US spot BTC, ETH, SOL and XRP ETF daily net flows with a per fund matrix and a check against the issuer's own figures.
get_etf_flowscurl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/etf | jq '{btc: .assets.BTC.latest_finalized, issuer: .issuer_check}'Has an exchange paused withdrawals or deposits for an asset?
Withdrawal and deposit status per asset and network on every venue we read, since when, with each venue's withdrawal fee and minimum and a suspension log.
get_withdrawal_statuscurl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/withdrawals?asset=USDT' | jq '.rows[:5]'
Plans for programs
From 2026-09-10 every call from a program (anything that is not a browser on this site) carries an account key: Authorization: Bearer bk_... A free key comes with any verified account. Paid plans buy rate, member depth and licence; people reading the site pay nothing.
| Plan | Price | Rate | Monthly quota | Depth | Keys | Licence | x402 catalog |
|---|---|---|---|---|---|---|---|
| Free API | $0 | 30 / min | 15,000 / month | public pages | 1 | personal and research, attribution | per call |
| Terminal | see pricing | 60 / min | 150,000 / month | public pages | 1 | personal | per call |
| Builder | $49 / mo · $470 / yr | 300 / min | 1,000,000 / month fair use | member: LiqMap 7 timeframes and filters, 1m, 3m, 5m, 10m series, 5,000 bars | 2 | personal | 1,000 / month · last 90 days · up to 5,000 rows a call · raw records per call |
| Business | $149 / mo · $1,430 / yr | 1,200 / min | 3,000,000 / month fair use | member | 5 | commercial | 10,000 / month · last 365 days · up to 20,000 rows a call · raw records + monthly bulk |
| Scale | $399 / mo · $3,830 / yr | 3,000 / min | 10,000,000 / month fair use | member | 10 | commercial + derived redistribution | no ceiling · whole archive · up to 20,000 rows a call · raw records + monthly bulk |
| Enterprise | from $4,800 / yr | custom | custom | member | custom | custom licence, SLA | no ceiling · whole archive · up to 20,000 rows a call · raw records + monthly bulk |
Members active on 2026-09-10 keep Builder rights for the rest of their paid period. Prepaid x402 keys and per-call USDC payment stay for anonymous agents. Enterprise: support@bykaranteli.com.
Stream (WebSocket)
One socket instead of polling. Event channels (liquidations, whales, hl_whales, alerts, desk, candles) arrive as they happen: liquidation prints from ten venues, $1M+ whale prints, Hyperliquid whale position events, the desk's notes as they are published and your own alert firings. Snapshot channels (pressure, oi, funding, liqmap, turkey, tokenized) arrive only when the payload changes. Paid plans only: Builder gets a taste, Business opens every channel.
wss://bykaranteli.com/ws/v1Send your account key on the handshake as Authorization: Bearer bk_... or x-api-key: bk_... (the same key as the REST API). Keys in the query string are refused. Free and Terminal keys get 403 plan_required.
Quick start: connect, authenticate, subscribe
wss://bykaranteli.com/ws/v1
Authorization: Bearer bk_...
{"op":"subscribe","channel":"liquidations","symbols":["BTCUSDT"],"min_notional":50000,"id":"a1"}Channels
| Channel | Type | What arrives | Filters |
|---|---|---|---|
| liquidations | event | Exchange-reported liquidation prints from Binance, Bybit, OKX, Gate, HTX, dYdX, Aster, Lighter, Kraken Futures and GMX, normalized: venue, symbol, side, price, qty, notional, ts (Deribit publishes with a delay and is not streamed) | symbols, venues, min_notional |
| candles | event | Binance USDT-M perp one-minute candles as they form: open, high, low, close, quote volume, taker buy volume and a closed flag, at most twice a second per symbol; the SuperChart folds them into any bar period | symbols (required) |
| whales | event | Aggressive market prints of $1M+ from our own trade sockets on Binance, Bybit, OKX, Gate, Bitget, HTX, MEXC and Hyperliquid perps and Coinbase and Kraken spot | symbols, min_notional |
| hl_whales | event | Hyperliquid whale position events: opened, increased, reduced, closed, flipped, with size before and after, notional, entry and liquidation price | coins, kinds |
| desk | event | Desk notes as they are published: slug, publish time, headline, text, news value, the board and the coins the note names, the permanent URL; same fields as GET /api/public/desk | none |
| alerts | event | Your own alert recipes as they fire (same triggers as email and push): recipe id, name, symbols, fired_at | none |
| pressure | snapshot | Derivatives pressure score per symbol; same payload as GET /api/public/pressure/{symbol} | symbols (required) |
| oi | snapshot | Open interest board; same payload as GET /api/public/oi | none |
| funding | snapshot | Cross-exchange funding and arbitrage board; same payload as GET /api/public/funding-arb | none |
| liqmap | snapshot | LiqMap levels for a coin and timeframe; same payload as GET /api/liqmap/public | coins (required), timeframe (default 24h) |
| turkey | snapshot | Turkey premium board: TRY and USDT reference prices, per-venue statuses and premiums in bps; same payload as GET /api/public/turkey-premium | none |
| tokenized | snapshot | Tokenized stocks board: onchain and exchange wrappers of listed shares per underlying, with issuer, chain or venue, price, reference price, premium in percent, supply and as_of; same payload as GET /api/public/tokenized-stocks | none |
What each plan can open
| Plan | Connections per account | Subscriptions per connection | Channels | Symbols per subscription | Replay |
|---|---|---|---|---|---|
| Free API, Terminal | none | ||||
| Builder | 1 | 3 | liquidations, candles | 3, named | none |
| Business | 5 | 50 | all 12 | 50 | 15 minutes |
| Scale | 20 | 200 | all 12 | 200 | 60 minutes |
| Enterprise | 50 | 1,000 | all 12 | 1,000 | 24 hours |
Protocol
- JSON text frames, one message per frame, at most 4 KB from the client. The first frame from us is hello with your plan's limits and channels.
- subscribe returns subscribed with a sub id; unsubscribe by that id; list shows what is open; ping answers pong.
- Event channels send event frames with seq, the source row id. Reconnect with since = the last seq you handled and the plan's replay window is filled in before live traffic (Business and above).
- Snapshot channels send one snapshot right after subscribe (when cached) and then only when the payload changes, with a hash you can compare. Payloads are the same as the REST route, so parsing is shared.
- We send a WebSocket ping every 25 seconds; libraries answer automatically. No pong for 60 seconds closes the connection.
- A deploy sends reconnect then closes with 1012. Reconnect after retry_in_ms with backoff and your since; nothing inside the replay window is lost.
- Snapshot channels are capped per account at distinct targets (Business 100, Scale 400, Enterprise 1,000 symbols or coins across pressure, oi, funding and liqmap); above that you get snapshot_limit. A client that stops reading gets slow_consumer and close 1008. Usage is metered per key: connections, frames and connected seconds show on /dashboard/api. Snapshot reads do not count against your REST rate.
Examples
import asyncio, json, websockets # websockets >= 14
async def main():
async with websockets.connect(
"wss://bykaranteli.com/ws/v1",
additional_headers={"Authorization": "Bearer bk_..."},
) as ws:
print(json.loads(await ws.recv())["type"]) # hello
await ws.send(json.dumps({"op": "subscribe", "channel": "liquidations",
"symbols": ["BTCUSDT", "ETHUSDT"], "min_notional": 50000}))
async for raw in ws:
msg = json.loads(raw)
if msg["type"] == "event":
d = msg["data"]
print(msg["seq"], d["venue"], d["symbol"], d["side"], d["notional"])
elif msg["type"] == "reconnect":
break # reconnect after retry_in_ms with since=<last seq>
asyncio.run(main())import WebSocket from "ws";
const ws = new WebSocket("wss://bykaranteli.com/ws/v1", { headers: { Authorization: "Bearer bk_..." } });
ws.on("open", () => ws.send(JSON.stringify({ op: "subscribe", channel: "hl_whales", coins: ["BTC"], kinds: ["opened", "flipped"] })));
ws.on("message", (raw) => {
const m = JSON.parse(raw.toString());
if (m.type === "event") console.log(m.seq, m.data);
if (m.type === "snapshot") console.log(m.channel, m.key, m.hash);
});Errors
| Code | Where | Meaning |
|---|---|---|
| 401 missing / invalid / revoked | handshake | No usable key on the Authorization or x-api-key header; the body carries reason next to code (none, empty_authorization, empty_x_api_key, malformed_authorization, malformed_x_api_key or non_bearer_scheme). |
| 403 plan_required | handshake | Free and Terminal keys cannot open the stream. |
| 429 connection_limit | handshake | The account already holds its plan's connections. |
| 429 handshake_rate | handshake | More than 20 handshakes a minute from one address. |
| channel_not_in_plan | frame | The channel is above this plan (Builder: liquidations only). |
| symbols_required / too_many_symbols | frame | This channel or plan needs a named list, or the list is longer than the plan allows. |
| subscription_limit / snapshot_limit | frame | The connection holds its plan's subscriptions, or the account holds its plan's snapshot targets. |
| replay_not_in_plan / replay_window | frame | since needs Business or above; replay was not available. |
| bad_json / bad_op / bad_filter / unknown_channel / unknown_subscription | frame | The frame did not parse or referenced something unknown. |
| slow_consumer (close 1008) | connection | Your client stopped reading; reconnect and subscribe to less. |
| key_revoked / plan_expired (close 1008) | connection | Live connections re-check the key and plan every 5 minutes; a revoked key or a plan without the stream is closed. |
| plan_changed (reconnect, close 1008) | connection | The plan behind the key changed; reconnect and the new limits apply. |
| reconnect (close 1012) | connection | We are restarting; come back after retry_in_ms with since. |
Licence and attribution rules are the same as the REST API. Raw trades and order books are not streamed: exchanges publish those for free and our value is the cross-venue events and the model output.
Chart address keys
Every SuperChart view is a URL: the keys below select the symbol, the period, the panes, the layers and the studies, so a link opens exactly what you saw and an agent can hand a reader the chart that matches an answer (the MCP and API provenance carries it as chart_url). The share card at /api/og/chart reads the same keys.
| Key | What it selects | Example |
|---|---|---|
| s | Symbol, a USDT perp ticker; BTCUSDT when absent | s=ETHUSDT |
| p | Bar period, 1m to 1M (sixteen values, the API's SERIES_PERIODS) | p=4h |
| panes | Recorded panes under the price, comma list: oi, funding, funding_agg, cvd_perp, cvd_spot, liquidations, long_short, top_traders, rsi, premium, etf_flow, whale_net, borrow | panes=oi,funding,liquidations |
| ta | Built-in studies: MA, EMA, BOLL, SAR, VOL, RSI, MACD, KDJ | ta=VOL,MA |
| v | Venue of the open interest and funding panes (the 10-minute venue recorder) | v=bybit |
| r | Visible window, unix seconds from and to; absent means the live right edge | r=1759000000..1759100000 |
| lv, lvx, lvv | Options levels on (BTC and ETH), the expiry code, the venue (all or one of deribit, bybit, binance, okx, delta) | lv=1&lvx=31OCT26&lvv=deribit |
| ev | Macro event marks | ev=1 |
| heat, pr | The liquidation heatmap and the real prints behind and on the candles; 0 hides one | heat=1&pr=0 |
| pmin, pside | Print floor in USD and side: l longs liquidated, s shorts liquidated | pmin=100000&pside=l |
| hw, rv | Hyperliquid whale position marks, recorded event marks (bursts and $1M prints) | hw=1&rv=1 |
| vp, log, npoc | Visible-range volume profile, log price scale, naked points of control | vp=1&log=1&npoc=1 |
| aw | Anchored VWAP anchor, unix seconds of the candle | aw=1759000000 |
| cmp | Compare pane symbols, up to two, percent change next to the chart's symbol | cmp=ETHUSDT,SOLUSDT |
https://bykaranteli.com/chart?s=ETHUSDT&p=4h&panes=oi,funding&ta=VOL&heat=1&pr=1&lv=1&vp=1&aw=1759000000
The share card: /api/og/chart?s=ETHUSDT&p=4h&heat=1&pr=1&log=1&aw=1759000000&vp=1&lv=1 returns the view as a PNG card (candles, heatmap, prints, VWAP, profile and levels), cached for an hour.
MCP server · use this data inside AI assistants
bykaranteli-mcp is an official MCP (Model Context Protocol) server that exposes this API as 68 tools inside Claude, Cursor and any other MCP-capable assistant: market indices, funding heatmap and arbitrage, pressure scores, top movers, the symbols board, 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 account key (BYKARANTELI_API_KEY), Node 18+. Beyond the boards: get_series returns any recorded series by metric, symbol and period, parse_alert_text turns a sentence such as "BTC funding above 0.05%" into an alert, and the account tools list and change your own alerts and watchlist with the same key (the tools that change something are marked as writes, count on your plan and are recorded on your account). Every market answer carries a provenance block: the venues behind the number, full or sampled coverage, freshness and the proof page.
Paste https://mcp.bykaranteli.com as a custom connector (claude.ai: Settings > Connectors > Add custom connector). Same 68 tools, nothing to install. Under Authentication pick Sign in and leave any OAuth Client ID and Client Secret fields empty: the server supports OAuth 2.1 sign-in and claude.ai registers itself. A tool call without a key answers 401 with a WWW-Authenticate challenge that starts the sign-in. A key still works: pick "No sign-in" and add the request header x-api-key: bk_... (claude.ai custom connectors; Authorization: Bearer bk_... in other clients), or, in a client that cannot send headers (ChatGPT), use the address https://mcp.bykaranteli.com/?key=bk_... and treat it like a password. A free account carries 15,000 calls a month, API and MCP on one counter; Builder and above bring higher rates and member depth. Keys: https://bykaranteli.com/dashboard/api. New to this? The step-by-step guide: https://bykaranteli.com/guide/connect
claude mcp add bykaranteli -e BYKARANTELI_API_KEY=bk_... -- npx -y bykaranteli-mcp
{
"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)
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. A paid call reads the whole archive at the route's own row cap for $0.10. Builder keys and above run the same routes unpaid on the plan: Builder 1,000 catalog calls a month over the last 90 days at up to 5,000 rows a call, summary series only; Business 10,000 a month over the last 365 days at up to 20,000 rows, raw records included; Scale and Enterprise with no ceiling over the whole archive. The window counts from 00:00 UTC of its first day, and each included call also counts as 10 requests of the plan's monthly fair use. Raw records (individual liquidation events and the largest-print ranking, whale prints, Hyperliquid position events and hourly position records, order book snapshots, minute bars and per-venue market snapshots: liquidations-raw, liquidation-leaderboard-history, hl-whale-events, hl-positions-history, orderbook-history, spot-microstructure, venue-markets-history, whale-trades-raw) are included from Business up. A route's history_since is its first recorded row; an included call reads from the plan's window start (x-history-window-days). Past the ceiling (x402_allowance_used, HTTP 402), before the window (history_window, HTTP 403) or on a raw record route below Business (raw_tier_required, HTTP 403), the call is paid per call: send the account key as Authorization: Bearer with a prepaid key in x-api-key, or send the call without the account key and pay the 402 with a wallet. Bulk exports are on Business and above, outside the ceiling, and list the months that reach into the plan's window.
USDC on Solana mainnet or Base mainnet · price quoted per call · network fees covered by the facilitator
/api/x402/liqmap-levels$0.100Full multi-exchange liquidation map: modeled leverage clusters, real forceOrder levels, top magnets, funding and orderbook context.
/api/x402/options-flow$0.100Recorded Deribit and OKX tape: daily premium-flow history, the full big-print list with strike, expiry and implied volatility, the 1h, 4h and 24h bought, sold and net premium, the expiry, strike and venue breakdowns and the latest multi-leg structures.
/api/x402/flow-vpin$0.100VPIN order flow toxicity history: the 90 day daily track plus the last 500 volume buckets.
/api/x402/cot-history$0.100CFTC Commitments of Traders weekly history for crypto futures, assembled and normalised.
/api/x402/liquidations-raw$0.100Individual liquidation events from our own sockets on Binance, Bybit, OKX, Gate, HTX, dYdX, Aster, Lighter, Kraken Futures and GMX (Deribit delayed), with millisecond timestamps.
/api/x402/liquidation-leaderboard-history$0.100Per-day ranking of the largest single liquidation prints across Binance, Bybit, OKX, Gate, HTX, dYdX, Aster, Lighter, Kraken Futures and GMX: up to 100 ranks per finalized UTC day since 2026-08-29, with symbol, venue, side (SELL = a long was liquidated), price, quantity, notional and millisecond event time, filterable by symbol and venue. The free CSV carries the top 10 per day; the free page and API rank only the last 24 hours to 30 days.
/api/x402/networks-history$0.100Every recorded version of each asset and network row on every venue we record (20+ exchanges): deposit flag, withdrawal flag, withdrawal fee and minimum, with valid_from and valid_to, so withdrawal suspensions can be dated and their duration measured. The free endpoint serves only the current table.
/api/x402/leverage-tiers-history$0.100Every recorded version of each perpetual's leverage ladder on every venue whose ladders we read: tier, notional floor and cap, maximum leverage and maintenance margin, with valid_from and valid_to so leverage cuts can be dated. The free endpoint serves only the current ladder.
/api/x402/oi-history$0.100Five minute open interest history for the major perpetuals, normalised across symbols in one query.
/api/x402/tradfi-oi-history$0.100Five minute open interest history for the top-40 Binance TradFi perpetuals (US, HK, KR and CN equities, commodities, indices) in base units and USD, recorded on our side from 2026-09-02; the free /api/public/tradfi board only carries the live value.
/api/x402/tradfi-funding-history$0.100Settled funding rate history of every Binance TradFi perpetual on our board (stocks, indices, commodities), one row per settlement since 2026-05-31 or the contract's listing, kept current hourly; the free board only carries the last settled rate.
/api/x402/indicators-events$0.100Every day since 2012 on which a Bitcoin cycle indicator crossed a canonical band (Pi Cycle top cross and reset, Mayer Multiple 2.4 and 0.8, Puell Multiple 4 and 0.5, 200-week MA, 2-year MA x5, golden ratio 1.6/2/3/5, profitable days 95% and 50%), with the BTC close that day and the forward 7, 30, 90, 180 and 365-day returns. From recorded daily closes (Bitstamp 2012-2017, Binance since); the free endpoint carries the levels without the event tape or forward returns.
/api/x402/rsi-history$0.100Hourly RSI(14) rows on eight intervals for the top-400 crypto perps by volume plus every TradFi perp, the board behind /rsi.
/api/x402/hl-whale-events$0.100Every recorded position change of the 1000 largest Hyperliquid accounts: opened, closed, increased, reduced, flipped, with size before and after, entry and liquidation price.
/api/x402/hl-positions-history$0.100Every open position of the 1000 largest Hyperliquid accounts once an hour, recorded since 2026-09-30: address, coin, signed size, notional, entry and liquidation price, leverage and account equity, by coin, address and time.
/api/x402/positioning-history$0.100Hourly long/short ratios, top-trader ratios and taker flow for 30 perps on Binance, Bybit, OKX, Gate, HTX, Bitget and Kraken Futures, plus Bitfinex spot margin long and short position sizes and GMX and Jupiter Perps long and short open interest, recorded on our side.
/api/x402/bulk-liquidations$15Monthly gzip CSV files of every liquidation event we recorded (exchange, symbol, side, price, qty, quote_qty, event_time) across Binance, Bybit, OKX, Gate, HTX, dYdX, Aster, Lighter, Kraken Futures, GMX and Deribit: about 1.5 million rows per month since 2026-08-02. One paid call returns one-hour signed download links for every finalized month plus the current month to date; the per-call /api/x402/liquidations-raw route returns at most 20k rows a call.
/api/x402/bulk-derivatives$10Monthly gzip CSV files of the derivatives tables: 5-minute Binance open interest per symbol (oi-5m), every Binance USDT-M funding settlement of the month (funding-settlements) and the 10-minute multi-venue market snapshots (venue-snapshots: price, volume, OI and funding for every venue feed we poll, exchanges and DEXs). One paid call returns one-hour signed links for every finalized month plus the current month to date.
/api/x402/bulk-flow$10Monthly gzip CSV files of the flow tables: $1M+ aggressive prints from our own trade sockets (whale-trades), Hyperliquid top-1000 position change events (hl-whale-events), hourly long/short and taker statistics (positioning-hourly) and hourly RSI on eight intervals (rsi-hourly). One paid call returns one-hour signed links for every finalized month plus the current month to date.
/api/x402/jupiter-history$0.100Hourly Jupiter Perps history per market (SOL, ETH, BTC) and metric: long and short open interest from the on-chain custody state (long = locked tokens x mark price since 2026-09-30; long_oi_guaranteed_usd keeps the earlier measure), pool utilization, hourly borrow rates, custody AUM, price and 24h volume, plus JLP AUM, price and APR under market JLP; recorded from 2026-09-02. The free /api/public/jupiter returns the live board and 30 days of hourly OI.
/api/x402/market-profile-history$0.100Daily Market Profile per perpetual from our own minute bars: 30-minute TPO periods over price buckets a fixed fraction of the day's open, the point of control, the 70% value area (VAH, VAL), the initial balance (first hour UTC), the volume point of control and the per-bucket profile. One symbol per call, newest first; BTC from 2024, other symbols from their recorder's start. The free /api/public/market-profile serves 30 days without the profile column.
/api/x402/venue-share-history$0.100Hourly recorded liquidations per counted venue (Binance, Bybit, OKX, Gate, HTX, dYdX, Aster, Lighter, Kraken Futures, GMX and Deribit): long and short USD, events, largest single print, symbols, the hour's total over the counted venues and the venue's share of it; a venue's hours start on its first counted day. Newest first, recorded since 2026-08-29. The free /api/public/venue-share serves 24h, 7d, 30d and 30 daily rows.
/api/x402/solana-perps-history$0.100Hourly history of every Solana perp venue on the board but Jupiter (jupiter-history): Pacifica, Phoenix, GM Trade, Velocity and Bullet, per market and metric: one-sided open interest in USD (both sides on pool venues), 24h volume, hourly funding in percent of position size (empty where the venue publishes only an accumulator), mark, and Phoenix's raw funding accumulator; recorded from 2026-09-25. The free API returns the live board and seven days of one market.
/api/x402/turkey-premium-history$0.100Minute history of the Turkey premium index (from 2026-09-17): TRY and USDT reference prices from 11 Turkish spot venues (median mid of eligible books), eligible and observed venue counts, status, the Binance global USDT price, the ECB USD/TRY fix, premium in basis points, index_bps and the Turkey Premium Index; per-venue book rows with exchange=<venue>. The free /api/public/turkey-premium returns the live board and 15-minute points for up to 30 days.
/api/x402/desk-notes-history$0.100The desk notes archive since 2026-10-12: every note with its publish time, data time, news value, board, coins, English and X text and the zh, ru and ko translations; coin, card type and time filters.
/api/x402/insurance-fund-history$0.100Hourly insurance fund readings per pool on Binance, Bybit, OKX, Gate, MEXC, Bitfinex, Crypto.com, Delta Exchange, dYdX and Paradex: balance, USD value and contracts covered, with venue and asset filters.
/api/x402/tokenized-stocks-history$0.100Hourly readings per tokenized stock wrapper from xStocks, Robinhood Stock Tokens, Coinbase Tokenized Stocks, Binance bStocks, Ondo Stocks, Backpack Securities, Reality (Bitget), Superstate Opening Bell, Figure, Dinari dShares and Securitize (Exodus): price, reference, premium, liquidity and 24h volume, one wrapper per call with chain, issuer and day filters.
/api/x402/prepaid-key$10Prepaid 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.100Five minute spot order book depth snapshots per venue (Binance, Coinbase, Kraken, Bybit, OKX, Gate, MEXC, HTX, Bitget, Bitstamp, Gemini, Bitfinex, BingX, Crypto.com, Backpack, Binance US, Poloniex, LBank, Bitrue, XT, HashKey, DigiFinex, Bullish, WEEX, Deribit, Aster, Bitvavo, Independent Reserve, BtcTurk) for ten coins: 0.1% bins within 20% of mid, 2% depth per side, book reach, in_aggregate per row, every row recorded since 2026-09-15.
/api/x402/funding-history$0.100Settled funding rate history of every Binance USDT-M perpetual, crypto and TradFi, one row per settlement since 2026-05-31, kept current hourly: the series behind carry and basis work.
/api/x402/options-oi-history$0.100Daily options open interest by strike and expiry on Deribit, Bybit, Binance, OKX and Delta Exchange with mark implied volatility, traded notional where published, and a venue filter.
/api/x402/options-chain-history$0.100Hourly option chain rows per instrument on Deribit, Bybit, Binance, OKX and Delta Exchange, recorded since 2026-09-30: open interest, mark implied volatility, underlying and 24h volume, Deribit mark, bid and ask; currency, venue, expiry and time filters.
/api/x402/spot-microstructure$0.100Minute bars with the taker buy versus total quote split, pre-joined across venues; Binance rows recorded since 2024-09-28.
/api/x402/venue-markets-history$0.100Ten-minute venue snapshots of price, volume, open interest and funding for every perpetual, spot and TradFi perpetual feed we poll, every row recorded since 2026-08-25.
/api/x402/whale-trades-raw$0.100Every $1M+ aggressive print from our own trade sockets with side, price, quantity and notional, every row recorded since 2026-08-13.
# 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 with an account key, within your plan's limits.
Before the examples: your key
Every example below reads your account key from the BYKARANTELI_API_KEY environment variable and sends it as Authorization: Bearer. A free key comes with any verified account: create it on your API page. Keep the key on your server or in your scripts and never put it in browser code, where anyone who opens the page can read it. The Proof API needs no account key. The pay-per-call routes under /api/x402 need none either: an agent pays each call in USDC, and a Builder key or above runs them unpaid on its plan: 1,000 catalog calls a month over the last 90 days on Builder (summary series), 10,000 over the last 365 days on Business (raw records included), no ceiling over the whole archive on Scale and above; each included call also counts as 10 requests of the monthly fair use.
export BYKARANTELI_API_KEY=bk_...
No endpoint matches the filter.
/api/public/symbolsSymbols board: recorded 24h ticker, funding rate, open interest change and the derivatives pressure score for every tracked Binance USDT-M perpetual.
| Name | Type | Required | Description |
|---|---|---|---|
| sort | volume | change | funding | oi | pressure | no | Board order. Default volume. |
| top | 1-1000 | no | Rows to return. Default 200. |
| format | csv | no | Return the board as CSV instead of JSON. |
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/symbols?sort=change&top=20' | jq '.symbols[:5]'
{
"generatedAt": "2026-09-05T09:00:00.000Z",
"sort": "volume",
"totalSymbols": 512,
"symbols": [
{
"symbol": "BTCUSDT", "lastPrice": 109412.5, "change24hPct": 1.84,
"quoteVolume24h": 21874112034.1, "fundingRatePct": 0.0081,
"openInterestUsd": 12041233810.4, "oi24hPct": 2.1,
"pressureScore": 61, "pressureDirection": "LONG",
"pressureUpdatedAt": "2026-09-05T08:45:12.000Z"
}
]
}/api/public/market-profileMarket Profile of one Binance USDT-M perpetual from our own minute bars, one row per closed UTC day, newest first: poc (the price bucket with the most TPO marks), val and vah (the 70% value area), ib_low and ib_high (the first hour UTC), vpoc (the bucket with the most quote volume), open, high, low, close, tpo_total and periods. naked_pocs lists the points of control of the last 60 recorded days that no later closed day has traded through; profile_latest gives the latest day's [price, tpo, volume_usd] per bucket. 30-minute TPO periods, buckets of 0.05% of the day's open. Any key gets 30 days; up to 400 is member depth (a Terminal session or a Builder key and above). A symbol without recorded minute bars answers 404 no_profile. Every day's levels are in the market-profile-daily dataset; each day's full profile is on the paid route /api/x402/market-profile-history.
| Name | Type | Required | Description |
|---|---|---|---|
| symbol | BTC | BTCUSDT | no | Perpetual, with or without USDT. Default BTCUSDT. |
| days | 1-400 | no | Closed UTC days, newest first. Default 30; more than 30 needs member depth. |
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/market-profile?symbol=BTC&days=5' | jq '{symbol, recorded_since, latest: .days[0], naked_pocs}'/api/public/tradfi-gapsWeekend and overnight gaps of the stock, index and commodity perpetuals against our own record of the US cash close: the reference is the median venue price in the last 10-minute snapshot before 16:00 New York. window=weekend (default, the last 12 weekends: sat_12, sun_12, sun_20, pre_open, open) or night (the last 20 nights after a Monday to Thursday close: utc_04, pre_open, open); open is the first snapshot after 09:30 New York. Each checkpoint carries price (the venue median), venues, spread_pct (highest minus lowest venue over the median), gap_pct, lo_pct and hi_pct against the reference. Without symbol: kpis, summary per underlying (median absolute gap at the lead point and at the open, same_direction_pct once 5 windows hold both readings, median spread) and latest, the newest window with every underlying; with symbol=TSLA: that underlying's summary and every window. Recorded since 2026-08-25; no holiday calendar. Every window and checkpoint is in the tradfi-gaps dataset; the raw 10-minute venue snapshots are on the paid route /api/x402/venue-markets-history.
| Name | Type | Required | Description |
|---|---|---|---|
| window | weekend | night | no | weekend (default) or night. |
| symbol | TSLA | TSLAUSDT | no | Underlying such as TSLA, NVDA or XAU; a USDT suffix is dropped. Without it the answer is the summary and the latest window. |
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/tradfi-gaps?window=weekend&symbol=TSLA' | jq '.summary, .windows[0].symbols[0].points'
/api/public/pressureComposite 0-100 derivatives pressure score for every tracked Binance USDT-M perpetual (OI delta 1h/4h/24h + funding rate + basis). Direction-aware regimes.
| Name | Type | Required | Description |
|---|---|---|---|
| limit | 1-200 | no | Max rows. Default 60. |
| side | long | short | no | Filter by direction bias. |
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/pressure?limit=20&side=long' | jq '.items[:5]'
{
"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" ]
},
…
]
}/api/public/pressure/[symbol]Per-symbol pressure snapshot with live refresh if cache stale.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/pressure/BTCUSDT
/api/public/funding-arbCross-exchange funding rate spread for top symbols across 33 exchanges (Binance, OKX, Bybit, Gate.io, HTX, BingX, Bitget, MEXC, Kraken Futures, Hyperliquid, Aster, dYdX, ApeX, Backpack, Bitfinex, Bitmart, BloFin, BTSE, Crypto.com, Delta Exchange, Deribit, DigiFinex, Extended, HashKey, KuCoin, Lighter, Paradex, Phemex, Toobit, WEEX, WhiteBIT, WOO X and XT) with net-of-cost annualized APR.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/funding-arb | jq '.rows[:5]'
/api/liqmap/publicPublic LiqMap snapshot (24H): multi-exchange liquidation-level estimate for 201 major perpetuals (Binance, Bybit, OKX, Gate, HTX and Hyperliquid) with real liquidations overlaid. ?symbol=BTC..OP.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/liqmap/public?symbol=BTC' | jq '.real_levels.totals'
/api/public/heatmapFunding snapshot for a fixed set of large Binance USDT-M perpetuals: per symbol the current funding rate, the 24h open interest change and the 24h price change; ?format=csv returns the same rows as CSV.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/heatmap | jq '.rows[:5]'
/api/public/top-moversTop movers of the pressure board: the perpetuals with the largest absolute 24h open interest change (biggestOi24h), the most extreme funding rate (extremeFunding), the widest basis (widestBasis) and the highest pressure score (highestStress), each with its direction. ?format=csv returns the four lists as one CSV.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/top-movers | jq '.biggestOi24h[:5]'
/api/public/altseasonAltcoin Season Index: live reading, strongest and weakest large alts, recorded daily history.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/altseason | jq '.value'
/api/public/themesEight 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.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/themes | jq '.themes[] | {key, last, ret_30d_pct}'/api/public/factorsFactor board: every recorded metric in its historical band with the median 7-day BTC move that followed versus the base rate.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/factors | jq '.rows[:5]'
/api/public/borrow-ratesMargin borrow rates: the latest annualised rate per venue and asset (USDT, USDC, BTC, ETH and major alts on every venue whose borrow history we can read), 30 days of hourly series for the stablecoins and majors, and the funding minus borrow carry per venue. Recorded hourly.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/borrow-rates' | jq '.latest[:5], .carry[:3]'
/api/public/feesTrading fee schedules: base tier maker and taker per venue and market type (median across pairs where the venue prices per pair), read daily from each exchange's own fee endpoint, plus the fee change log.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/fees' | jq '.median_taker_perp, .rows[:5]'
/api/public/settlementsExpiry calendar and settlement prices: the next 60 days of dated future and option expiries across 53 venues' market lists, grouped by date, venue and underlying, plus the settlement prices recorded as dated futures deliver; recorded_venues counts the venues with a recorded price.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/settlements' | jq '.next_7d, .upcoming[:5], .recorded[:3]'
/api/public/venues/profileOne exchange, everything we record about it: contracts on file by type, basket open interest and average funding from the 10-minute venue recorder, leverage ladder summary, deposit and withdrawal network counts, base fee schedule, status uptime and the recent event log. ?venue=bybit; without a venue, the list of recorded venue ids. The JSON behind /venues/<venue>.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/venues/profile?venue=bybit' | jq '.instruments, .status, .events[:3]'
/api/public/withdrawalsDeposit and withdrawal networks on every venue we record, recorded daily as slowly changing rows: per asset and network the deposit flag, withdrawal flag, withdrawal fee and minimum, plus the log of suspensions and resumptions. Without filters: withdrawals paused right now, ranked. ?asset=USDT: every venue and network for that asset; ?venue=kucoin narrows.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/withdrawals?asset=USDT' | jq '.rows[:5]'
/api/public/leverage-tiersLeverage ladders per perpetual on every venue whose ladders we read, recorded daily as slowly changing rows: tier, notional floor and cap, maximum leverage, maintenance margin rate, plus the change log of leverage cuts and raises. ?symbol=BTC narrows to one base asset, ?venue=okx to one exchange; without filters you get the cross-venue overview.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/leverage-tiers?symbol=SOL' | jq '.rows[:5]'
/api/public/venues/marketsVenue layer aggregates across every perpetual and spot feed we poll (listed in coverage): total perp OI, DEX share, funding range, spot dispersion, stablecoin pegs; ?symbol=BTC for one coin's rows. The venues in oi_excluded_venues (WhiteBIT, BitMart) are listed but left out of the OI totals and the DEX share.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/venues/markets | jq '.symbols[:3]'
/api/public/venues/lead-lagWho moves first: one-minute return cross-correlations per venue pair and UTC day with the lead asymmetry.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/venues/lead-lag | jq '.pairs[] | {id, summary}'/api/public/options/surfaceIV surface by expiry and moneyness, per-expiry ATM / 25-delta put and call IV, skew and butterfly, constant-30d history; ?currency=BTC|ETH.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/options/surface?currency=BTC' | jq '{atm_30d, skew25_30d_pp}'/api/public/optionsOptions snapshot across Deribit, Bybit, Binance, OKX and Delta Exchange: OI walls, dealer gamma exposure, zero-gamma level, term structure, and each venue's share in venues_included. DVOL is Deribit's index.
| Name | Type | Required | Description |
|---|---|---|---|
| venue | all | deribit | bybit | binance | okx | delta | no | One venue's chain, or all (default) for open interest summed per expiry, strike and type with mark IV weighted by open interest. Anything else is a 400. |
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" "https://bykaranteli.com/api/public/options?venue=all" | jq '.assets.BTC | {venues_included, call_wall, put_wall}'/api/public/options/chainHourly options chain across Deribit, Bybit, Binance, OKX and Delta Exchange, recorded since 2026-09-30: per expiry the open interest in coins and USD with its 1 hour and 24 hour change, the ATM IV and its 24 hour change and max pain; per contract the open interest and its changes, the mark IV and its 24 hour change and Deribit's mark, bid and ask in coins; and the hourly ATM IV path of one expiry over the last 24 hours. A change counts only the venues present in both hours. Any key gets the 40 contracts with the largest open interest; strikes=all returns every contract with member depth (a Terminal session or a Builder key and above).
| Name | Type | Required | Description |
|---|---|---|---|
| currency | BTC | ETH | no | Underlying, BTC by default. Anything else is a 400. |
| venue | all | deribit | bybit | binance | okx | delta | no | One venue's chain, or all (default) summed per expiry, strike and type. Anything else is a 400. |
| expiry | DDMONYY | no | One listed expiry such as 30OCT26: narrows the contracts and the ATM IV path. A malformed or unlisted expiry is a 400. |
| strikes | top | all | no | top (default) or every contract; all needs member depth. |
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/options/chain?currency=BTC&venue=all' | jq '{hour, spot, front_expiry, expiries: .expiries[:3], strikes: .strikes[:3]}'/api/public/options-flowDeribit and OKX options tape recorded every 15 minutes: premium, strikes, put/call, block trades, venue per print; windows (1h, 4h and 24h bought, sold and signed net premium per option type), by_expiry, by_strike, by_venue and the latest multi-leg structures with their legs and a structure label.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/options-flow | jq '.assets.BTC | {prints_24h, call_premium_bought_24h_usd, put_premium_bought_24h_usd, block_share_24h}'/api/public/etfUS spot BTC, ETH, SOL and XRP 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).
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/etf | jq '{btc: .assets.BTC.latest_finalized, issuer: .issuer_check}'/api/public/flowOrder-flow toxicity (VPIN) per major perp from taker-signed minute bars: the current reading, its percentile over the last 90 days with the 90th percentile threshold, the 24h average and the bucket size. The daily history is on the paid route /api/x402/flow-vpin.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/flow | jq '.symbols.BTCUSDT | {vpin, percentile_90d, avg_24h}'/api/public/cotCFTC Commitments of Traders for Bitcoin futures, weekly, backfilled to 2018.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/cot | jq '.assets.BTC | {report_date, hedge_funds_net_contracts, institutions_net_contracts}'/api/public/eventsMeasured 5, 30 and 60-minute BTC reactions to FOMC statements (top level) and to CPI and jobs report releases (cpi, nfp), each with the next scheduled date, plus the dated macro calendar under events.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/events | jq '{fomc: .recent_reactions[:3], cpi_next: .cpi.next_release, nfp_next: .nfp.next_release}'/api/public/slippageLive execution slippage ladders by order size from real order books, recorded hourly.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/slippage | jq '.ladders[:3]'
/api/public/whalesWhale tape: $1M+ aggressive market prints from our own sockets with 24h aggregates and buy share.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/whales | jq '.window_24h'
/api/public/indicatorsBitcoin 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.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/indicators?points=0' | jq '.latest, .pi_cycle_crosses'
/api/public/rsiRSI heatmap: Wilder RSI(14) on eight intervals (15m to 1M) for the top-400 Binance USDT crypto perpetuals by volume plus every TradFi perp, with overbought and oversold counts per interval. ?symbol=, ?kind=crypto|tradfi and ?sort=<interval> filter and order.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/rsi?sort=4h' | jq '.summary, .rows[:5]'
/api/public/venues/oi-historyMulti-venue open interest history: hourly sum of perp open interest across every venue in our registry at the hour's most complete 10-minute snapshot (whitebit and bitmart excluded), the DEX share (the on-chain venues listed in dex_venues) and the current OI-weighted funding. ?days=1..90, default 30; recorded since 2026-08-21.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/venues/oi-history?days=7' | jq '.oi_weighted_funding_pct, .points[-1]'
/api/public/coverageCoverage 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.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/coverage | jq '.totals, .liquidations[:3]'
/api/seriesRecorded time series behind the SuperChart, one shape for every metric. Parameters: metric (price, volume, cvd_perp, cvd_spot, oi, funding, funding_agg, liquidations, long_short, top_traders, rsi, premium, etf_flow, borrow, whale_net), symbol (BTCUSDT), period (15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M; 1m, 3m, 5m, 10m with member depth), limit (up to 300 bars; up to 5,000 with member depth), to (ISO). Member depth comes with a Builder key or above, or with a Terminal membership signed in on the site; a Free or Terminal key gets the default depth and 403 on 1m, 3m, 5m, 10m. Without member depth, to works inside the newest 300 bars; an older to answers 403 history_member_only, except daily and coarser price bars. Every response names its source. Add venue=<id> (bybit, okx, gate, hyperliquid and every venue in the recorder) for price, open interest and funding from that exchange; Binance stays the default.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/series?metric=oi&symbol=BTCUSDT&period=1h&limit=200' | jq '.source, .points[-3:]'
/api/public/orderbookSpot order book depth for BTC, ETH, SOL, XRP, DOGE, ADA, LINK, AVAX, LTC and BNB: the books of Binance, Coinbase, Kraken, Bybit, OKX, Gate, MEXC, HTX, Bitget, Bitstamp, Gemini, Bitfinex, BingX, Crypto.com, Backpack, Binance US, Poloniex, LBank, Bitrue, XT, HashKey, DigiFinex, Bullish, WEEX, Deribit, Aster, Bitvavo, Independent Reserve and BtcTurk binned into 0.1% buckets within 20% 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. Each venue row carries in_aggregate: false marks a book we record but hold out of the sums and walls because its size is not corroborated; held_out lists those venues and aggregate_venues counts the summed ones. Raw per-venue snapshots on the paid route /api/x402/orderbook-history.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/orderbook?symbol=BTC&hours=6' | jq '.walls[:5], .venues'
/api/public/positioningPositioning board for the 30 most traded Binance USDT perps: each venue's own published long/short account and position ratios and taker flow on Binance, Bybit, OKX, Gate, HTX, Bitget and Kraken Futures, plus Bitfinex long and short margin position sizes on its spot margin book (margin borrowers, not perpetual accounts), GMX and Jupiter Perps long and short open interest in dollars (pool-based perpetual DEXes: a side split, not an account ratio), and CVD series (24h at 5m, 7d at 1h) for BTC, ETH and SOL. Hourly history on the paid route /api/x402/positioning-history.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/positioning?symbol=BTCUSDT' | jq '.rows[0]'
/api/public/deskDesk notes, newest first: short dated observations the desk writer (an AI model) wrote from ByKaranteli's own recorded derivatives data and checked against it before publishing, each with its publish time in UTC, the card's data time, the desk's 0 to 10 news value, the board it reads from, the coins it names and a permanent URL. Default the last 24 hours; ?day=YYYY-MM-DD for one UTC day, ?since=<iso> for up to 7 days back, ?type=<card> for one card type, ?lang=zh|ru|ko for a translation (a note without one comes back in English and says so), ?limit=1..100. The archive across days and languages is on /api/x402/desk-notes-history; the English text per note is in the free dataset desk-notes; RSS at /desk/feed.xml.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/desk?limit=5' | jq '.notes[] | {published_at, type, headline, url}'/api/v1/proofProof API of the BYK Data Layer (beta): every five minutes our derived data (composite funding, aggregate open interest, 5-minute liquidations, depth, premiums, pressure score) is sealed into a Merkle root, signed and written to Solana, once a day to Base. No key needed. The index lists the newest epochs with their chain links; /genesis, /authorization-log, /epochs/{sequence}, /epochs/{sequence}/records, /proofs/{sequence|latest}/{feed}/{asset} (leaf, audit path, manifest, signature, anchors), /witness-keys/{kind}/{n}, /documents/{hash} and /catalog return the exact bytes a verifier needs. Human page with an in-browser verifier: /proof. Data responses of /api/public/pressure, /api/public/premium (the Upbit kimchi rows), /api/public/orderbook and /api/public/turkey-premium carry byk_proof: the newest sealed record of the same computation (sequence, proof_url, sealed_value) and matches_this_value, which says whether the number next to it is the sealed one. The one-file independent verifier, which reads only Solana and Base: /byk-verify.mjs.
curl -s 'https://bykaranteli.com/api/v1/proof/proofs/latest/BYK.FUNDING.COMPOSITE.B/BTC' | jq '{sequence, result, value: .decoded.value_decimal, unit: .decoded.unit, leaf_index, path: (.audit_path | length), solana: .anchors.solana[0].links.explorer}'/api/public/jupiterJupiter 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).
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/jupiter?base=SOL&days=1' | jq '.markets[0], .history.points[-1]'
/api/public/solana-perpsSolana Perps board: every Solana perpetual venue we read (Jupiter, Pacifica, Phoenix, GM Trade, Velocity, Bullet), refreshed every 10 minutes. venues gives one-sided open interest (oi_usd, with oi_long_usd and oi_short_usd on the pool venues), 24h volume, market count, the median hourly rate with rate_kind (Jupiter: borrow_hourly, the pool's hourly borrow fee; every other venue: funding_hourly) and as_of, plus stale: true when a failed feed shows its last good reading; totals sums them; markets lists every market of every venue largest open interest first (instrument_type, mark, 24h change, open interest in USD with both sides where published, 24h volume, hourly rate in percent of position; null when the venue does not publish a number). ?venue=jupiter|pacifica|phoenix|gmtrade|velocity|bullet filters the markets; &symbol=SOL&days=1..30 adds the hourly history of one market on every venue but Jupiter (Jupiter history stays on /api/public/jupiter). Any key gets 7 days of history; more than 7 is member depth (a Terminal session or a Builder key and above). The full hourly set is on the paid route /api/x402/solana-perps-history, the midnight rows in the solana-perps-daily dataset.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/solana-perps?venue=phoenix&symbol=SOL&days=1' | jq '.totals, .venues, .markets[0], .history.points[-1]'
/api/public/hyperliquid-whalesHyperliquid whale tracker: the 1000 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); address=0x... keeps one account. Paid full event history on /api/x402/hl-whale-events.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/hyperliquid-whales?coin=BTC&events=1' | jq '.by_coin, .events[:5]'
/api/public/hyperliquid-positionsHyperliquid liquidation price map of one coin: the open positions of the 1000 largest accounts by equity placed at the liquidation price Hyperliquid reports for each, in bands of 0.25% of the mark. long (below the mark) and short (above) list the bands nearest first with price, notional_usd, positions and signed distance_pct; totals count every position, with without_liq_px for the cross margin positions that have no liquidation price; largest is the biggest band per side; model_comparison sets the LiqMap model's nearest cluster on each side next to the nearest tracked band (null off the LiqMap universe); coverage says how many of the 1000 accounts answered and when; history gives hourly long and short notional recorded since 2026-09-30. Per position rows on /api/x402/hl-positions-history.
| Name | Type | Required | Description |
|---|---|---|---|
| coin | string | no | Hyperliquid coin name, BTC by default; kPEPE style names are matched in any case. Anything else is a 400. |
| hours | integer | no | Hourly history, 24 by default and for every caller; up to 720 with member depth. |
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/hyperliquid-positions?coin=BTC' | jq '{coin, mark, coverage, largest, model_comparison, nearest_long: .long[:3], nearest_short: .short[:3]}'/api/public/tradfiTradFi 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.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/tradfi?market=EQUITY' | jq '.rows[:5]'
/api/public/liquidationsRecorded 24h liquidations by side, symbol and venue, the coverage kind of every venue, and a coverage-adjusted market estimate with its inputs.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/liquidations | jq '{recorded, market_estimate, by_exchange}'/api/public/liquidation-leaderboardLargest single liquidation prints of the last 24h, 7d or 30d across the counted venues (rank, symbol, venue, side, price, quantity, notional, time) and a 30-day session heatmap: weekday by UTC hour cells, hour and weekday totals, Asia, Europe and US shares.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/liquidation-leaderboard?window=7d&limit=10' | jq '{window, largest: .largest[:3], sessions: .sessions.sessions}'/api/public/tokenized-stocksTokenized stocks: onchain wrappers of xStocks, Robinhood Stock Tokens, Coinbase Tokenized Stocks, Binance bStocks, Ondo Stocks, Backpack Securities, Reality (Bitget), Superstate Opening Bell, Figure, Dinari dShares and Securitize (Exodus) per underlying (issuer, chain, price, premium to the real share, DEX liquidity and 24h volume, supply, holders, status), tokenized spot pairs on exchanges, the reference price and its session, the perp cross and board totals, refreshed every 10 minutes. Wrappers come from issuer sources only: Backed public API (xStocks), Robinhood assets API, Coinbase Tokenized Stocks API, Binance coin list plus contract fingerprint (bStocks), Ondo address CSV plus contract fingerprint, Jupiter verified token list (Backpack), Gate spot market list (gStocks, exchange only), Reality API plus identity check, Superstate API, Provenance restricted share marker (Figure), Dinari factory membership check (dShares) and Algorand asset record (Exodus share token, transfer agent Securitize). Each wrapper's price_source names the price that valued its supply dollars (reference: the share's reference price; issuer_oracle: the issuer's own price for the token; wrapper: its own pool or exchange price; null: no dollars) and totals.priced_by counts wrappers per level, unpriced included. ?underlying=TSLA, ?issuer=xstocks | robinhood | coinbase | bstocks | ondo | backpack | gstocks | reality | superstate | figure | dinari | securitize, ?chain=solana, ?top=1..200 (default 50); daily CSV tokenized-stocks-daily, hourly rows per wrapper on /api/x402/tokenized-stocks-history.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/tokenized-stocks?top=5' | jq '{supply_usd: .totals.supply_usd, premium_median_pct: .totals.premium_median_pct, rows: [.rows[] | {underlying, supply_usd, wrappers: [.wrappers[] | {issuer, chain, price, premium_pct}]}]}'/api/public/insurance-fundsExchange insurance funds on Binance, Bybit, OKX, Gate, MEXC, Bitfinex, Crypto.com, Delta Exchange, dYdX and Paradex: the latest hourly reading per venue (USD total, per asset, 24h and 7d change, the fund against the venue's perpetual open interest), every pool, and daily closes per venue. ?venue=binance | bybit | okx | gate | mexc | bitfinex | cryptocom | delta | dydx | paradex, ?days=1..366, ?pools=0 drops the pool rows; daily CSV insurance-funds-daily, hourly pool rows on /api/x402/insurance-fund-history. A venue that stops publishing is carried at its last reading for up to 48 hours and named in stale_venues, then dropped from the total and named in missing_venues; a total needs Binance, Bybit, OKX and Gate.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/insurance-funds?days=7&pools=0' | jq '{total_usd, change_24h_pct, venues: [.venues[] | {venue, total_usd, coverage_pct}]}'/api/public/incidentsAuto-detected liquidation cascades with size, side, coins and price path.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/incidents | jq '.incidents[0]'
/api/public/oiOpen interest board for 10 major perps at 5-minute resolution: per symbol the OI in USD, the 24h change in open interest and in price, and the regime read (longs_building, shorts_building, deleverage_down, deleverage_up, quiet); last_bar_utc stamps the newest bar.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/oi | jq '.symbols[:5]'
/api/public/correlations30-day rolling Pearson correlation matrix of daily returns across the top perps.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/correlations | jq '.symbols'
/api/public/chargePsiCharge liquidity-state model: score, state and the published year-by-year scorecard.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/charge | jq '{score, state}'/api/public/quantumQuantum-exposed Bitcoin supply measured daily from our own node, with provenance hashes.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/quantum | jq '.latest | {exposed_btc, base_height}'/api/public/macroThe macro set from official sources through FRED: policy rates, inflation and jobs, central bank balance sheets, the Treasury curve and the Fed broad dollar index, plus our global liquidity composite (formula under composite) and stablecoin supply; latest, series, groups and definitions (label, unit, cadence, source); ?days=365.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/macro?days=30' | jq '{composite: .composite.formula, liquidity: .latest.global_liquidity_busd, cpi: .latest.fred_cpi_yoy_pct, groups: [.groups[] | .key]}'/api/public/networkBitcoin network health from our own node: hashrate, difficulty, fees, mempool; ?days=365.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/network | jq '.latest'
/api/public/listingsNew and delisted perpetual contracts across six exchanges, scanned hourly; ?days=30.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/listings | jq '.listed[:5]'
/api/public/contextBand-conditioned context for any recorded metric: where today sits and what followed; ?metric=coinbase_premium_pct.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" 'https://bykaranteli.com/api/public/context?metric=coinbase_premium_pct' | jq '{metric, today_value, interpretation}'/api/public/smart-money/[symbol]Smart-money read for one symbol from recorded positioning.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/smart-money/BTCUSDT | jq '.'
/api/v1/public/datasets/[name]43 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
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/v1/public/datasets/daily-market.csv | head -5
/api/v1/usageWhat the calling key's account has used against its plan, the same figures the x-quota headers carry: plan (tier, label), rate.per_minute, monthly (limit, used, remaining, reset, state: ok, slow_lane, refused_until_reset or unlimited), today (calls on every key of the account), keys (active, limit) and x402 (included_calls_per_month, included_used_this_month, applies, requests_per_call, history_days with null for the whole archive, rows_per_call, raw_records_included; when applies is false, requests_per_call, history_days and rows_per_call are null and raw_records_included is false). Needs an account key: a call with none answers 401 key_required.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/v1/usage | jq '{plan, monthly, today}'/api/public/indicesAll 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).
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/indices | jq '.euphoria.score, .fearGreed.today.valueRaw'
/api/public/euphoriaRetail Euphoria Index standalone. Composite of F&G + trending memes + BTC dominance + top-30 crowd positioning.
curl -s -H "Authorization: Bearer $BYKARANTELI_API_KEY" https://bykaranteli.com/api/public/euphoria | jq '{score, regime, explainer}'/embed/pressure/[symbol]Embeddable HTML widget showing current pressure score for a symbol. Use in iframe. Dark theme, no tracking.
<iframe src="https://bykaranteli.com/embed/pressure/BTCUSDT" width="340" height="200" style="border:0"></iframe>
/embed/liquidationsEmbeddable 24h liquidations widget: long/short totals, event count, top symbols, largest print. Gallery and terms at /widgets.
<iframe src="https://bykaranteli.com/embed/liquidations" width="100%" height="300" style="border:0"></iframe>
/embed/orderbook/[symbol]Embeddable spot order book depth widget for one of the ten tracked coins: 2% depth, imbalance, walls, mirrored bin strip.
<iframe src="https://bykaranteli.com/embed/orderbook/BTC" width="100%" height="380" style="border:0"></iframe>
/embed/positioning/[symbol]Embeddable long/short positioning widget for one perp (Binance, Bybit, OKX ratios and taker flow).
<iframe src="https://bykaranteli.com/embed/positioning/BTC" width="100%" height="200" style="border:0"></iframe>
/embed/whalesEmbeddable Hyperliquid whales widget: long versus short notional of the top-1000 accounts per coin.
<iframe src="https://bykaranteli.com/embed/whales" width="100%" height="330" style="border:0"></iframe>
/embed/rsiEmbeddable RSI(14) breadth widget: overbought/oversold counts per interval plus the extremes on ?interval.
<iframe src="https://bykaranteli.com/embed/rsi?interval=4h" width="100%" height="340" style="border:0"></iframe>
Embed example
Drop this into any HTML page: the widget needs no key, shows the latest reading on every page view and carries its attribution link inside the frame. Every widget is listed on /widgets. For your own layout, call the API from your server with your key and render the numbers there; never call it from browser code, where every visitor could read the key.
<iframe src="https://bykaranteli.com/embed/liquidations" width="100%" height="300" style="border:0;border-radius:12px;background:#0b0e14" loading="lazy" title="Liquidations 24h"></iframe>
Rate limit and quota headers
Read these on every keyed answer instead of counting calls yourself; GET /api/v1/usage returns the same figures for the whole account in one call.
| Header | When it comes | What it means |
|---|---|---|
| x-ratelimit-limit | every keyed answer, and 429 rate_limited | Requests a minute this key may make: the plan's rate, or the Free rate while the key is in the slow lane. |
| x-ratelimit-remaining | every keyed answer | Requests left in the current one minute window; 0 on a 429. |
| x-quota-limit | keyed answers on a plan with a monthly figure | Requests a calendar month for the account, every key counted together. |
| x-quota-used | as x-quota-limit | Requests the account has made this calendar month (UTC). |
| x-quota-reset | as x-quota-limit | ISO time the monthly count starts again: the first instant of the next UTC month. |
| x-quota-state | only past a paid plan's fair-use ceiling | slow: the key answers at the Free rate (30 a minute) until the month resets; it is never stopped. |
| retry-after | every 429, and 503 lookup_unavailable | Seconds to wait before the next try. Honor it: retrying sooner only adds refusals. |
| x-bk-tier | every answer through the key gate | The plan the answer was served under (free for browsers on this site). |
| x-history-window-days | included x402 catalog answers on an account key, except liqmap-levels, options-flow and flow-vpin | Days back the plan's catalog window reaches, counted from 00:00 UTC, or all for the whole archive. |
| x-history-row-cap | as x-history-window-days, not on bulk exports | Most rows one included call returns on the plan. |
| x-x402-allowance-limit | included catalog answers when the plan or the account has a monthly ceiling | Included catalog calls a calendar month for the account. |
| x-x402-allowance-used | as x-x402-allowance-limit | Included catalog calls the account has made this calendar month (UTC). |
| x-x402-allowance-reset | x402_allowance_used (HTTP 402) | ISO time the catalog count starts again: the first instant of the next UTC month. |
Errors
Read the HTTP status first, then the code. Answers from the key gate carry { error: '<sentence>', code: '<code>' } (401 key_required adds reason: none, empty_authorization, empty_x_api_key, malformed_authorization, malformed_x_api_key or non_bearer_scheme); answers from a route carry { ok: false, error: '<code>', message }. The x402 plan answers (x402_allowance_used, history_window, raw_tier_required, tier_required, payment_required_for_credit) carry { error, code, tier, price_usd, docs }, plus upgrade on every code but payment_required_for_credit, and mean the call can be paid per call. The member routes (/api/member/*), /api/v1/usage, /api/v1/me/watchlist and the stream handshake read the same parser: a key header that is present but carries no usable key answers 401 with the same reason values. A 402 from /api/x402/* carries credential_reason and credential_hint when a key header was present but unusable (an empty header, a non-Bearer scheme, or a prepaid key in Authorization instead of x-api-key); a malformed key value there answers 401 key_required with reason, as on every other route.
| HTTP | Code | When | What to do |
|---|---|---|---|
| 401 | key_required | A program called a keyed route and sent no account key, or a key header that was empty, not a full key (the bk_... placeholder, the prefix from the key list, an unset variable) or not in the Bearer scheme; reason in the body names which. | Create a free key on /dashboard/api and send it as Authorization: Bearer. |
| 401 | invalid_key | The key is unknown or was revoked, or its account is inactive. | Check the key on /dashboard/api; create a new one if it was revoked. |
| 401 | wrong_key_type | A prepaid bk_live key was sent to an account route. | Prepaid keys pay per call on /api/x402/*; send your account key here. |
| 403 | email_unverified | The account that owns the key has not verified its email. | Verify the email, then retry with the same key. |
| 429 | rate_limited | The key went over its requests a minute. | Wait retry-after seconds; spread the calls or move up a plan. |
| 429 | monthly_quota_exceeded | A Free or Terminal account used its monthly requests. | Wait for x-quota-reset, or move up a plan. |
| 429 | fair_use_slow_lane | A paid account past its fair-use ceiling went over the Free rate. | Wait retry-after seconds; the full rate returns when the month resets. |
| 429 | rate_limited (reason hammer_brake) | The address took 1,000 answers of 429 on /api/* in ten minutes, or 10,000 in a day with at least one in the last ten minutes: it kept calling after the quota or rate answers. The origin pauses it for an hour. | Stop at the first 429 and wait retry-after seconds (3600 here); the pause lifts on its own. |
| 503 | lookup_unavailable | The key check failed on our side. | Retry after retry-after seconds; the call was not counted. |
| 400 | unknown_venue, unknown_currency, unknown_metric, invalid_symbol | A query parameter is outside the accepted values. | Fix the parameter against the route's entry on this page. |
| 404 | not_available | The route has no reading for that symbol, or the symbol is retired. | Check the symbol; a retired one names its successor in the answer. |
| 503 | unavailable, temporarily_unavailable | The data behind the route could not be read just now. | Retry in a minute. |
| 402 | (x402 payment terms) | A /api/x402/* route was called with no payment and no account key. | Pay with an x402 client, send a prepaid bk_live key in x-api-key, or use a Builder key or above. |
| 402 | (x402 payment terms) with credential_reason | A key header was present but carried nothing usable (empty, a non-Bearer scheme, or a prepaid key in Authorization instead of x-api-key); the 402 names it in credential_reason and credential_hint. A header whose value is not a key at all answers 401 key_required with reason instead. | Send the account key as Authorization: Bearer bk_... and a prepaid key in x-api-key, or pay the 402 with a wallet. |
| 402 | x402_allowance_used | An account key went past its plan's monthly catalog ceiling (or a figure ByKaranteli set for the account); the body carries limit, used and reset. | Pay per call: send the account key as Authorization: Bearer with a prepaid key in x-api-key, or send the call without it and pay with a wallet; or move up a plan. |
| 402 | payment_required_for_credit | An account key called /api/x402/prepaid-key. | Prepaid credit is bought: pay with a wallet or an existing prepaid key. |
| 403 | tier_required | The key's plan does not include the x402 catalog (Free, Terminal) or bulk exports (below Business). | Pay per call (a prepaid key in x-api-key with the account key in Authorization: Bearer, or a wallet without the account key), or move up a plan. |
| 403 | history_window | An account key asked for rows before its plan's history window (a from, to or days earlier than x-history-window-days); the body carries history_days and window_start. | Ask from window_start on, pay per call for the whole archive (a prepaid key in x-api-key with the account key in Authorization: Bearer, or a wallet without the account key), or move up a plan. |
| 403 | raw_tier_required | A key on a plan below Business called a raw record route (liquidations-raw, liquidation-leaderboard-history, hl-whale-events, hl-positions-history, orderbook-history, spot-microstructure, venue-markets-history, whale-trades-raw). | Pay per call (a prepaid key in x-api-key with the account key in Authorization: Bearer, or a wallet without the account key), or move to Business. |
API changes are marked api and Breaking in the changelog.
Fair use
- Rate limit is 30 requests per minute per key on the Free API plan (60 on Terminal, 300, 1,200 and 3,000 on Builder, Business and Scale), plus 15,000 requests per calendar month on free keys and 150,000 on Terminal keys (429 monthly_quota_exceeded past it from 2026-09-25). Builder, Business and Scale carry fair-use ceilings of 1,000,000, 3,000,000 and 10,000,000 a month: past them a paid key is never stopped and answers at the Free rate (30 a minute) until the month resets. Every keyed response on a plan with a monthly figure carries x-quota-limit, x-quota-used and x-quota-reset; x-quota-state: slow marks an answer from the slow lane. An included x402 catalog call counts as 10 requests here, next to the plan's catalog ceiling (1,000 a month on Builder, 10,000 on Business, none on Scale and above). Browsers on the site are limited per IP. Above the limit you get 429 with retry-after.
- Data is read-only. No PII or trading actions exposed.
- Attribution: a visible link back to bykaranteli.com or the source page (e.g.
/symbols) is appreciated when embedding. - Personal and research use with attribution is free. Commercial use of the data we compute needs the Business plan; derived redistribution needs Scale; raw records and other third-party data are for your own use on every plan. Rebranding our numbers as your own in-house backtest is never allowed.
- Scraping internal routes (
/dashboard/*,/api/admin/*,/api/member/*) is blocked and monitored. Stick to/api/public/*.
Not investment advice. The numbers returned are recorded market data and derived indicators, not a recommendation to trade. Market data describes the past and does not predict future prices.