{"openapi":"3.1.0","info":{"title":"Galaxy Mind public API","version":"1.0.0","summary":"Live Bitcoin market signals, treasury mNAV, float, and a vendor directory.","description":"Read-only JSON endpoints powering galaxymind.space. All GET, no auth. Every endpoint is edge-cached (see x-cache-seconds per path) and fail-closes to neutral/null values rather than erroring when an upstream source is down. Data sources: CoinGecko, Yahoo Finance, bitcointreasuries.net, alternative.me, Coinmetrics, OKX, mempool.space. An MCP server with the same data is at /api/mcp.","contact":{"name":"Galaxy Mind","url":"https://galaxymind.space"},"license":{"name":"Public data · attribution appreciated","identifier":"CC-BY-4.0"}},"servers":[{"url":"https://galaxymind.space","description":"Production"}],"tags":[{"name":"market","description":"Live BTC market signals"},{"name":"treasuries","description":"Bitcoin treasury company mNAV"},{"name":"float","description":"Circulating / available supply"},{"name":"directory","description":"Bitcoin-accepting vendor directory"}],"paths":{"/api/stack":{"get":{"tags":["market"],"operationId":"getStackVerdict","summary":"Bitcoin Buying Gauge verdict","description":"The 0-100 buying-pressure score, tier, and the 10 weighted signal readings (MVRV, Mayer, Puell, funding, Fear & Greed, price-vs-30d-MA, realized vol, hour-of-day, day-of-week, MSTR mNAV).","responses":{"200":{"description":"Verdict with score, tier, and signal breakdown.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-cache-seconds":120}},"/api/heartbeat":{"get":{"tags":["market"],"operationId":"getHeartbeat","summary":"Lightweight gauge + block height (CORS-open)","description":"~120-byte payload: { blockHeight, score, tier, asOf, degraded }. CORS-open for third-party embeds. `degraded:true` means ≥4/8 signals were null at snapshot time.","responses":{"200":{"description":"blockHeight, score, tier, asOf, degraded.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-cache-seconds":30}},"/api/market":{"get":{"tags":["market"],"operationId":"getMarketSnapshot","summary":"Full market snapshot","description":"Everything the gauge is built from: BTC price, 30d realized vol, Fear & Greed, MVRV, Puell, funding rate, treasury rows, block height, and ~400d of hourly closes. Large (~hundreds of KB) · prefer /api/heartbeat or /api/stack for polling.","responses":{"200":{"description":"MarketSnapshot.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-cache-seconds":300}},"/api/treasuries":{"get":{"tags":["treasuries"],"operationId":"getTreasuries","summary":"Treasury mNAV scoreboard","description":"Per-ticker mNAV, price, market cap, BTC holdings, premium-to-NAV, and a plain-language interpretation for MSTR, XXI, MPJPY, ASST. mNAV is the GROSS definition: market cap ÷ (BTC held × spot), no debt/converts/preferreds netted. Each row also carries a 'cebe' object · the NET (Common Equity Bitcoin Exposure) mNAV after senior claims (debt + preferred − cash) plus a claims %, where sourced.","responses":{"200":{"description":"Treasury rows + asOf.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-cache-seconds":300}},"/api/history":{"get":{"tags":["treasuries"],"operationId":"getHistory","summary":"Daily price history for allow-listed tickers","description":"Daily closes for charting. Allow-listed tickers only (BTC + the tracked treasuries + the /fit asset universe); 30-ticker cap per request.","parameters":[{"name":"tickers","in":"query","required":true,"description":"Comma-separated ticker symbols (allow-listed; max 30).","schema":{"type":"string","example":"MSTR,BTC-USD"}}],"responses":{"200":{"description":"Per-ticker daily close arrays.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-cache-seconds":21600}},"/api/float":{"get":{"tags":["float"],"operationId":"getFloat","summary":"Available-supply (float) snapshot","description":"How much BTC is realistically buyable: mined supply minus lost, government, ETF, public-company, and long-term-holder cohorts. Includes the cohort breakdown and a `partial` flag when a live cohort fetch was degraded.","responses":{"200":{"description":"FloatSnapshot with cohorts + inPlay headline.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-cache-seconds":1800}},"/api/vendors.json":{"get":{"tags":["directory"],"operationId":"getVendors","summary":"Bitcoin-accepting vendor directory (CORS-open)","description":"Community-curated vendors that sell physical goods for native Bitcoin. Composable filters; CORS-open so any site can render a custom widget. Response: { version, count, totalAvailable, filters, asOf, vendors }.","parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","enum":["apparel","hardware","consumables","collectibles","services","books"]}},{"name":"country","in":"query","required":false,"description":"ISO-3166-1 alpha-2.","schema":{"type":"string","example":"US"}},{"name":"platform","in":"query","required":false,"schema":{"type":"string","enum":["x","nostr","lightning"]}},{"name":"since","in":"query","required":false,"description":"verifiedAt cutoff (YYYY-MM-DD).","schema":{"type":"string","format":"date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"Filtered vendor list with metadata.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-cache-seconds":300}},"/api/subscriber-count":{"get":{"tags":["market"],"operationId":"getSubscriberCount","summary":"Alert subscriber count","description":"Total alert subscribers · used for social-proof UI.","responses":{"200":{"description":"{ count }.","content":{"application/json":{"schema":{"type":"object"}}}}},"x-cache-seconds":300}}}}