Free API
Sharpe Terminal exposes public REST endpoints at https://www.sharpe.ai/api/* that return JSON data with no API key required. These are the same endpoints that power the Sharpe Terminal frontend, cached at the edge from 1 minute to 1 hour depending on the dataset, and open to anyone. The cache table at the bottom of this page lists the exact TTL per endpoint group.
For higher rate limits, request tracking, and a stable versioned contract,
use the authenticated API at
https://www.sharpe.ai/api/v1/*. The free endpoints below are best suited for
dashboards, research scripts, and lightweight integrations.
Free endpoints return raw JSON without the v1 envelope (no data / meta wrapper): the response body is the data. The authenticated v1 API wraps responses in { data, meta } and adds pagination cursors and request IDs.
Every free endpoint on this page except futures (/api/futures/*) says how fresh its answer is. A JSON-object body carries the freshness fields (as_of, stale_after, freshness_sla_seconds, freshness_status, runtime_status, and the rest) in its meta key, merged into a meta the body already has, whose own keys keep their values. Every answer, bare arrays included, carries them as X-Data-As-Of, X-Data-Stale-After, X-Data-Stale, X-Data-Status (fresh, stale, degraded or fallback) and X-Freshness-Sla-Seconds headers, plus X-Request-Id. Errors are problem+json bodies (errors) with an error string beside detail.
Browser access (CORS)
Every free endpoint on this page answers cross-origin browser requests, so the fetch() examples below run from any page:
Access-Control-Allow-Origin: *on every responseOPTIONSpreflights answered with204andAccess-Control-Allow-Methods: GET, HEAD, OPTIONS- Data-provenance headers such as
X-Data-Source,X-Data-Stale,X-Data-As-Of,X-Data-Stale-After,X-Data-Status,X-Data-Coverage,X-Data-Fallback,X-Data-Partial,X-Data-Missing,X-Data-Venues,X-Freshness-Sla-Seconds,X-Sharpe-Data-State,X-Request-IdandRetry-Afterare listed inAccess-Control-Expose-Headers, so browser code can read them
Two limits are deliberate. Access-Control-Allow-Credentials is never sent, so cookies are never part of a cross-origin call. And the authenticated /api/v1/* API sends no CORS headers at all: calling it from a browser would expose your API key in page JavaScript, so keep v1 requests on your server.
Derivatives
Funding rates
Returns current, accumulated, or historical funding rates across 32 perpetual exchanges.
- Name
type- Type
- string
- Description
One of
current,accumulated,history. Defaults tocurrent.
- Name
coin- Type
- string
- Description
Asset ticker (e.g.,
BTC,ETH), or the coin's full name (bitcoinresolves toBTC). Required for history mode, optional elsewhere. Names an asset: every contract of it comes back, lot spellings included (PEPEalso returns the1000PEPEandKPEPEcontracts; rows carryasset_idandlot_multiplier). Comma-separate for several coins. A value no perpetual has ever settled returns a 400 naming what was tried, not an empty array; see/api/funding/coinsfor every ticker carried. Coins that have been delisted everywhere still resolve, so their history stays queryable.
- Name
exchange- Type
- string
- Description
Filter to a single venue. Accepts the slug (
gate-io), the display name (Gate.io), or the ccxt id.
- Name
margin- Type
- string
- Description
Collateral convention:
linearorinverse. Unfiltered by default.
- Name
asset_class- Type
- string
- Description
One of
crypto,equity,commodity,fx,index. Unfiltered by default.
- Name
days- Type
- number
- Description
Lookback days for history mode. Defaults to
30, clamped at1095. History responses report what they actually cover inX-Requested-Start,X-Coverage-Start,X-Coverage-CompleteandX-Days-Clamped, so a coin with less history than you asked for is visible rather than silent.
- Name
limit- Type
- number
- Description
Maximum rows per page. Combine with
cursorto page the full book.
- Name
cursor- Type
- string
- Description
Opaque cursor from the previous response's
pagination.cursor.
- Name
max_age_h- Type
- number
- Description
Optional maximum row age for
currentresponses. Omit it for the backwards-compatible unbounded snapshot; terminal views request24hours. Current rows includeage_seconds,is_stale,freshness_sla_seconds, anddata_sourcemetadata, andrate_8handapr(the rate on the 8-hour basis and annualized, from the row's own interval).
The route also takes the type=current parameters sort, extremes, min_oi_usd, stats and summary described on the funding rates page.
Request
curl -G https://www.sharpe.ai/api/funding/rates \
-d type=current
Available funding coins
Returns every distinct base coin in the current funding-rate book with a display name and a same-origin logo path, ordered by symbol. Feeds coin pickers without downloading the full funding book. name and logo_url are null when no metadata exists.
No parameters required.
Request
curl https://www.sharpe.ai/api/funding/coins
Futures data
Returns chart data for perpetual futures: open interest, funding rates, liquidations, long/short ratios, basis, volume, and more.
A payload above 1,500 rows is aggregated into time buckets per venue (1 hour when the rows span under 7 days, 4 hours under 30 days, else 1 day). Aggregated OHLCV rows carry an optional volume_usd: each source candle's volume × close, summed over the bucket (null when no candle had a positive volume and close). Use it rather than volume × close, which prices the whole bucket at its last close.
- Name
chart- Type
- string
- Description
Chart type. One of
perp-dislocation,funding-cost,crowding-risk,flow-confirmation,carry-curve,perpetual-price,funding-rate,oi-snapshot,oi-change,oi-daily-change,oi-stacked,oi-volume,liquidations,annualized-basis,term-structure,long-short-ratio,top-trader-ls,volume-snapshot,volume-history,cvd,returns-session,returns-heatmap,returns-hour,returns-day.
- Name
coin- Type
- string
- Description
Asset ticker. Defaults to
BTC.
- Name
timeframe- Type
- string
- Description
One of
1W,2W,1M,3M,6M,1Y,3Y. Defaults to3M.
- Name
exchanges- Type
- string
- Description
Comma-separated exchange IDs (e.g.,
binance,bybit,okx).
Request
curl -G https://www.sharpe.ai/api/futures/data \
-d chart=oi-snapshot \
-d coin=BTC \
-d timeframe=1M
Available futures coins
Returns the list of coins with available futures data, including which data types each coin supports.
No parameters required.
Request
curl https://www.sharpe.ai/api/futures/coins
Arbitrage
Cross-exchange arbitrage
Returns one pair per asset, executable pairs first by net APR after both
venues' taker fees and the adverse entry spread (a favourable spread is
never credited), then indicative pairs with an indicativeReason.
- Name
exchanges- Type
- string
- Description
Comma-separated exchange IDs. Returns all exchanges by default.
Spot-perp arbitrage
Returns spot-perp basis trade opportunities: go long spot and short perp (or vice versa) to capture funding.
- Name
exchange- Type
- string
- Description
Exchange ID or
all. Defaults toall.
- Name
direction- Type
- string
- Description
Perpetual-leg direction:
shortfor positive funding capture,longfor negative funding capture, orall. Defaults toall.
- Name
view- Type
- string
- Description
rows(default): the bare array of rows.grid: the terminal's own projection,{ view, count, columns }, one array per field the board grid renders, in board order (~0.9 MB against ~2.6 MB of rows).
Both boards take the parameters of their v1 twins too: minOiUsd, limit and cursor on spot-perp, assetClass, minOiUsd, minVolUsd, limit and cursor on cross-exchange; the body stays a bare array, a page of it when either paging parameter is given. Both are composed every 5 minutes by a scheduled job and are stale after 10 minutes, and both send X-Data-Missing (each configured venue that is not a quoted member, Venue:reason) and X-Data-Venues (the venues a filter may offer: a venue that is not live, or whose funding rows are all past the funding SLA, is left out).
Request
curl https://www.sharpe.ai/api/arbitrage/cross-exchange
Request
curl -G https://www.sharpe.ai/api/arbitrage/spot-perp \
-d direction=long
Market data
Heatmap
Returns treemap data with tokens sized by market cap and colored by performance. Supports 36 category slugs: the legacy top-100 slug returns the Top 50 universe, alongside 15 narratives and 20 ecosystems.
- Name
category- Type
- string
- Description
Category slug. Examples:
top-100,defi,layer-1,artificial-intelligence,meme-token,ethereum-ecosystem,solana-ecosystem. Defaults totop-100.
- Name
mode- Type
- string
- Description
One of
coins,narratives,ecosystems. Defaults tocoins.
Request
curl -G https://www.sharpe.ai/api/heatmap/data \
-d category=defi
Correlation matrix
Returns an NxN Pearson correlation matrix for any combination of crypto assets and TradFi instruments.
- Name
period- Type
- string
- Description
One of
30d,90d,1y,3y. Defaults to30d.
- Name
ids- Type
- string
- Description
Comma-separated asset IDs. Crypto: canonical asset IDs (
bitcoin,ethereum). TradFi: short IDs (sp500,gold,nvda). Max 10. Defaults tobitcoin,ethereum,solana,sp500,gold.
Request
curl -G https://www.sharpe.ai/api/correlation/matrix \
-d period=90d \
-d ids=bitcoin,ethereum,solana,sp500,gold
Correlation history
Returns rolling correlation windows (30D, 60D, 90D) between two assets over time.
- Name
asset1- Type
- string
- Description
First asset ID (e.g.,
bitcoin).
- Name
asset2- Type
- string
- Description
Second asset ID (e.g.,
sp500).
- Name
period- Type
- string
- Description
Lookback period. One of
30d,90d,1y,3y. Defaults to1y.
Request
curl -G https://www.sharpe.ai/api/correlation/history \
-d asset1=bitcoin \
-d asset2=sp500 \
-d period=1y
Correlation on-demand
Fetches price data for a coin that is not already in the correlation database, then computes correlations against selected assets.
- Name
coinId- Type
- string
- Description
CoinGecko asset ID or supported TradFi ID to compute on demand, for example
sharpe-ai.
- Name
period- Type
- string
- Description
One of
30d,90d,1y,3y. Defaults to30d.
- Name
against- Type
- string
- Description
Comma-separated comparison asset IDs. Max 20.
Request
curl -G https://www.sharpe.ai/api/correlation/on-demand \
-d coinId=sharpe-ai \
-d period=30d \
-d against=bitcoin,ethereum,solana
Price prediction
Returns deterministic directional scores with sub-signal breakdowns and optional volatility-scaled heuristic scenarios. Legacy modelConfidence and forecast confidence fields measure signal agreement, not probability.
- Name
coin- Type
- string
- Description
Asset slug (e.g.,
bitcoin,ethereum). Omit for all coins.
- Name
coingeckoId- Type
- string
- Description
CoinGecko ID for live scoring of a non-indexed coin. Use with
symbolandname.
- Name
symbol- Type
- string
- Description
Ticker symbol for live scoring of a non-indexed coin.
- Name
name- Type
- string
- Description
Display name for live scoring of a non-indexed coin.
Request
curl -G https://www.sharpe.ai/api/price-prediction/data \
-d coin=bitcoin
Price prediction search
Searches indexed and CoinGecko-backed assets for price prediction candidates.
- Name
q- Type
- string
- Description
Search query from 1 to 100 characters. At least 2 searchable characters are required after sanitization.
Request
curl -G https://www.sharpe.ai/api/price-prediction/search \
-d q=bitcoin
Gem finder
Returns market-ranked token rows with price, market cap, nullable FDV and FDV/MCap ratio, volume, nullable price changes, ATH metrics, exchange availability, and a preferred chain scope. Ambiguous same-ticker assets do not receive symbol-only exchange attribution, and syncStatus exposes degraded enrichment coverage. This endpoint does not return a proprietary score or wallet signal.
No parameters required.
A cache/database read failure returns 503 (problem+json,
Retry-After: 30); a readable cache with no populated row returns a normal
empty dataset (never cached).
Request
curl https://www.sharpe.ai/api/gem-finder/data
Categories
Narratives
Returns analytics for 30 crypto narratives: market cap, volume, performance, social sentiment, derivatives positioning, and correlations.
- Name
narrative- Type
- string
- Description
Narrative ID for detail view (e.g.,
defi,ai-agents,rwa). Omit for the full list.
- Name
historical- Type
- string
- Description
Return historical snapshots. Accepts calendar/time-window values such as
24h,7d,30d,90d,1y, plus1W,1M,3M,6M,MTD,YTD, and3Y.
- Name
correlation- Type
- string
- Description
Set to
trueto return the narrative correlation matrix plus explicitcoverageandavailableTimeframesmetadata. Partial lookbacks are never relabeled as the requested full window.
- Name
timeframe- Type
- string
- Description
Timeframe for correlation and history helper modes. Defaults to
1Mwhere applicable.
- Name
funding_history- Type
- string
- Description
Narrative ID for per-token funding history heatmap rows.
- Name
token_volume- Type
- string
- Description
Narrative ID for latest token volume with 10-day rolling average.
- Name
token_history- Type
- string
- Description
Narrative ID for per-token market cap, volume, and open-interest history.
- Name
chart- Type
- string
- Description
Historical metric selector, for example
market-cap,volume, orfunding-rate.
- Name
mindshare_history- Type
- string
- Description
Set to a narrative ID to return narrative mindshare snapshots.
The list also takes the v1 ranking parameters: sort=-change24h (or change24h) orders it by 24h change with a missing change last, and top=N / bottom=N add the N highest / lowest.
Request
curl https://www.sharpe.ai/api/narratives/data
Ecosystems
Analytics for 25 blockchain ecosystems, including Ethereum, Solana, BNB, Arbitrum, and Base. Includes TVL data from DeFi Llama.
- Name
ecosystem- Type
- string
- Description
Ecosystem ID (e.g.,
ethereum,solana,arbitrum). Omit for the full list.
- Name
historical- Type
- string
- Description
Snapshot timeframe. Accepts values such as
24h,7d,30d,90d,1y, plus1W,1M,3M,6M,MTD,YTD, and3Y.
- Name
correlation- Type
- string
- Description
Set to
trueto return the ecosystem correlation matrix plus explicitcoverageandavailableTimeframesmetadata. Partial lookbacks are never relabeled as the requested full window.
- Name
timeframe- Type
- string
- Description
Timeframe for correlation and history helper modes. Defaults to
1Mwhere applicable.
- Name
tvl- Type
- string
- Description
Set to
trueto include TVL data.
- Name
chart- Type
- string
- Description
Historical metric selector, for example
market-cap,volume, ortvl.
- Name
mindshare_history- Type
- string
- Description
Set to an ecosystem ID to return ecosystem mindshare snapshots.
- Name
excludeNative- Type
- string
- Description
Set to
trueto exclude the native token from aggregate metrics.
Request
curl -G https://www.sharpe.ai/api/ecosystems/data \
-d ecosystem=solana \
-d tvl=true
Memecoins
Track grouped memecoin categories across aggregate, theme, chain, and launchpad views with market share, freshness, coverage, and performance fields.
- Name
narrative- Type
- string
- Description
Narrative slug (e.g.,
dog-coins,cat-coins,frog-coins,ai-memes,trump-coins). Omit for all.
- Name
historical- Type
- string
- Description
One of
24h,7d,30d, or1y.
- Name
series- Type
- string
- Description
Set to
primaryThemewithhistoricalto return only primary-theme historical rows.
- Name
coinHistory- Type
- string
- Description
Set to
24h,7d,1m, or1yfor retained price history per coin.
Request
curl -G https://www.sharpe.ai/api/memecoins/data \
-d narrative=dog-coins
Memecoin launches
Recently launched memecoin pairs screened by age, liquidity, volume, and transaction count. The feed is discovery-first; canonical tracker inclusion requires category membership or minimum liquidity, volume, age, and activity thresholds.
- Name
chains- Type
- string
- Description
Comma-separated chain ids, e.g.
solana,base,bsc,ethereum.
- Name
days- Type
- number
- Description
Launch lookback window from
1to30days.
- Name
limit- Type
- number
- Description
Maximum launch rows from
1to200.
- Name
profile- Type
- string
- Description
Screening profile:
discovery,balanced, orstrict.
Request
curl -G https://www.sharpe.ai/api/memecoins/launches \
-d chains=solana,base \
-d days=7 \
-d limit=25
Mindshare
Social attention and mindshare metrics across crypto narratives and tokens.
Token and narrative sentimentPct is null when the upstream sentiment
sample is unavailable; it is never synthesized as neutral 50%.
- Name
tokens- Type
- string
- Description
Set to
trueto return a flat list of token-level mindshare data.
- Name
narrative- Type
- string
- Description
With
tokens=true, filter token rows by narrative slug, for exampledefiorlayer-1.
- Name
window- Type
- string
- Description
Snapshot window for narrative rows. One of
now,24h,7d,30d.
- Name
historical- Type
- string
- Description
Set to
trueto include historical snapshots.
- Name
timeframe- Type
- string
- Description
Historical timeframe. One of
1W,1M,3M,6M,1Y,3Y(aliases like7d,30d, and90dare accepted).
Request
curl -G https://www.sharpe.ai/api/mindshare/data \
-d window=7d
Web traffic
Attention rankings, social snapshots, and market-level signals for 50 coins and 22 narrative baskets, plus CoinGecko trust-score rankings for 16 exchanges.
- Name
type- Type
- string
- Description
One of
exchange,coin,narrative.
- Name
mode- Type
- string
- Description
One of
rankings,snapshots,market.
- Name
sub- Type
- string
- Description
Market submode for
mode=market. One oftrending,categories,global.
- Name
tf- Type
- string
- Description
Timeframe. One of
7d,30d,90d,1y,3y,all.
- Name
entities- Type
- string
- Description
Comma-separated entity IDs for
mode=snapshots.
Request
curl -G https://www.sharpe.ai/api/web-traffic/data \
-d type=coin \
-d mode=rankings
Caching behavior
All free endpoints return Cache-Control headers. On the endpoints that carry the freshness fields, the edge window follows the data: while it is fresh an answer is cached for at most a third of the time left before stale_after (and a third of the writer's cadence), with stale-while-revalidate at most twice that and never past stale_after, so a cached copy never says fresh past its SLA. Typical windows while fresh:
| Endpoint group | s-maxage | stale-while-revalidate |
|---|---|---|
| Funding rates (current, history), funding coins, spot-perp and cross-exchange arbitrage, funding spread history, Boros fixed vs floating funding, dated-futures scanners priced from the 5-minute dated-quotes snapshot | up to 100 s | up to 200 s |
| Margin borrow rates | up to 200 s | up to 400 s |
| Funding rates (accumulated) | up to 10 min | up to 20 min |
| Futures (not yet on the freshness fields) | 5 min | 10 min |
Funding settlement, /api/global/overview (crypto tab) | up to 5 min | up to 10 min |
| Gem finder, price prediction, rug-check security | up to 5 min | up to 10 min |
| Heatmap, narratives, ecosystems, memecoins, web traffic, news, dated-futures scanners (basis, calendar, perp-dated carry) served from the hourly term structure | up to 15 min | up to 30 min |
| Mindshare, listings, correlation | up to 1 hr | up to 2 hr |
| CEX spot-transfer scanner | up to 20 s | up to 40 s |
| Token scanner, memecoin launches | 10 s | 20 s |
Past a dataset's freshness SLA an answer is cached 30 s / 30 s; degraded, partial or fallback answers are not cached.
Conditional requests
/api/funding/rates?type=current serves the funding book from a snapshot with a weak ETag. Send it back as If-None-Match and an unchanged book returns 304 Not Modified with an empty body instead of re-sending the full payload. A 304 still counts against the per-IP protective limits, so conditional polling saves bandwidth, not request budget.
Rate limits
Free endpoints are cache-backed and may also have route-specific protective limits. Do not treat them as SLA-backed quotas. Every endpoint that carries the freshness fields has a protective per-IP limit (a 429 problem with Retry-After): 120 requests per minute on each server instance unless listed below. Documented per-IP limits include:
| Endpoint | Limit |
|---|---|
/api/correlation/on-demand | 10 requests/min |
/api/coin-compare/generate | 10 requests/min |
/api/price-prediction/search | 20 requests/min |
/api/rug-check/security | 20 requests/min |
/api/memecoins/launches | 20 requests/min |
For guaranteed rate limits, SLA, and usage tracking, use the authenticated API.