API Reference
Base URL: https://api.n0brains.com · All responses are JSON · Timestamps are Unix epoch (seconds)
This is analysis. It is not financial advice.
Everything n0brains publishes — signals, scores, reference prices,
invalidation levels, target levels, paper-trading results, the
trade_signal action hint, the /proof
page, all of it — is n0brains' own algorithmic analysis of public
market data. It is provided for informational purposes only.
- It is not investment advice, a recommendation, a solicitation, a personalized strategy, or any form of advisory service.
- It is not tailored to your portfolio, risk tolerance, or jurisdiction. The same data is published to every subscriber.
- Reference levels are analytical pivots derived from order-book S/R or models — not instructions to enter, exit, or stop a trade.
- n0brains does not execute trades, hold custody of funds, or act as a broker, adviser, or fiduciary.
- Past performance — including the simulated results on /proof — does not guarantee future results. Signals can and will be wrong.
You are solely responsible for every trading decision you make and for any profits or losses that result. By using this API you accept the full terms of service, including the limitation of liability in §8.
Quick Start
- Create an account — get your API key instantly
- Set the header
X-API-Keyon every request - Hit
GET /signals— you are done
curl -H "X-API-Key: intel_sk_your_key" https://api.n0brains.com/signals Want to see how the signals are performing? Our live forward-test is at /proof.
For Agents
In a hurry? The Quickstart has copy-paste prompts — a free-tier one-liner and a full Pro/MCP agent. Or read on for the details.
n0brains is a plain HTTP API — no SDK, no install step. Point any agent (Claude Code, OpenClaw, LangChain, a custom orchestrator) at it by handing it the base URL and your key. One line in the agent's instructions:
Use the n0brains API at https://api.n0brains.com with X-API-Key intel_sk_your_key Swap in your real key and that's the whole integration — the agent discovers the
endpoints implicitly from the API's shape (full reference below). Base URL
https://api.n0brains.com, auth header X-API-Key.
Optional: a structured skill file
Some runtimes prefer a structured skill file over a one-line instruction.
n0brains-signals.md packages the same thing — frontmatter, every tool
with examples, auth, error handling, behaviour rules — as a single Markdown file
you drop in. The one-liner works just as well; this is for when you want it codified.
curl -O https://n0brains.com/openclaw/n0brains-signals.md Download n0brains-signals.md ↓
| Runtime | Where it goes | Auth |
|---|---|---|
| OpenClaw | drop n0brains-signals.md into your agent's skills dir | env NB_API_KEY |
| Claude Code | copy to ~/.claude/skills/n0brains-signals/SKILL.md | env NB_API_KEY |
| Custom orchestrator | load the .md as system context, or just use the one-liner | your secret store, key n0brains_api_key |
| Direct HTTP / TS client | skip the skill — use the endpoints below or the n0brains-ts client | header X-API-Key |
Prefer typed calls? The optional TypeScript client
n0brains-ts
(@n0brains/client) wraps every endpoint. Or the
CLI for the shell, and the
MCP server for Claude Desktop / Cursor / Cline.
Plans & Credits
Free and Pro are the two subscription tiers (rate limits above). Beyond your tier's included rate, you have two pay-as-you-go options:
| Option | How it works | Account? |
|---|---|---|
| Pay-per-call credits | One-time packs (from $5). A credit is spent only on a data call made beyond your tier's included rate limit — within your rate, calls stay free. Buy and track them in your account dashboard. | Yes — card via Stripe |
| x402 | Pay per request in USDC on Base, no signup. See /docs/x402. | No — walletless |
When you're out of credits and over your rate limit, data
endpoints return 402 with a link to buy more. Within your rate limit,
nothing is charged.
Authentication
All authenticated endpoints require an API key via the X-API-Key header. Keys are generated on registration and can be rotated via POST /auth/api-keys.
Login also returns a JWT token usable via Authorization: Bearer.
| Method | Header | Example |
|---|---|---|
| API Key | X-API-Key | intel_sk_a1b2c3... |
| JWT Token | Authorization | Bearer eyJhbGci... |
Rate Limits
| Tier | Requests/min | Signal Delay | Access |
|---|---|---|---|
| Free | 60 | 15 minutes | REST API only, limited fields. MCP tools/list open for catalog discovery. |
| Pro | 600 | Real-time | REST + WebSocket + Webhooks + MCP server, full fields |
Rate limit exceeded returns 429 with a message pointing to the upgrade page.
Endpoints
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /health | None | Liveness check |
| GET | /signals | API Key | List active signals. Filter with ?asset=, ?signal_type=, ?urgency=, ?direction=, and ?asset_class= (crypto · stock · metal · commodity · index) to scope to crypto or the tokenized stock market |
| GET | /signals/{id} | API Key | Single signal detail |
| GET | /signals/similar | Pro | Semantic nearest-neighbor search |
| GET | /narrative/{coin} | Pro | Narrative heatmap for asset |
| GET | /manipulation/{coin} | Pro | Manipulation score for asset |
| GET | /trust/{coin} | Pro | Trust & scam score for token |
| GET | /levels/{coin} | API Key | S/R levels from Hyperliquid |
| GET | /indicators/{coin} | API Key | Technical indicators — RSI, MACD, SMA/EMA (20/50/200 + 200-week), Stochastic, Fibonacci, trend/momentum read |
| GET | /state/{coin}/brief | Pro | LLM-written prose analysis — current read, key + structural levels, macro/on-chain, technicals, outlook. The narrative layer over /state, grounded only in our data |
| GET | /liquidation-map/{coin} | API Key | CEX estimated liquidation-cluster zones (modeled from OI + leverage tiers) |
| GET | /liqmap/{coin} | API Key | DEX real on-chain liquidation map — actual positions with exact liq prices. Crypto (Hyperliquid + GMX) and the tokenized stock market via Hyperliquid HIP-3 (/liqmap/SP500, /liqmap/NVDA, /liqmap/GOLD, …) |
| GET | /liquidation-heatmap/{coin} | API Key | CEX liquidation heatmap — price×time intensity grid. ?days= (1–180), ?rows=, ?cols= |
| GET | /liq-heatmap/{coin} | API Key | DEX real-position liquidation heatmap — price×time grid (BTC/ETH) |
| GET | /correlation | API Key | Cross-asset return-correlation matrix (7d). ?vs=BTC, ?coins=… |
| GET | /correlation/{coin} | API Key | One coin's correlation + beta to BTC/ETH + peers |
| GET | /rotation | API Key | Altseason/rotation read — into_alts / into_btc / neutral |
| GET | /options/{coin} | API Key | Options analytics (BTC/ETH): ATM IV, skew, term structure, max-pain |
| GET | /sentiment/{coin} | API Key | Aggregate sentiment — net lean, volume, velocity (curated sources) |
| GET | /mindshare | API Key | Attention-share leaderboard — each asset's share + velocity (rising/falling) |
| GET | /mindshare/{coin} | API Key | One coin's mindshare share, rank, velocity |
| GET | /market-opens | API Key | Session opening prices |
| GET | /price/{coin} | None | Current spot/mid price for one coin (Hyperliquid) |
| GET | /prices?coins=BTC,ETH,SOL | None | Batch current prices in one call |
| GET | /market-state/{coin} | Pro | Per-coin proven-signal consensus — direction, confidence, regime, top drivers |
| GET | /state | Pro | Unified market state — regime + composite, macro pack, proven types, per-coin rollup in one call |
| GET | /state/{coin} | Pro | One-call per-coin view — price, market-state, regime + composite, levels, technical indicators, liqmap target |
| GET | /plan/{coin} | Pro | Assembled trade plan — direction, entry, strongest target (strength-weighted, not nearest), stop, risk/reward, sizing hint, options context (put/call + skew), and warnings (max-pain timing against the trade, entry near a liq cluster). The synthesis layer over /state + /levels + /options |
| GET | /rank?coins=BTC,ETH,SOL | Pro | Cross-asset ranking — assembled trade plans for the given coins sorted by setup_score (best first). Answers "which coin is the better trade right now?" |
| GET | /macro | API Key | Macro Pulse — latest BTC + ETH directional bias |
| GET | /macro?history=N | Pro | Macro Pulse historical snapshots (last N reports, max 30) |
| GET | /regime | API Key | Market-wide risk appetite — risk-on / risk-off / squeeze + a signed risk score and directional market_bias, blended from the macro composite, cross-sectional breadth, funding regime and volatility. Answers "do conditions favor risk right now?" Descriptive, candidate. |
| GET | /liquidity | API Key | Net cross-asset liquidity map — Fed net liquidity, multi-chain stablecoin dry-powder (DefiLlama), total perp OI, cross-venue leverage concentration (cascade-fragility), liquidation pressure, net taker flow. Answers "where is liquidity?" |
| GET | /flows | API Key | Cross-asset flows — crypto rotation, crypto-vs-tradfi OI split by asset class, and institutional posture (ETF / COT / 13F, descriptive). Answers "where are funds going, and is the market buying something other than crypto?" |
| GET | /market-map | API Key | Composite of /regime + /liquidity + /flows in one call — the full cross-asset market picture. |
| GET | /discovery | API Key | Emergent-edge discovery — corroboration class-combinations mined from the shadow ledger vs realized forward returns, ranked by measured edge (honesty-gated). Surfaces patterns nobody hand-coded. status=accruing until the ledger fills. |
| GET | /performance | None | Public win rate / PnL stats |
| GET | /proof | None | Forward-return scoreboard — per-type win rate, excess vs BTC, CI, proven flag (powers /proof) |
| GET | /proof/equity | None | Edge-accumulation equity curve over proven-type signals |
| GET | /public/feed | None | Public delayed signal feed (the free-tier 15-min-lagged stream) |
| GET | /status/uptime | None | Service uptime / status snapshot |
| POST | /auth/register | None | Create account |
| POST | /auth/login | None | Login |
| GET | /auth/me | API Key | User profile |
| POST | /auth/api-keys | API Key | Generate new API key |
| DEL | /auth/api-keys/{id} | API Key | Revoke API key |
| POST | /billing/checkout | API Key | Stripe subscription checkout (Pro) |
| POST | /billing/buy-credits | API Key | Stripe one-time checkout for a credit pack |
| GET | /billing/credit-packs | API Key | List purchasable credit packs |
| GET | /credits | API Key | Credit balance + transaction history |
| POST | /billing/portal | API Key | Stripe customer portal |
| POST | /webhooks | Pro | Register webhook |
| DEL | /webhooks/{id} | Pro | Remove webhook |
| WS | /stream | Pro | Real-time signal stream |
| POST | /mcp/ | Pro (tools/call); open (tools/list) | MCP server — read-only tools for Claude Desktop, Cursor, Cline. See /docs/mcp. |
Prefer the command line? The n0brains CLI wraps every
endpoint as a zero-dependency command that prints JSON — built for trading
agents and shell pipelines. Agents without an account can also
pay per call in USDC on Base (x402) — no key, no signup.
GET /signals
Returns active signals, optionally filtered. Free tier receives signals with a 15-minute delay.
Query Parameters
Param Type Description assetstring Filter by ticker (e.g. BTC) signal_typestring regulatory, whale, whale_position, sentiment, price, hack, listing, macro, macro_flow, macro_pulse, liquidation, funding, deleverage, other. (unlock and research can be returned but are not filterable here — filtering on them 400s.) directionstring bullish, bearish, neutral urgencystring high, medium, low limitint 1-200 (default 50) offsetint Pagination offset (default 0) include_opensbool Include market opening prices (default true) min_confidencefloat Minimum confidence score (0.0–1.0, default 0.0) min_scorefloat Minimum signal score (default 0.0) bandstring Filter by trade quality band: A+, A, B, C, D min_trade_qualityfloat Minimum trade quality score (0.0–1.0, default 0.0) proven_onlybool Only signal types proven to beat BTC (alpha) and profitable per direction (default false) tradeable_onlybool Only conviction=strong signals (default false)
Response - Free Tier
{
"count": 3,
"signals": [
{
"id": 195,
"asset": null,
"signal_type": "regulatory",
"direction": "neutral",
"urgency": "medium",
"summary": "Senate Banking Committee scheduled to vote on the Clarity Act crypto bill.",
"confidence": 0.15,
"conviction": "watch",
"action_hint": "monitor",
"corroborated": false,
"score": 0.27,
"trade_quality_score": 0.61,
"trade_quality_band": "B",
"expected_move_pct": null,
"regime_at_signal": "risk-off",
"timestamp": 1778555605,
"expires_at": 1778570005,
"type_performance": {
"excess_pct": 0.3,
"hit_rate": 0.08,
"proven": false,
"n": 398
},
"disclaimer": "Analytical data only. Not financial advice."
},
{
"id": 196,
"asset": "ETH",
"signal_type": "sentiment",
"direction": "bearish",
"urgency": "high",
"summary": "Sharp negative social shift on ETH as funding flips and large holders trim.",
"confidence": 0.71,
"conviction": "strong",
"action_hint": "trade_signal",
"corroborated": true,
"score": 1.38,
"trade_quality_score": 0.74,
"trade_quality_band": "A",
"regime_at_signal": "risk-off",
"timestamp": 1778555800,
"expires_at": 1778570200,
"reference_price": 3210,
"invalidation_level": 3274.2,
"target_level": 3081.6,
"levels_basis": "model",
"type_performance": {
"excess_pct": 4.96,
"hit_rate": 0.61,
"proven": true,
"n": 1016
},
"historical_edge": {
"cell": "sentiment|bearish|risk-off",
"sample_n": 36,
"win_rate": 0.97,
"avg_pnl_pct": 7.19,
"median_pnl_pct": 6.9,
"as_of": "2026-05-27T02:09:02+00:00"
},
"disclaimer": "Analytical reference levels for informational purposes only. Not a recommendation to buy or sell, and not financial advice."
},
{
"id": 197,
"asset": "BTC",
"signal_type": "regulatory",
"direction": "bullish",
"urgency": "medium",
"summary": "Industry group endorses ETF approval extension; broader institutional access expected.",
"confidence": 0.45,
"conviction": "notable",
"action_hint": "alert",
"corroborated": true,
"score": 0.81,
"trade_quality_score": 0.52,
"trade_quality_band": "C",
"regime_at_signal": "squeeze",
"timestamp": 1778556100,
"expires_at": 1778570500,
"type_performance": {
"excess_pct": -2.1,
"hit_rate": 0.04,
"proven": false,
"n": 352
},
"historical_edge": {
"cell": "regulatory|bullish|squeeze",
"sample_n": 128,
"win_rate": 0,
"avg_pnl_pct": -4.91,
"median_pnl_pct": -4.65,
"as_of": "2026-05-27T02:09:02+00:00"
},
"paired_inverse": {
"direction": "bearish",
"basis": "historical_anti_predictive_cell",
"implied_avg_pnl_pct": 4.91,
"flipped_cell_stats": {
"n": 14,
"win_rate": 0.93,
"avg_pnl_pct": 3.92
},
"advisory_text": "Historical 0% win rate (128 samples) on bullish regulatory in squeeze regime suggests fade. Not a recommendation — informational only.",
"citation": "De Bondt & Thaler 1985 JoF; Tetlock 2007 JoF; Chan 2003. Short-term overreaction to dramatic news reverses on horizon of days–weeks. Crypto: PLOS One 2024."
},
"disclaimer": "Analytical data only. Not financial advice."
}
],
"market_opens": {
"tokyo": {
"BTC": 81150,
"ETH": 3200.5,
"SOL": 96.3,
"timestamp": 1778539200
},
"london": {
"BTC": 81201.5,
"ETH": 3205,
"SOL": 96.48,
"timestamp": 1778553600
},
"new_york": {
"BTC": 81262.5,
"ETH": 3210,
"SOL": 96.55,
"timestamp": 1778560800
}
}
}
Pro Tier Adds
Each signal object includes these additional fields:
{
"sources": [
"news",
"whale"
],
"source": "news",
"channel": "google_crypto"
}
Signal Fields
Field Type Description idint Unique signal ID assetstring|null Ticker symbol or null if market-wide signal_typestring regulatory, whale, whale_position, sentiment, price, hack, listing, unlock, research, macro, macro_flow, macro_pulse, liquidation, funding, deleverage, other directionstring bullish, bearish, neutral urgencystring high, medium, low summarystring Max 100 char description confidencefloat 0.0-1.0, calibrated P(win) — per-signal-type binned empirical win rate from closed-trade outcomes (not a raw LLM score). Updated weekly. convictionstring strong, notable, watch, none — our analytical rating of a signal's strength (not a trade instruction). strong is data-driven: it applies only to signal types whose forward-return record clears our statistical bar in paper-trading (see /proof), at the top of that type's score distribution, and only when the expected move clears round-trip trading cost (a move too small to beat fees + slippage is downgraded to notable). Use this field. action_hintstring Deprecated — the prior name for conviction (trade_signal↔strong, alert↔notable, monitor↔watch, ignore↔none). Still emitted this release for backward compatibility; will be removed. Migrate to conviction. corroboratedbool True when multiple sources confirm the asset AND recent reads don't net-contradict the direction (direction-aware — a bullish call isn't confirmed by bearish chatter on the same coin) scorefloat IC-weighted composite: source_weight x urgency x calibrated_confidence x signal-type information coefficient timestampint Unix epoch (seconds) expires_atint When this signal expires sourcesarray Pro only - Source names that contributed sourcestring Pro only - Primary source name channelstring Pro only - Specific channel/feed trade_quality_scorefloat 0.0–1.0 composite signal quality (regime + confidence + corroboration) trade_quality_bandstring A+/A/B/C/D quality band — A+ ≥ 0.85, A ≥ 0.70, B ≥ 0.55, C ≥ 0.40 expected_move_pctfloat|null Estimated move size as % of price based on nearest S/R delta + ATR type_performanceobject This signal type's measured track record: {excess_pct, hit_rate, proven, n} — forward return vs BTC (alpha) at 1h, hit rate, proven flag, sample size reference_pricefloat trade_signal only — algorithmic reference price (analytical, not an entry recommendation) invalidation_levelfloat trade_signal only — price that would falsify the signal's thesis target_levelfloat trade_signal only — nearest analytical target in the signal's direction levels_basisstring trade_signal only — sr_touches (order-book S/R) or model (derived) resistance_low / resistance_highfloat The resistance level's zone band (S/R is an area, not a line) — the price range of the touch cluster. Target the zone edge, not the midpoint. support_low / support_highfloat The support level's zone band — same idea on the support side. resistance_flipped / support_flippedbool Polarity flip: true when this level was originally the opposite role and price has since broken through it (old support now acting as resistance, or vice versa). A flipped level is real but carries a slightly lower strength weight. regime_at_signalstring Market regime when signal was generated: risk-on, risk-off, range, squeeze manipulation_scorefloat 0.0–1.0 coordination/manipulation probability at signal creation time wallet_typestring|null Whale signal only — vc_institutional, smart_whale, market_maker, mev_arb, sniper, etc. smart_money_scorefloat|null Whale signal only — credibility of originating wallet (0.0–1.0) trust_scorefloat|null Launchpad/token signals — composite contract trust (0.0–1.0) rug_probabilityfloat|null Launchpad/token signals — estimated rug/scam probability (0.0–1.0) is_honeypotbool|null Launchpad/token signals — GoPlus honeypot flag historical_edgeobject|null Descriptive stats for this signal's (signal_type × direction × regime_at_signal) cell from closed paper trades. Object: {cell, sample_n, win_rate, avg_pnl_pct, median_pnl_pct, as_of}. Refreshed weekly. Null when regime or type is missing. paired_inverseobject|null Contrarian-direction advisory. Present only when the historical cell is empirically anti-predictive (n ≥ 30, win_rate ≤ 30%, avg_pnl ≤ -2%). Object: {direction, basis, implied_avg_pnl_pct, flipped_cell_stats, advisory_text, citation}. Cites peer-reviewed short-term reversal literature (De Bondt & Thaler 1985, Tetlock 2007, Chan 2003, PLOS One 2024). Informational; never a trade recommendation.
Historical Edge & Paired Inverse
Every signal carries a historical_edge object describing the closed-paper-trade outcomes of past signals in the same (signal_type × direction × regime_at_signal) cell. Stats are refreshed weekly. The fields are descriptive — they do not gate, size, or recommend.
When a cell is empirically anti-predictive (n ≥ 30 closed trades, win rate ≤ 30%, average PnL ≤ -2%), the signal also carries a paired_inverse object. It surfaces the contrarian-direction reading of the same event alongside a citation to peer-reviewed short-term reversal literature (De Bondt & Thaler 1985, Tetlock 2007, Chan 2003, PLOS One 2024). It is presented as data, not a recommendation: the flipped_cell_stats field shows how the opposite-direction cell has actually performed historically, which is often weaker than the implied_avg_pnl_pct would suggest in pure-inversion terms.
Use these fields to interpret signal quality in context. A signal with a strong historical_edge (high win_rate, large avg_pnl_pct, large sample_n) is more reliable than the same signal in a cell where the edge is weak or inverted. The cell stats and any paired-inverse advisory are intended for your own analysis — they are not trade recommendations, and we do not suggest position sizes or leverage.
GET /levels/{coin}
Returns nearest support/resistance from the Hyperliquid order book — as zones (each level carries its price band), with polarity-flip tracking (a broken support is surfaced as resistance, and vice versa).
{
"coin": "BTC",
"current_price": 81262.5,
"nearest_resistance": 81450,
"nearest_support": 80871,
"all_resistance": [
81450,
81800,
82200,
82500,
83000
],
"all_support": [
80871,
80500,
80000,
79500,
79000
]
}
GET /market-opens
Opening prices for BTC, ETH, and SOL at each major trading session.
{
"market_opens": {
"tokyo": {
"BTC": 81150,
"ETH": 3200.5,
"SOL": 96.3,
"timestamp": 1778539200
},
"shanghai": {
"BTC": 81180,
"ETH": 3202,
"SOL": 96.35,
"timestamp": 1778542800
},
"hong_kong": {
"BTC": 81190,
"ETH": 3203.5,
"SOL": 96.4,
"timestamp": 1778542800
},
"london": {
"BTC": 81201.5,
"ETH": 3205,
"SOL": 96.48,
"timestamp": 1778553600
},
"new_york": {
"BTC": 81262.5,
"ETH": 3210,
"SOL": 96.55,
"timestamp": 1778560800
}
}
}
GET /macro
Macro Pulse — our daily directional bias for BTC and ETH. Generated at 07:00 UTC daily (with a deeper 30-day review every Sunday 22:00 UTC). A deterministic macro composite — net liquidity (Fed balance sheet − TGA − RRP), the dollar index, real yields, the 2s10s curve, M2 and VIX, all from FRED — anchors the regime call. That composite is synthesised with the upcoming USD high-impact macro calendar (FOMC, CPI, NFP, PPI, Retail Sales) and the last 7 days of intel signals into a single regime call plus per-asset bias, conviction, key levels, and invalidation. The /macro response carries the raw composite + drivers alongside the narrative read.
Free tier: latest report only, generated_at + regime + bias/conviction. Pro tier: full payload including reasoning, key levels, invalidation, and calendar_risks. Add ?history=N (Pro, max 30) to include the last N snapshots alongside the current report.
{
"generated_at": "2026-05-13T07:00:00+00:00",
"window_days": 7,
"horizon": "week",
"regime": "risk-off",
"regime_reason": "Hotter-than-expected CPI/PPI driving inflation fears and heavy long de-leveraging.",
"btc": {
"bias": "bearish",
"conviction": 0.85,
"reason": "Macro bearishness triggered by PPI surge and heavy long liquidations.",
"key_levels": "$80,000 (psychological), $76,500 (structural)",
"invalidation": "Retail Sales print materially below forecast, sparking risk-on rotation."
},
"eth": {
"bias": "bearish",
"conviction": 0.9,
"reason": "Extreme long squeeze risk; 97% long liquidations on key venues.",
"key_levels": "$3,200 (immediate support), $2,850 (major pivot)",
"invalidation": "Unexpected dovish turn from new Fed chair."
},
"calendar_risks": [
"Core Retail Sales m/m (2026-05-14) — potential further downside if hot",
"Fed Chair Nomination Vote (2026-05-13) — policy uncertainty"
]
}
Field Reference
Field Type Description regimestring risk-on, risk-off, range, squeeze regime_reasonstring ≤120 char rationale btc.bias / eth.biasstring bullish, bearish, neutral btc.conviction / eth.convictionfloat 0.0–1.0. ≥0.7 = very high. ≥0.85 = veto-grade contradictions. btc.reason / eth.reasonstring Primary driver, ≤140 chars btc.key_levels / eth.key_levelsstring Relevant macro pivots btc.invalidation / eth.invalidationstring What flips the call calendar_risksarray Top 1–3 upcoming events that could flip bias window_daysint Lookback window (7 daily / 30 weekly) horizonstring Forward horizon label (e.g. "week", "next two weeks") generated_atstring ISO-8601 UTC. Stale after 36h — clients should refetch.
Auth Endpoints
POST /auth/register
Create a new account. Returns an API key immediately.
{
"api_key": "intel_sk_a1b2c3d4e5f6...",
"key_prefix": "intel_sk",
"tier": "free",
"message": "Save your API key - it will not be shown again."
}
POST /auth/login
{
"token": "eyJhbGciOiJIUzI1NiIs...",
"tier": "free",
"api_keys": [
{
"id": 1,
"prefix": "intel_sk_a1b2",
"name": "default",
"created_at": 1778555605
}
]
}
WebSocket /stream
Pro tier only. Connect to receive signals in real-time.
wss://api.n0brains.com/stream?api_key=intel_sk_...
Signal received:
{"type": "signal", "data": {"id": 195, "asset": "BTC", "signal_type": "whale", "direction": "bullish", "urgency": "high", "summary": "Strategy buys 535 BTC for $43M", "confidence": 0.95, "score": 1.42, "trade_quality_band": "A", "regime_at_signal": "risk-on"}}
Ping/pong:
send: "ping"
recv: {"type": "pong", "timestamp": 1778555605}
Webhooks
Pro tier only. Register a URL to receive POST deliveries for new signals.
POST /webhooks
{
"id": 1,
"url": "https://your-server.com/hooks/n0brains",
"secret": "a1b2c3d4...",
"events": "signal.created",
"note": "Use X-Intel-Signature header to verify deliveries. Secret is shown only once."
}
Delivery Format
POST to your URL with header X-Intel-Signature:
{
"event": "signal.created",
"timestamp": 1778555605,
"data": {
"id": 195,
"asset": "BTC",
"signal_type": "whale",
"direction": "bullish",
"urgency": "high",
"summary": "Strategy buys 535 BTC for $43M",
"confidence": 0.95,
"score": 1.42,
"trade_quality_band": "A",
"regime_at_signal": "risk-on"
}
}
Data Sources and Scoring
The pipeline ingests from the watchers listed below. Each source carries a weight that multiplies into the final signal score — so what you read isn't a raw feed dump, it's one corroborated, ranked number.
score = source_weight × urgency_weight × confidence_decayed
Urgency weights: low: 1.0, medium: 2.0, high: 3.0
Confidence decay: confidence degrades exponentially with age. confidence_decayed = confidence₀ × exp(−age / τ) where τ = half-life / ln(2) per signal type (liquidation: ~43min, hack/sentiment/listing: ~2.9h, whale/price/funding: ~8.7h, regulatory: ~5.8h, macro: ~11.5h, macro_pulse: ~34.6h). A stale signal has a lower score than a fresh one of identical quality.
Source weight self-tuning: weights are EMA-adjusted daily from tracked outcome win rates. Sources that fire correctly get boosted up to 1.4×; sources that underperform are dampened to 0.6×. Minimum 10 outcomes before adjustment.
Active Watchers
- Telegram - WatcherGuru, ZachXBT Investigations, yoyodexhaber, sondakikav
- News RSS - 15 feeds (Reuters, AP, BBC, CNBC, Bloomberg, CoinDesk, CoinTelegraph, Decrypt, Google News, etc.)
- Government RSS - 11 feeds (White House, SEC, CFTC, Fed, Kremlin, Xinhua, TASS, EU, etc.)
- CoinMarketCap - Price alerts, trending coins
- Macro - Fear and Greed Index, DeFi TVL
- Binance - Funding rates, liquidation cascades (WebSocket)
- Market Opens - BTC/ETH/SOL prices at Tokyo, Shanghai, Hong Kong, London, NY session opens
- Exchange Listings - Real CEX listing catalysts: Binance & Bybit launchpad/launchpool, plus new spot-market detection (symbol-list diff) on Binance, Upbit (Korea / kimchi premium), and OKX. Pump.fun / Raydium memecoin launches were dropped — they were ~98% of the old listing feed with no tradeable edge.
- ETF Flows - US spot BTC + ETH + SOL ETF daily net flows via SoSoValue (free public API). Emitted as context (macro_flow, non-directional): a backtest found ETF net inflow does not predict forward returns — it is a coincident/lagging demand print (SOL inflows were contrarian).
- Stablecoin Flows - USDT/USDC Treasury deploy/redeem + net inflow staged to exchange wallets, plus total stablecoin supply trend (DeFiLlama). A leading liquidity read (stablecoin inflow to exchanges leads short-horizon BTC/ETH returns in our data); aggregate supply is dry-powder context.
- On-Chain Valuation - Coin Metrics (free): MVRV, exchange in/outflows + reserves, active addresses (BTC + ETH). Net exchange OUTFLOW / falling reserves = self-custody accumulation; MVRV maps cycle profit/froth. Feeds the Macro Pulse composite's on-chain leg; emitted as context.
- Token Unlocks - DeFiLlama emissions calendar (free). Material near-term unlocks (insider/investor cliffs) on tradeable tokens = scheduled supply that sellers front-run →
unlock signal, bearish. Self-proves via the forward-return gate. - TradFi & CME - Yahoo Finance (free): CME BTC/ETH futures gap (weekend gaps tend to fill — a recurring level read) plus SPX/gold cross-asset correlation context.
- Smart Money - Alchemy ETH WebSocket (alchemy_pendingTransactions) on 408 curated wallets + Etherscan V2 confirmed-tx fallback. 700+ verified labeled addresses (CEX hot/cold, market maker, institutional, smart trader) auto-refreshed weekly from Etherscan label cloud + Alchemy top-volume sweep. MEV bots filtered.
- Stealth Accumulation - Background scanner pulls Etherscan V2
tokentx per tracked wallet every 30 min. Flags wallet receiving same ERC20 in ≥3 fragmented buys totaling ≥$500K within 24 h — catches quiet accumulation before whale-alert feeds. - On-Chain Whale Tracking - Large ETH transfers to/from exchanges via Alchemy WebSocket (threshold 1000 ETH); large BTC transfers via mempool.space WebSocket on tracked cold wallets (threshold 100 BTC). Hyperliquid leaderboard consensus from top traders. SOL CEX flow via Alchemy Solana
accountSubscribe on 12 hot/cold wallets (threshold 10000 SOL). - L/S Ratios - Bybit, Binance, Gate.io positioning data
- S/R Levels - Real-time support/resistance from Hyperliquid order book
- Macro Pulse - Daily BTC + ETH directional bias. Deterministic FRED macro composite (net liquidity, DXY, real yields, curve, VIX, M2) anchors the regime, synthesised with the USD high-impact calendar (FOMC, CPI, NFP, PPI) and 7d intel signals. Sunday weekly 30d deep-dive.
- X (Twitter) API - Curated 11-account feed via official X API v2. Onchain primary (@lookonchain, @spotonchain, @arkham, @whale_alert), official exchange announcements (@binance, @coinbase, @CoinbaseAssets, @upbit_global), and newswire-speed macro (@DeItaone, @FirstSquawk, @DBdaily). 20s polling, retweets and replies filtered.
Source Weights
Source Weight Rationale gov_news 1.3 Market-moving regulatory/policy events smart_money 1.2 On-chain address tracking (Alchemy + Etherscan, 408 wallets) stealth_accumulation 1.4 Fragmented quiet buys (≥3 tx, ≥$500K, 24h window) whale_eth 1.1 Large ETH transfers (Alchemy WS, ≥1000 ETH) whale_btc 1.0 Large BTC transfers (mempool.space WS, ≥100 BTC) telegram:investigations 1.2 High-signal hack/exploit intel x:lookonchain 1.5 Onchain wallet moves with tx hashes — leading indicator x:binance / x:coinbase 1.5 Official exchange listing announcements x:spotonchain / x:arkham 1.4 Onchain analytics, labelled wallets x:CoinbaseAssets 1.4 Coinbase listing roadmap leaks x:DeItaone 1.3 Newswire-speed macro headlines x:upbit_global 1.3 Korea listings, kimchi premium catalyst x:FirstSquawk 1.2 Headline wire, fast macro x:DBdaily 0.9 Corporate adoption tracking x:whale_alert 0.7 Auto-bot, mostly exchange↔cold storage noise binance_funding 1.0 Primary exchange data binance_liq 1.0 Liquidation data cmc_price 0.9 CoinMarketCap price alerts telegram:WatcherGuru 0.9 Fast breaking news rss:trumpstruth 0.9 Market-moving but noisy rss:coindesk 0.8 Established outlet cex_listing 0.8 Real exchange listings (Binance/Bybit/Upbit/OKX) rss:cointelegraph 0.7 General crypto news rss:decrypt 0.7 General crypto news market_open 0.6 Session opening prices macro_fearGreed 0.6 Sentiment index rss:reddit_crypto 0.5 r/CryptoCurrency community signal rss:reddit_btc 0.5 r/Bitcoin community signal dexscreener 0.2 Enrichment only Default (unlisted) 0.5 -
GET /signals/similar
Pro tier only. Semantic nearest-neighbor search across all signals using BGE-M3 vector embeddings. Find signals related by meaning — not just matching keywords.
Query Parameters
Param Type Description coinstring Optional — filter results to this asset ticker qstring Free-text query (defaults to coin name if omitted) kint Number of results (default 5, max 20)
[
{
"id": 182,
"similarity": 0.97,
"summary": "BTC whale | bullish | high | Strategy loads 420 BTC at open",
"metadata": {
"asset": "BTC",
"signal_type": "whale",
"direction": "bullish",
"urgency": "high",
"score": 1.38,
"timestamp": 1778551200
}
},
{
"id": 178,
"similarity": 0.94,
"summary": "BTC whale | bullish | medium | Institutional wallet accumulates 310 BTC",
"metadata": {
"asset": "BTC",
"signal_type": "whale",
"direction": "bullish",
"urgency": "medium",
"score": 1.1,
"timestamp": 1778548800
}
}
]
GET /narrative/{coin}
Pro tier only. Rolling narrative momentum for an asset — how many signals have fired, at what velocity, from how many independent sources, and whether a coordination pattern is detected.
{
"coin": "BTC",
"narrative_strength": 0.74,
"narrative_velocity": 3.2,
"narrative_decay_rate": 0.18,
"manipulation_probability": 0.12,
"dominant_direction": "bullish",
"direction_conviction": 0.81,
"source_diversity": 4,
"signal_count_1h": 7,
"signal_count_4h": 19,
"signal_count_24h": 42,
"disclaimer": "Analytical data only. Not financial advice."
}
Field Reference
Field Type Description narrative_strengthfloat 0.0–1.0 weighted signal volume over 24h narrative_velocityfloat Rate of new signals per hour in 1h window narrative_decay_ratefloat How quickly signal volume is falling (0 = growing, 1 = cold) manipulation_probabilityfloat 0.0–1.0. Elevated if ≥3 independent source types fire same direction within 5 min dominant_directionstring bullish, bearish, or neutral (majority vote across window) direction_convictionfloat Fraction of signals matching dominant direction source_diversityint Number of distinct source types in 1h window signal_count_1h / 4h / 24hint Raw signal count per rolling window
GET /manipulation/{coin}
Pro tier only. Composite manipulation score for an asset. Combines social burst, coordinated pump, and liquidation cascade sub-scores.
{
"coin": "ETH",
"manipulation_score": 0.34,
"social_burst_score": 0.2,
"coordinated_pump_score": 0.5,
"liquidation_cascade_score": 0.1,
"flags": [
"coordinated_pump"
],
"disclaimer": "Analytical data only. Not financial advice."
}
Field Reference
Field Type Description manipulation_scorefloat Composite: social_burst×0.30 + coordinated_pump×0.45 + liq_cascade×0.25 social_burst_scorefloat Elevated if social signal count ≥5× 10-min baseline coordinated_pump_scorefloat Elevated if ≥4 distinct source prefixes fire same direction in 10 min liquidation_cascade_scorefloat Elevated if ≥3 liquidation signals for coin within 15 min flagsarray Active flags: social_burst, coordinated_pump, liquidation_cascade
GET /trust/{coin}
Pro tier only. Trust and scam scoring for a token ticker. Resolves the ticker to a contract address via DexScreener, then checks GoPlus Security for contract flags. Results are cached 6 hours per token address.
{
"asset": "PEPE",
"address": "0x6982508145454ce325ddbe47a25d4ec3d2311933",
"chain_id": "1",
"trust_score": 0.82,
"rug_probability": 0.18,
"contract_risk": 0.1,
"insider_pct": 0.04,
"is_honeypot": false,
"is_mintable": false,
"sell_tax": 0,
"low_liquidity": false,
"liquidity_usd": 4820000,
"flags": [],
"data_source": "goplus",
"computed_at": 1778555605,
"disclaimer": "Analytical data only. Not financial advice."
}
Field Reference
Field Type Description trust_scorefloat 1.0 − rug_probability. Higher = safer. rug_probabilityfloat Composite: contract_risk×0.60 + liquidity_risk×0.20 + vol_liq_risk×0.10 + signal_history_risk×0.10 contract_riskfloat GoPlus-derived. Sums: honeypot (+0.50), mintable (+0.20), owner_can_change_balance (+0.25), upgradeable_proxy (+0.10), high_sell_tax, insider_pct insider_pctfloat Creator + owner combined token holding percentage is_honeypotbool GoPlus honeypot flag — token cannot be sold is_mintablebool Contract can mint unlimited new supply sell_taxfloat Sell transaction tax (0.10 = 10%) low_liquiditybool True if liquidity_usd < $50,000 flagsarray Active contract risk flags from GoPlus data_sourcestring goplus, dexscreener, signal_history_only, or none
Error Responses
// 401 Unauthorized
{"detail": "Invalid API key"}
// 429 Rate Limited
{"detail": "Rate limit exceeded (60 req/min for free tier). Upgrade at https://n0brains.com"}
// 404 Not Found
{"detail": "Signal not found"}
// 403 Forbidden
{"detail": "WebSocket requires Pro tier"}