{"ok":true,"generatedAt":"2026-05-04T01:38:55.181Z","service":"nuropicks-web","total":38,"groups":{"ops":5,"model-slate":25,"share":5,"booksync":3},"surfaces":[{"path":"/api/version","group":"ops","desc":"Build SHA, vault ring, uptime. No DB.","cache":"no-store"},{"path":"/api/health","group":"ops","desc":"Probes db/redis/email/whop/discord/sentry with severity.","cache":"no-store"},{"path":"/api/status","group":"ops","desc":"Public counts-only sibling to /api/health (no env-var names).","cache":"60s edge"},{"path":"/api/picks/system-summary","group":"model-slate","desc":"Today's slate counts (cheap). Powers homepage strip + share OG.","cache":"5min edge","params":["sport"]},{"path":"/api/picks/system-today","group":"model-slate","desc":"Today's full slate with rows. Source for /picks/system page.","cache":"60s edge","params":["sport","limit","market_class=props|alts|game"]},{"path":"/api/picks/system-recent","group":"model-slate","desc":"Last N model picks. Fallback when today is empty.","cache":"60s edge","params":["sport","limit"]},{"path":"/api/picks/system-yesterday","group":"model-slate","desc":"Yesterday's settled slate (ET-day boundary).","cache":"5min edge","params":["sport","limit"]},{"path":"/api/picks/system-week","group":"model-slate","desc":"7-day rolling counts + hit rate.","cache":"5min edge","params":["sport"]},{"path":"/api/picks/system-month","group":"model-slate","desc":"30-day rolling counts + hit rate.","cache":"10min edge","params":["sport"]},{"path":"/api/picks/system-streak","group":"model-slate","desc":"Current and longest win streaks (settled picks only).","cache":"5min edge","params":["sport","days (1-90)"]},{"path":"/api/picks/system-by-sport","group":"model-slate","desc":"Cross-sport breakdown leaderboard. Counts + hit rate per sport.","cache":"5min edge","params":["days (1-90)"]},{"path":"/api/picks/system-history","group":"model-slate","desc":"Daily rollup (sparkline-ready). generate_series fills missing days with zeros.","cache":"5min edge","params":["sport","days (1-90)"]},{"path":"/api/picks/system-leaders","group":"model-slate","desc":"Programmatic best/worst sport + pre-written tweet line. Min 20 graded.","cache":"5min edge","params":["days (1-90)"]},{"path":"/api/picks/system-coverage","group":"model-slate","desc":"Per-sport coverage snapshot: active today, hours since last pick, stale detection.","cache":"60s edge"},{"path":"/api/picks/system-recent-wins","group":"model-slate","desc":"Last N graded wins. Powers FOMO highlight rails.","cache":"5min edge","params":["sport","limit (1-50)"]},{"path":"/api/picks/system-pulse","group":"model-slate","desc":"Heartbeat: alive flag, seconds-since-last-post, seconds-since-last-grade.","cache":"30s edge"},{"path":"/api/picks/system-best-today","group":"model-slate","desc":"Single highest-confidence pick of today + headlineLine for tweets.","cache":"60s edge","params":["sport"]},{"path":"/api/picks/system-confidence-buckets","group":"model-slate","desc":"Hit rate per confidence decile + monotonic-calibration heuristic. Calibration proof.","cache":"5min edge","params":["sport","days (1-180)"]},{"path":"/api/picks/system-biggest-wins","group":"model-slate","desc":"Recent wins ordered by American odds DESC (biggest underdog hits first).","cache":"5min edge","params":["sport","days (1-90)","limit (1-25)"]},{"path":"/api/picks/system-edge-buckets","group":"model-slate","desc":"Hit rate per American-odds band (heavy_fav -> heavy_dog). Pairs with confidence-buckets.","cache":"5min edge","params":["sport","days (1-180)"]},{"path":"/api/picks/system-prop-leaders","group":"model-slate","desc":"Best/worst prop_key by hit rate. Min 10 graded.","cache":"5min edge","params":["sport","days (1-180)"]},{"path":"/api/picks/system-recap-yesterday","group":"model-slate","desc":"Pre-built recap text for yesterday's slate (bot/Discord ready).","cache":"5min edge"},{"path":"/api/picks/system-active-streaks","group":"model-slate","desc":"Current win/loss streak per sport. Active sports only (length>0).","cache":"5min edge"},{"path":"/api/picks/system-day-card","group":"model-slate","desc":"Composite snapshot: today + yesterday + 7d in a single payload. Discord daily-recap source.","cache":"5min edge"},{"path":"/api/picks/system-trending","group":"model-slate","desc":"Top 3 trending sports by 7d-vs-prior-7d hit-rate delta. Min 5 graded each window.","cache":"10min edge"},{"path":"/api/picks/system-recent-losses","group":"model-slate","desc":"Last N graded losses. Counterpart to recent-wins - transparency, sharps respect it.","cache":"5min edge","params":["sport","limit (1-50)"]},{"path":"/api/picks/system-day-of-week","group":"model-slate","desc":"Mon-Sun cohort hit rate (ET day-of-week). Min 5 graded per bucket. Returns bestDay + worstDay.","cache":"10min edge","params":["sport","days (7-180)"]},{"path":"/api/picks/system-method-stamp","group":"model-slate","desc":"Engine-runs-daily proof: distinct posting/settle days, last-posted, last-graded, schemaFingerprint.","cache":"60s edge"},{"path":"/api/og/system-slate","group":"share","desc":"Dynamic 1200x630 OG card from system-summary.","cache":"5min edge","params":["sport"]},{"path":"/api/og/system-streak","group":"share","desc":"Dynamic OG card for current win/loss streak.","cache":"5min edge","params":["sport"]},{"path":"/api/og/system-leaders","group":"share","desc":"Dynamic OG card showing the leading sport (>=20 graded).","cache":"5min edge"},{"path":"/api/og/system-best-today","group":"share","desc":"Dynamic OG card showing today's top-confidence pick.","cache":"5min edge"},{"path":"/api/og/proof","group":"share","desc":"Static-feel OG card for the homepage.","cache":"5min edge"},{"path":"/api/account/booksync/keys","group":"booksync","desc":"Per-user API key issuance for the BookSync chrome extension.","auth":"admin"},{"path":"/api/account/booksync/import","group":"booksync","desc":"Bet ingestion endpoint for the chrome extension.","auth":"admin"},{"path":"/api/cron/launch-status-alert","group":"ops","desc":"Hourly P0 + model-regression sentinel. Posts to Discord on regression.","auth":"cron"},{"path":"/api/cron/launch-monitor-discord","group":"ops","desc":"30-min Discord poll of the launch monitor.","auth":"cron"},{"path":"/api/cron/booksync-health","group":"booksync","desc":"BookSync ingest health roll-up cron.","auth":"cron"}],"developersHub":"https://nuropicks.com/developers","versionEndpoint":"https://nuropicks.com/api/version"}