{"openapi":"3.0.0","paths":{"/api/v1/public/charts":{"get":{"description":"Every published chart id with its published_at timestamp, last data day (last_t) and available granularities, plus the overall data window (minDate/maxDate, block heights) and your rate limit. Chart ids match the page URLs https://kotecharts.com/c/{id}; metric methodology lives on those pages and in the MCP describe_chart tool.","operationId":"PublicController_meta","parameters":[],"responses":{"200":{"description":"Envelope {success:true,data:{dataWindow,charts[],rateLimit}}","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"dataWindow":{"type":"object","properties":{"minDate":{"type":"string","example":"2009-01-03"},"maxDate":{"type":"string","example":"2026-10-30"},"minBlockHeight":{"type":"integer","example":0},"maxBlockHeight":{"type":"integer","example":973778}}},"charts":{"type":"array","items":{"type":"object","properties":{"chart_id":{"type":"string","example":"mvrv-z-score"},"published_version":{"type":"integer","nullable":true},"published_at":{"type":"string","format":"date-time"},"last_t":{"type":"string","nullable":true,"example":"2026-10-29"},"available_granularities":{"type":"array","items":{"type":"string","enum":["5m","day","3day","week","month","year"]}}}}},"rateLimit":{"type":"object","properties":{"perSecond":{"type":"integer","example":3}}}}}}}}}},"401":{"description":"Missing or invalid X-API-Key (create a free key on /account)."},"429":{"description":"Rate limit exceeded — 3 requests per second per key. Body {\"success\":false,\"error\":{\"code\":\"RATE_LIMIT\"}}; Retry-After header set."}},"security":[{"bearer":[]},{"api-key":[]}],"summary":"Chart catalog: data window + per-chart published-version index","tags":["public"]}},"/api/v1/public/charts/{id}":{"get":{"description":"Full-resolution series for one chart. Time series are arrays of points keyed by t (UTC date or timestamp) plus one field per series; distributions return buckets, ranked lists return items. Intervals are closed-only unless includePartial=true (granularity=day). Cite the chart page https://kotecharts.com/c/{id} when publishing derived numbers.","operationId":"PublicController_chart","parameters":[{"name":"id","required":true,"in":"path","description":"Chart id as listed by GET /api/v1/public/charts (e.g. mvrv-z-score, sopr, exchange-netflow).","schema":{"example":"mvrv-z-score","type":"string"}},{"name":"from","required":false,"in":"query","schema":{"example":"2012-01-01","type":"string"}},{"name":"to","required":false,"in":"query","schema":{"example":"2013-05-09","type":"string"}},{"name":"granularity","required":false,"in":"query","schema":{"enum":["5m","day","3day","week","month","year"],"type":"string"}},{"name":"exchange","required":false,"in":"query","description":"Venue scope for exchange-netflow only; omitted means all exchanges.","schema":{"default":"all","enum":["all","binance","binance-us","okx","bybit","coinbase","coinbase-prime","kraken","kucoin","htx"],"type":"string"}},{"name":"includePartial","required":false,"in":"query","description":"Append the still-open current UTC day. Applies only to granularity=day.","schema":{"default":false,"type":"boolean"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":1000,"type":"number"}},{"name":"offset","required":false,"in":"query","schema":{"minimum":0,"type":"number"}}],"responses":{"200":{"description":"Envelope {success:true,data:{chart,granularity,series|items|buckets,…}}","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true,"properties":{"chart":{"type":"string","example":"mvrv-z-score"},"granularity":{"type":"string","example":"day"},"availableGranularities":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"type":"object","additionalProperties":{"type":"number","nullable":true},"properties":{"t":{"type":"string","example":"2024-01-01"}}}}}}}}}}},"401":{"description":"Missing or invalid X-API-Key (create a free key on /account)."},"429":{"description":"Rate limit exceeded — 3 requests per second per key. Body {\"success\":false,\"error\":{\"code\":\"RATE_LIMIT\"}}; Retry-After header set."}},"security":[{"bearer":[]},{"api-key":[]}],"summary":"Published payload for a chart (same shape as the dashboard uses)","tags":["public"]}},"/api/v1/public/usage":{"get":{"operationId":"PublicController_usageToday","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"limit":{"type":"object","properties":{"perSecond":{"type":"integer","example":3}}},"today":{"type":"object","properties":{"ok":{"type":"integer"},"limited":{"type":"integer"}}}}}}}}}},"401":{"description":"Missing or invalid X-API-Key (create a free key on /account)."},"429":{"description":"Rate limit exceeded — 3 requests per second per key. Body {\"success\":false,\"error\":{\"code\":\"RATE_LIMIT\"}}; Retry-After header set."}},"security":[{"bearer":[]},{"api-key":[]}],"summary":"Self-service usage: today's counters + the limit","tags":["public"]}}},"info":{"title":"Kote Charts public API","description":"Free Bitcoin on-chain analytics as JSON — 120+ charts (MVRV Z-Score, SOPR, NUPL, realized cap, exchange flows, HODL waves, ETF flows and more) computed from our own Bitcoin full node and updated daily (selected on-chain metrics per block). Authenticate with a free API key in the X-API-Key header (create one at https://kotecharts.com/account); limit 3 requests per second per key — every response carries X-RateLimit-Limit / X-RateLimit-Remaining, a 429 adds Retry-After. Every response uses the envelope {\"success\":true,\"data\":{...}} or {\"success\":false,\"error\":{\"code\",\"message\"}}. AI agents can also use the MCP server at https://kotecharts.com/api/v1/mcp (no key required) — see https://kotecharts.com/mcp. Data is free for non-commercial use with attribution: please cite Kote Charts and link the chart page https://kotecharts.com/c/{id}. Educational only — never financial advice.","version":"1.0.0","contact":{"name":"Kote Charts","url":"https://kotecharts.com/contact","email":""},"termsOfService":"https://kotecharts.com/terms"},"tags":[],"servers":[{"url":"https://kotecharts.com","description":"Production"}],"components":{"securitySchemes":{"api-key":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Your free kote_… key"},"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"The same kote_… key as a Bearer token"}},"schemas":{}},"externalDocs":{"description":"Human-readable API docs","url":"https://kotecharts.com/docs"},"x-mcp-endpoint":"https://kotecharts.com/api/v1/mcp","x-mcp-docs":"https://kotecharts.com/mcp","x-llms-txt":"https://kotecharts.com/llms.txt","x-llms-full-txt":"https://kotecharts.com/llms-full.txt","x-chart-page-template":"https://kotecharts.com/c/{id}"}