The crypto-ai.dev API

A free, no-signup feed of everything the site runs on: crypto prices volume-weighted across four exchanges (REST + WebSocket), market caps, 7-day history, crypto-linked stock quotes, coin-tagged news, and trading signals. No API key needed for the free tier. CORS-open. Use it.

REST + WebSocket60 coins · 4 venues100 stocks (delayed)15s delay (free)Real-time (keyed)CORS-open

Status

Checking status…

Base URL

BASE
https://crypto-ai-prices.fly.dev

Every REST endpoint below is relative to this host. WebSocket connects at wss://crypto-ai-prices.fly.dev/ws.

GET /api/prices

Everything we know about every tracked coin: VWAP + mean price, 24h/7d change, true 24h high/low, cross-venue spread, per-venue prices, USD volume, live market cap, and supply.

CURL
curl https://crypto-ai-prices.fly.dev/api/prices
RESPONSE
{
  "live": false,
  "delay": 15,
  "timestamp": 1776297071902,
  "prices": {
    "BTC": {
      "price": 74745.19,
      "vwap": 74721.33,
      "change24h": 0.71,
      "change7d": 2.94,
      "volume24h": 52183902311.44,
      "spread": 0.041,
      "high24h": 75102.50,
      "low24h": 73980.11,
      "venues": {
        "binance":  { "price": 74722.10, "timestamp": 1776297071011 },
        "coinbase": { "price": 74719.95, "timestamp": 1776297070892 },
        "kraken":   { "price": 74725.40, "timestamp": 1776297066120 },
        "okx":      { "price": 74720.61, "timestamp": 1776297071377 }
      },
      "marketCap": 1497210334411.02,
      "circulatingSupply": 20041500,
      "sources": ["binance", "coinbase", "kraken", "okx"],
      "name": "Bitcoin"
    }
  }
}

GET /api/prices/:symbol

Same data, one asset. 404 if the symbol isn't tracked.

CURL
curl https://crypto-ai-prices.fly.dev/api/prices/ETH

GET /api/history/:symbol

Hourly price history: points covers the last 24 hours, points7d the last 7 days. Useful for sparklines and backtests.

CURL
curl https://crypto-ai-prices.fly.dev/api/history/BTC
RESPONSE
{
  "symbol": "BTC",
  "points":   [ { "t": 1776211219958, "price": 74150.07 }, … ],
  "points7d": [ { "t": 1775692800000, "price": 72981.55 }, … ]
}

GET /api/stocks

Quotes for 25 crypto-linked equities — exchanges, treasuries, miners, Bitcoin ETFs, and infra. Delayed up to ~15 minutes (clearly flagged in the response), refreshed every 90 seconds.

CURL
curl https://crypto-ai-prices.fly.dev/api/stocks
RESPONSE
{
  "delayed": true,
  "delayNote": "Equity quotes may be delayed up to ~15 minutes",
  "updated": 1781300000000,
  "count": 25,
  "quotes": {
    "COIN": {
      "symbol": "COIN",
      "name": "Coinbase",
      "cat": "Crypto-native",
      "price": 160.43,
      "change24h": 4.20,
      "change7d": -1.71,
      "spark7d": [167.1, 163.9, …],
      "volumeUsd": 1103683960.48,
      "marketCap": 42267009024,
      "dayHigh": 161.74,
      "dayLow": 152.38,
      "w52High": 444.65,
      "w52Low": 142.20
    }
  }
}

GET /api/stocks/:symbol

One equity, plus a month of daily closes for charting. 404 if the ticker isn't tracked.

CURL
curl https://crypto-ai-prices.fly.dev/api/stocks/MSTR
RESPONSE
{
  "symbol": "MSTR",
  "delayed": true,
  "quote": { "price": 120.15, "change24h": 4.16, "marketCap": 34421000192, … },
  "points": [ { "t": 1778622000000, "price": 131.92 }, … ]
}

GET /api/signals/:symbol

Latest BUY/SELL signals per timeframe (1w, 1d, 12h, 4h, 1h) for a coin, with recent history. Signals are posted by authenticated webhooks (TradingView alerts); reading them is open.

CURL
curl https://crypto-ai-prices.fly.dev/api/signals/ETH
RESPONSE
{
  "symbol": "ETH",
  "timeframes": {
    "1w": {
      "latest": { "direction": "BUY", "price": 2354.5, "timestamp": 1781215000000 },
      "count": 1,
      "history": [ … ]
    },
    "1d": { "latest": null, "count": 0, "history": [] }
  }
}

GET /api/wire

Coin-tagged news from CoinDesk, CoinTelegraph, Decrypt, and The Block. Deduped, sorted, last 72 hours. Hosted on crypto-ai.dev (not Fly). Filter with ?coin=BTC or ?q=halving.

CURL
curl 'https://crypto-ai.dev/api/wire?coin=BTC&limit=5'
RESPONSE
{
  "items": [
    {
      "id": "kvj84z",
      "title": "…",
      "link": "https://www.coindesk.com/…",
      "source": "CoinDesk",
      "publishedAt": "2026-04-15T23:08:06.000Z",
      "summary": "…",
      "coins": ["BTC", "SOL"]
    }
  ],
  "total": 109
}

GET /api/predictions

Live prediction-market odds — the most-traded markets from Polymarket plus Kalshi macro markets, normalized to one shape. Hosted on crypto-ai.dev (not Fly), refreshed every 5 minutes. Filter with ?category=crypto (also: macro, politics, sports, economy, science, pop-culture, world). Odds are probabilities 0–1. Link to the source market when republishing.

CURL
curl 'https://crypto-ai.dev/api/predictions?category=crypto&limit=5'
RESPONSE
{
  "category": "crypto",
  "events": [
    {
      "id": "903193",
      "title": "What price will Bitcoin hit in July?",
      "url": "https://polymarket.com/event/…",
      "source": "polymarket",
      "volume24hr": 575114,
      "endDate": "2026-07-31T12:00:00Z",
      "outcomes": [
        { "label": "↑ 65,000", "prob": 0.73 },
        { "label": "↑ 67,500", "prob": 0.44 }
      ],
      "outcomeCount": 11
    }
  ],
  "total": 9,
  "attribution": "Odds via Polymarket & Kalshi. …"
}

WebSocket /ws

Real-time stream. On connect you receive a snapshot with every tracked symbol, then update messages whenever prices change. Send {"type":"subscribe","symbols":["BTC","ETH"]} to narrow the stream.

JS
const ws = new WebSocket("wss://crypto-ai-prices.fly.dev/ws");

ws.onmessage = (e) => {
  const msg = JSON.parse(e.data);
  if (msg.type === "snapshot") console.log("initial prices", msg.prices);
  if (msg.type === "update")   console.log("tick", msg.prices);
};

// Optional: limit to specific symbols
ws.onopen = () => ws.send(JSON.stringify({ type: "subscribe", symbols: ["BTC", "ETH"] }));

Free tier vs real-time

Unauthenticated requests see a 15-second delayed feed. Real-time access is gated by an API key passed in the X-API-Key header (or ?apiKey= on WebSocket). The paid tier is in private beta — join the waitlist if you need it.

CURL
curl -H "X-API-Key: YOUR_KEY" https://crypto-ai-prices.fly.dev/api/prices

Limits & fair use

OpenAPI spec

Machine-readable spec for code-gen, Postman, or agent tool-use. Served from /openapi.json.

Ready-made snippets

Python

PY
import requests
r = requests.get("https://crypto-ai-prices.fly.dev/api/prices")
btc = r.json()["prices"]["BTC"]
print(btc["price"], btc["vwap"])

Node.js (fetch)

JS
const r = await fetch("https://crypto-ai-prices.fly.dev/api/prices/BTC");
const { price, vwap, sources } = await r.json();
console.log(price, vwap, sources);

Bash / jq

SH
curl -s https://crypto-ai-prices.fly.dev/api/prices | jq '.prices | to_entries | sort_by(-.value.volume24h) | .[:5]'

FAQ

Is the crypto-ai.dev API really free?

Yes. No signup, no API key, CORS-open, real-time WebSocket and REST. Unauthenticated requests receive a 15-second delayed feed. Real-time access is available via an API key (private beta).

Where do the prices come from?

Live trade feeds from Binance, Coinbase, Kraken and OKX. We compute a volume-weighted average across all four venues on every tick.

How is this different from CoinGecko's API?

Lower latency (sub-second ticks vs ~minute refresh), per-venue prices and cross-venue spread on every coin, market caps that update every second, and an open WebSocket with no API key needed for the free tier.

What stock data is available?

One hundred crypto-linked equities — exchanges (Coinbase, Robinhood), treasuries (MicroStrategy, Galaxy), miners, Bitcoin ETFs (IBIT, FBTC), and infra (NVIDIA, AMD). Quotes are delayed up to ~15 minutes (clearly labeled), sourced from Yahoo Finance.

Are there rate limits?

120 requests per minute per IP on REST. Five concurrent WebSocket connections per IP. Keyed clients bypass these limits.

Can I use this in production?

Yes, but it's a free service: no SLA, no guarantees. For production use cases needing real-time data and uptime guarantees, join the waitlist for the paid tier.