WoT Scoring API

Complete reference for the Nostr Web of Trust scoring service

NIP-85 27 Endpoints L402 Lightning Paywall REST/JSON

Authentication & Pricing

All endpoints support CORS and accept hex pubkeys, npub (bech32), or NIP-05 identifiers.

Free tier: 10 requests/day per IP on priced endpoints. Unpriced endpoints are unlimited.

L402 payment flow: Request → 402 response with Lightning invoice → Pay invoice → Retry with X-Payment-Hash header.

Rate limit: 100 requests/min per IP.

Base URL: https://wot.klabo.world

OpenAPI Spec: GET /openapi.json — machine-readable API specification

API Explorer: Swagger UI — interactive API testing in your browser

Interactive Demo: WoT Explorer — visual trust dashboard for any Nostr pubkey

Scoring

Core trust scoring powered by PageRank over the Nostr follow graph.

GET /score 1 sat
Get the WoT trust score for any Nostr pubkey. Returns PageRank-based score (0-100), follower/engagement stats, topics, and external assertions.
Parameters
pubkeystringHex pubkey, npub, or NIP-05 identifier required
Example
curl "https://wot.klabo.world/score?pubkey=npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m"
Response
{ "pubkey": "82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2", "score": 21, "raw_score": 0.00847, "found": true, "followers": 87421, "post_count": 1203, "reactions": 54302, "zap_amount": 1250000, "zap_count": 892, "topics": ["bitcoin", "nostr", "lightning"], "composite_score": 23, "graph_size": 145000 }
GET /audit 5 sats
Detailed breakdown of all scoring components: PageRank position, engagement metrics, top followers, external assertions, and graph context.
Parameters
pubkeystringHex pubkey, npub, or NIP-05 required
Example
curl "https://wot.klabo.world/[email protected]"
POST /batch 10 sats
Score up to 100 pubkeys in a single request. Returns score, found status, and follower count for each.
Request Body (JSON)
pubkeysstring[]Array of hex pubkeys or npubs (max 100) required
Example
curl -X POST "https://wot.klabo.world/batch" \ -d '{"pubkeys":["82341f...","32e18..."]}'

Personalized

Trust scoring relative to a viewer's perspective, based on follow graph proximity.

GET /personalized 2 sats
Personalized trust score blending 50% global PageRank with 50% follow-graph proximity. Shows mutual follows, shared connections, and trusted followers of the target.
Parameters
viewerstringViewer's pubkey required
targetstringTarget pubkey to evaluate required
Example
curl "https://wot.klabo.world/personalized?viewer=82341f...&target=32e18..."
GET /similar 2 sats
Find users with similar follow patterns using Jaccard similarity (70% follow overlap + 30% WoT score).
Parameters
pubkeystringReference pubkey required
limitintResults to return (1-50, default 20)
GET /recommend 2 sats
Friends-of-friends follow recommendations. Shows people your follows trust that you don't yet follow, ranked by mutual connection count.
Parameters
pubkeystringYour pubkey required
limitintResults (1-50, default 20)
GET /compare 2 sats
Compare two pubkeys: relationship type, shared follows/followers, follow similarity (Jaccard), trust path between them, and full profile stats.
Parameters
astringFirst pubkey required
bstringSecond pubkey required

Graph

Explore the follow graph structure: trust paths, neighborhoods, and visualizations.

GET /graph FREE
Two modes: Trust Path (shortest path between two pubkeys via BFS, max 6 hops) or Neighborhood (local follow network around a pubkey).
Path Mode
fromstringSource pubkey required
tostringTarget pubkey required
Neighborhood Mode
pubkeystringCenter pubkey required
depthintGraph depth (1-2, default 1)
limitintMax neighbors (1-200, default 50)
GET /weboftrust 3 sats
D3.js-compatible force-directed graph data centered on a pubkey. Returns nodes with group classification (center/follow/follower/mutual) and edges for visualization.
Parameters
pubkeystringCenter pubkey required
limitintNodes per direction (1-200, default 50)
Response Structure
{ "pubkey": "...", "score": 18, "rank": 3, "nodes": [{"id":"...","score":18,"followers":87421,"follows":892,"group":"center"}, ...], "links": [{"source":"...","target":"...","type":"follows"}, ...], "node_count": 61, "link_count": 145 }

Identity

NIP-05 identity resolution, verification, and reverse lookups with WoT trust profiles.

GET /nip05 1 sat
Resolve a NIP-05 identifier to a pubkey, verify it, and return a full trust profile with trust level classification.
Parameters
idstringNIP-05 identifier (e.g. [email protected]) required
Trust Levels
highly_trusted (80-100) | trusted (60-79) | moderate (40-59) | low (20-39) | untrusted (1-19) | unknown (0)
POST /nip05/batch 5 sats
Batch NIP-05 resolution for up to 50 identifiers with concurrent DNS lookups.
Request Body (JSON)
identifiersstring[]Array of NIP-05 identifiers (max 50) required
GET /nip05/reverse 2 sats
Reverse NIP-05 lookup: given a pubkey, fetch their profile from relays, extract their NIP-05 claim, then verify it resolves back (bidirectional verification).
Parameters
pubkeystringHex pubkey or npub required

Temporal

Time-aware trust scoring and historical analysis.

GET /timeline 2 sats
Historical trust growth timeline. Uses follow timestamps to reconstruct month-by-month follower accumulation with growth velocity and estimated scores.
Parameters
pubkeystringHex pubkey or npub required
Response (abbreviated)
{ "pubkey": "...", "current_score": 18, "current_followers": 87421, "points": [ {"date":"2022-01","cumulative_follows":120,"new_follows":120,"estimated_score":3,"velocity":3.9}, {"date":"2022-02","cumulative_follows":450,"new_follows":330,"estimated_score":5,"velocity":11.8} ], "first_follow": "2022-01-15T...", "latest_follow": "2026-02-08T..." }
GET /decay 1 sat
Time-decayed trust score using exponential decay. Newer follows count more than older ones. Configurable half-life.
Parameters
pubkeystringHex pubkey or npub required
half_lifeintHalf-life in days (1-3650, default 365)
Algorithm
weight(follow) = exp(-ln(2) * age_days / half_life) decay_score = normalized(sum(weight * pagerank_contribution))
GET /decay/top FREE
Top pubkeys by time-decayed score. Shows rank changes vs static PageRank — identifies accounts gaining or losing trust momentum.
Parameters
half_lifeintHalf-life in days (1-3650, default 365)
limitintResults (1-200, default 50)

Moderation

Spam detection using multi-signal WoT-based analysis.

GET /spam 2 sats
Multi-signal spam probability analysis. Combines WoT score, follow ratio, account age, engagement, reports, and activity patterns into a 0-100% spam probability with detailed signal breakdown.
Parameters
pubkeystringHex pubkey or npub required
Signal Weights
wot_score: 0.30 | follow_ratio: 0.15 | account_age: 0.15 engagement: 0.15 | reports: 0.15 | activity_pattern: 0.10 Thresholds: >= 70%% likely_spam | 40-70%% suspicious | < 40%% likely_human
POST /spam/batch 10 sats
Bulk spam check for up to 100 pubkeys. Returns compact classification results with aggregated summary counts.
Request Body (JSON)
pubkeysstring[]Array of hex pubkeys or npubs (max 100) required
Response (abbreviated)
{ "results": [{"pubkey":"...","spam_probability":0.12,"classification":"likely_human","summary":"..."}], "summary": {"likely_human":1,"suspicious":0,"likely_spam":0,"errors":0} }

Verification

Cross-provider NIP-85 assertion verification.

POST /verify 2 sats
Verify a NIP-85 kind 30382 assertion from any provider against our graph data. Checks cryptographic signature, then cross-references claimed rank and follower count. Returns verdict: consistent, divergent, unverifiable, or invalid.
Request Body (JSON)
eventNostr EventA kind 30382 event with id, pubkey, created_at, kind, tags, content, sig required
Response
{ "valid": true, "verdict": "consistent", "kind": 30382, "provider_pubkey": "abc123...", "subject_pubkey": "def456...", "checks": [ {"field": "rank", "claimed": 42, "observed": 45, "status": "close"}, {"field": "followers", "claimed": 150, "observed": 150, "status": "match"} ], "match_count": 2, "total_checks": 2, "graph_size": 51319 }
GET /anomalies 3 sats
Trust anomaly detection: analyzes a pubkey's trust graph for suspicious patterns including follow-farming (high follow-back ratio), ghost/bot followers (zero-score followers), trust concentration (single-source dependency), score-follower divergence, and excessive following. Returns individual anomaly flags with severity levels and an overall risk assessment.
Parameters
pubkeystringHex pubkey or npub to analyze required
Response
{ "pubkey": "abc123...", "score": 42, "rank": 1500, "followers": 500, "follows": 480, "follow_back_ratio": 0.96, "ghost_followers": 350, "ghost_ratio": 0.7, "top_follower_share": 0.15, "score_percentile": 0.85, "anomalies": [ { "type": "follow_farming", "severity": "high", "description": "Follows back 96% of 500 followers...", "value": 0.96, "threshold": 0.9 } ], "anomaly_count": 1, "risk_level": "high", "graph_size": 51319 }

Sybil Resistance

Sybil detection and resistance scoring for relay operators. Combines five graph analysis signals into a single actionable score.

GET /sybil 3 sats
Computes a Sybil resistance score (0-100, where 100 = most genuine) by analyzing five signals: follower quality, mutual trust, score-rank consistency, follower diversity, and account substance. Returns a classification (genuine, likely_genuine, suspicious, likely_sybil), confidence level, and full signal breakdown. Designed for relay operators to gate access or filter content.
Parameters
pubkeystringHex pubkey or npub to analyze required
Response
{ "pubkey": "abc123...", "sybil_score": 82, "classification": "genuine", "confidence": 0.9, "signals": [ {"name": "follower_quality", "score": 0.85, "weight": 0.3, "description": "Average follower WoT score: 25.5", "value": 25.5}, {"name": "mutual_trust", "score": 0.8, "weight": 0.25, "description": "12 mutual follows (3 high-value)", "value": 12}, {"name": "score_consistency", "score": 0.75, "weight": 0.15, "description": "PageRank percentile 85%...", "value": 0.85}, {"name": "follower_diversity", "score": 0.9, "weight": 0.15, "description": "Follower neighborhood diversity", "value": 0.9}, {"name": "account_substance", "score": 0.7, "weight": 0.15, "description": "Account substance: score 42...", "value": 42} ], "trust_score": 42, "rank": 1500, "followers": 200, "follows": 150, "mutual_count": 12, "high_value_mutuals": 3, "graph_size": 51319 }
POST /sybil/batch 10 sats
Batch Sybil resistance scoring for up to 50 pubkeys. Uses simplified scoring for performance. Results sorted by sybil_score ascending (most suspicious first). Useful for relay operators filtering event streams or moderating communities.
Request Body
pubkeysstring[]Array of hex pubkeys or npubs (max 50) required
Response
{ "results": [ {"pubkey": "suspicious123...", "sybil_score": 15, "classification": "likely_sybil", "trust_score": 2, "followers": 500}, {"pubkey": "genuine456...", "sybil_score": 85, "classification": "genuine", "trust_score": 67, "followers": 120} ], "count": 2, "graph_size": 51319 }

Trust Paths

Multi-hop trust path analysis. Find and score the trust connections between any two pubkeys through the follow graph.

GET /trust-path 5 sats
Finds multiple trust paths between two pubkeys, scores each path by trust attenuation (product of WoT scores along hops with mutual-follow bonus), identifies weakest links, and combines independent paths for overall trust assessment. Returns classification: strong, moderate, weak, or none.
Parameters
fromstringSource hex pubkey or npub required
tostringTarget hex pubkey or npub required
max_pathsintMaximum paths to find (1-5, default 3)
Response
{ "from": "82341f88...", "to": "e88a691e...", "connected": true, "paths": [ { "hops": [ {"pubkey": "82341f88...", "wot_score": 65, "is_mutual": true}, {"pubkey": "abc123...", "wot_score": 72, "is_mutual": false}, {"pubkey": "e88a691e...", "wot_score": 45, "is_mutual": false} ], "length": 2, "trust_score": 0.362, "weakest_hop": 2 } ], "best_trust": 0.362, "path_diversity": 1, "overall_trust": 0.362, "classification": "moderate", "graph_size": 51319 }

Reputation

Comprehensive reputation profiles. A single endpoint that combines WoT standing, Sybil resistance, community integration, anomaly cleanliness, and network diversity into one reputation grade (A-F).

GET /reputation 5 sats
Composite reputation score (0-100) combining five dimensions: WoT standing (PageRank percentile), Sybil resistance (follower quality + mutual trust), community integration (cluster membership), anomaly cleanliness (absence of manipulation flags), and network diversity (follower spread). Returns letter grade (A-F), classification, confidence, and per-component breakdown.
Parameters
pubkeystringHex pubkey or npub required
Response
{ "pubkey": "32e1827635...", "reputation_score": 72, "grade": "B", "classification": "good", "confidence": 0.85, "components": [ {"name": "wot_standing", "score": 0.82, "weight": 0.30, "grade": "A", "description": "WoT percentile: 85%"}, {"name": "sybil_resistance", "score": 0.65, "weight": 0.25, "grade": "B", "description": "Follower quality 18.2, 45 mutuals"}, {"name": "community_integration", "score": 0.70, "weight": 0.15, "grade": "B", "description": "Community size: 1200"}, {"name": "anomaly_cleanliness", "score": 1.0, "weight": 0.15, "grade": "A", "description": "0 anomaly flags"}, {"name": "network_diversity", "score": 0.55, "weight": 0.15, "grade": "C", "description": "Follower diversity"} ], "summary": "32e18276...7a3: Grade B (72/100) — WoT score 78, no anomalies, community of 1200", "trust_score": 78, "sybil_score": 65, "anomaly_count": 0, "community_size": 1200, "followers": 850, "follows": 320, "mutual_count": 45, "percentile": 0.85, "graph_size": 51319 }

Graph-theoretic link prediction. Estimate the likelihood of a follow relationship forming between any two pubkeys using five complementary signals from the social graph.

GET /predict 3 sats
Predict whether source will follow target using five signals: Common Neighbors (shared connections), Adamic-Adar Index (rarity-weighted common connections), Preferential Attachment (degree product), Jaccard Coefficient (neighborhood overlap), and WoT Score Proximity (trust score similarity). Returns prediction (0-1), confidence, classification, per-signal breakdown, and top mutual connections.
Parameters
sourcestringSource hex pubkey or npub required
targetstringTarget hex pubkey or npub required
Response
{ "source": "32e1827635...", "target": "82341f882b...", "already_follows": false, "prediction": 0.672, "confidence": 0.95, "classification": "likely", "signals": [ {"name": "common_neighbors", "raw_value": 15, "normalized": 0.75, "weight": 0.30, "description": "15 shared connections"}, {"name": "adamic_adar", "raw_value": 3.42, "normalized": 0.684, "weight": 0.25, "description": "Weighted common neighbors"}, {"name": "preferential_attachment", "raw_value": 125000, "normalized": 0.64, "weight": 0.10, "description": "500 × 250 = 125000"}, {"name": "jaccard_coefficient", "raw_value": 0.12, "normalized": 0.12, "weight": 0.20, "description": "Neighborhood overlap: 45 / 375"}, {"name": "wot_proximity", "raw_value": 0.92, "normalized": 0.92, "weight": 0.15, "description": "Trust scores: source=78, target=86"} ], "top_mutuals": [ {"pubkey": "abc123...", "wot_score": 82} ], "graph_size": 51319 }

Influence Analysis

What-if analysis for graph changes. Simulate a follow or unfollow and see how PageRank scores cascade through the network.

GET /influence 5 sats
Differential PageRank analysis: simulate a follow/unfollow and see which pubkeys are most affected. Returns the target's score change, the top 20 most-affected pubkeys with their score deltas, and summary metrics including influence radius and classification.
Parameters
pubkeystringThe pubkey being followed/unfollowed required
otherstringThe pubkey performing the action required
actionstringfollow or unfollow (default: follow)
Response
{ "pubkey": "32e1827635...", "action": "follow", "other": "82341f882b...", "current_score": 78, "simulated_score": 79, "score_delta": 1, "affected_count": 4231, "max_delta": 0.000012345, "top_affected": [ {"pubkey": "32e1827635...", "current_score": 78, "new_score": 79, "delta": 1, "raw_delta": 0.000012345, "direction": "increase"}, {"pubkey": "abc123...", "current_score": 45, "new_score": 44, "delta": -1, "raw_delta": -0.000008765, "direction": "decrease"} ], "summary": { "total_positive": 1200, "total_negative": 3031, "avg_delta": 0.000000543, "influence_radius": "moderate", "classification": "moderate" }, "graph_size": 51319 }
POST /influence/batch 10 sats
Batch static influence analysis for up to 50 pubkeys. Returns trust score, percentile rank, follower metrics, mutual connections, 2-hop reach estimate, and network role classification (hub, authority, connector, consumer, observer, participant, isolated). No simulation — uses pre-computed PageRank. Results sorted by trust score descending.
Request Body (JSON)
pubkeysstring[]Array of hex pubkeys or npub identifiers (max 50) required
Response
{ "results": [ { "pubkey": "32e1827635...", "trust_score": 89, "percentile": 0.992, "rank": 42, "followers": 1843, "follows": 312, "avg_follower_quality": 34.7, "mutual_count": 187, "reach_estimate": 28450, "classification": "hub" }, { "pubkey": "82341f882b...", "trust_score": 45, "percentile": 0.731, "rank": 13820, "followers": 52, "follows": 89, "avg_follower_quality": 22.1, "mutual_count": 31, "reach_estimate": 1240, "classification": "connector" } ], "graph_size": 51319 }

Trust Circles

Mutual-follow trust circle analysis. Discover a pubkey's closest trusted connections and how tightly connected they are.

GET /trust-circle 5 sats
Analyzes the trust circle (mutual follows) for a pubkey. Returns per-member trust scores, shared follow counts, mutual strength metrics, and aggregate circle analytics including cohesion (mutual interconnection), density (directed edge coverage), role distribution, and an inner circle of the top 10 most-trusted connections.
Parameters
pubkeystringHex pubkey or npub to analyze required
Response
{ "pubkey": "32e1827635...", "trust_score": 78, "circle_size": 187, "members": [ { "pubkey": "82341f882b...", "trust_score": 89, "percentile": 0.992, "rank": 42, "mutual_strength": 0.832, "shared_follows": 45, "classification": "hub" }, { "pubkey": "abc123...", "trust_score": 67, "percentile": 0.891, "rank": 567, "mutual_strength": 0.721, "shared_follows": 23, "classification": "connector" } ], "inner_circle": [ {"pubkey": "82341f882b...", "trust_score": 89, "mutual_strength": 0.832, "classification": "hub"} ], "metrics": { "avg_trust_score": 42.3, "median_trust": 38, "cohesion": 0.234, "density": 0.156, "top_role": "participant", "role_counts": {"hub": 3, "authority": 12, "connector": 28, "participant": 144} }, "graph_size": 51319 }
GET /trust-circle/compare 5 sats
Compares the trust circles of two pubkeys. Returns overlapping members (trusted by both), unique members (trusted by only one), and a compatibility score (0-100) based on circle overlap, shared follows, and WoT quality. Perfect for "how compatible are these two users?" or "who do we both trust?"
Parameters
pubkey1stringFirst hex pubkey or npub required
pubkey2stringSecond hex pubkey or npub required
Response
{ "pubkey1": "32e1827635...", "pubkey2": "82341f882b...", "trust_score_1": 78, "trust_score_2": 89, "circle_size_1": 187, "circle_size_2": 234, "compatibility": { "score": 42, "classification": "moderate", "overlap_count": 67, "overlap_ratio": 0.189, "avg_overlap_wot": 45.3, "shared_follows": 156, "shared_ratio": 0.312 }, "overlap": [ {"pubkey": "abc123...", "trust_score": 72, "strength_with_1": 0.821, "strength_with_2": 0.756} ], "unique_to_1": [ {"pubkey": "def456...", "trust_score": 55} ], "unique_to_2": [ {"pubkey": "ghi789...", "trust_score": 61} ], "graph_size": 51319 }

Follow Quality

Analyze the quality and health of a pubkey's follow list. Help users curate better follow lists.

GET /follow-quality 5 sats
Evaluates the quality of who a pubkey follows. Scores each follow by trust score and categorizes into tiers (strong/moderate/weak/unknown). Returns an overall quality score (0-100), breakdown metrics (average trust, reciprocity, diversity, signal ratio), and suggests low-quality follows to reconsider.
Parameters
pubkeystringHex pubkey or npub to analyze required
suggestionsintegerMax low-quality suggestions (default 10, max 50)
Response
{ "pubkey": "32e1827635...", "trust_score": 78, "follow_count": 342, "quality_score": 67, "classification": "good", "breakdown": { "avg_trust_score": 28.4, "median_trust_score": 24, "diversity": 0.812, "reciprocity": 0.623, "signal_ratio": 0.891 }, "categories": { "strong": 45, "moderate": 128, "weak": 132, "unknown": 37 }, "suggestions": [ { "pubkey": "abc123...", "trust_score": 0, "reason": "not found in trust graph — may be inactive or a ghost account; does not follow you back" }, { "pubkey": "def456...", "trust_score": 3, "reason": "very low trust score (3) — minimal network presence" } ], "graph_size": 51319 }

Network Health

Graph topology analysis and overall network health assessment.

GET /network-health 5 sats
Comprehensive network topology health analysis. Computes degree distribution, connectivity (weakly connected components), reciprocity (mutual follows), Gini coefficient of score centralization, power-law exponent, and top network hubs. Returns an overall health score (0-100) and classification.
Response
{ "graph_size": 51319, "edge_count": 3847201, "density": 0.001461, "reciprocity": 0.237, "connectivity": { "largest_component_size": 48932, "largest_component_percent": 95.35, "component_count": 847, "isolated_nodes": 312 }, "degree_stats": { "mean_in_degree": 74.97, "mean_out_degree": 74.97, "median_in_degree": 12, "median_out_degree": 23, "max_in_degree": 18432, "max_out_degree": 5291, "power_law_alpha": 2.31 }, "score_distribution": { "gini_coefficient": 0.72, "top_1_percent_share": 38.4, "top_10_percent_share": 78.2, "median_score": 5, "centralization": "centralized" }, "top_hubs": [ {"pubkey": "32e1827635...", "in_degree": 18432, "out_degree": 842, "score": 98} ], "classification": "good", "health_score": 68 }

Cross-Provider Comparison

Compare WoT scores from multiple independent NIP-85 providers to assess consensus.

GET /compare-providers?pubkey=<hex|npub> 5 sats
Returns trust scores for a pubkey from our engine and all known external NIP-85 providers. Includes consensus metrics (mean, median, standard deviation, min/max spread, and agreement level). Demonstrates NIP-85 interoperability — different providers independently scoring the same pubkey.
Response
{ "pubkey": "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245", "in_graph": true, "providers": [ {"provider_pubkey": "self", "raw_rank": 95, "normalized_rank": 95, "followers": 18432, "is_ours": true}, {"provider_pubkey": "abc123...", "raw_rank": 92, "normalized_rank": 92, "followers": 17800, "is_ours": false, "assertion_count": 12500, "age_seconds": 3600}, {"provider_pubkey": "def456...", "raw_rank": 88, "normalized_rank": 88, "followers": 16200, "is_ours": false, "assertion_count": 8700, "age_seconds": 7200} ], "consensus": { "provider_count": 3, "mean": 91.7, "median": 92.0, "std_dev": 2.9, "min": 88, "max": 95, "spread": 7, "agreement": "strong" }, "graph_size": 51319 }

Real-Time Streaming

WebSocket endpoint for live score updates pushed after each graph recomputation.

WS /ws/scores FREE
Subscribe to real-time score updates for specific pubkeys. After connecting, send a subscribe message with pubkeys to watch. You'll receive current scores immediately, then updated scores after each graph recomputation (~6 hours).
Subscribe Message
{"type":"subscribe","pubkeys":[""]}
Score Response
{ "type": "scores", "scores": [ { "pubkey": "82341f...", "score": 87, "raw_score": 0.00234, "percentile": 0.9812, "rank": 42 } ], "stats": { "nodes": 51319, "edges": 3847201, "updated_at": "2026-02-09T12:00:00Z" } }

Engagement

Event-level and metadata scoring for NIP-85 assertions.

GET /metadata FREE
Full NIP-85 engagement metadata: posts, replies, reactions, zaps sent/received, and first event timestamp.
Parameters
pubkeystringHex pubkey or npub required
GET /event FREE
Engagement score for a specific Nostr event (kind 30383): comments, reposts, reactions, zaps.
Parameters
idstringEvent ID (hex) required
GET /external FREE
External identifier scores (NIP-73, kind 30385). Without an id parameter, returns top 50 identifiers. With id, returns the specific identifier's engagement data.
Parameters
idstringExternal identifier (optional — omit for top 50)

Ranking

GET /top FREE
Top 50 most-trusted pubkeys by PageRank with normalized scores and follower counts.
GET /export FREE
Export all pubkeys and scores as a JSON array. Full graph dump for offline analysis.

Infrastructure

GET /relay FREE
Relay trust score combining infrastructure metrics from trustedrelays.xyz (70%) with operator WoT score (30%). Includes uptime, quality, and accessibility data.
Parameters
urlstringRelay URL (e.g. wss://relay.damus.io) required
GET /authorized FREE
Kind 10040 authorized users who declared trust in this NIP-85 provider.
Parameters
pubkeystringFilter by specific provider (optional)
GET /communities FREE
Trust communities detected via label propagation over the follow graph. With a pubkey, returns that user's community and peers.
Parameters
pubkeystringGet community for specific pubkey (optional)
POST /publish FREE
Publish all NIP-85 assertion events (kinds 30382, 30383, 30384, 30385) and NIP-89 handler info to configured relays.
GET /providers FREE
External NIP-85 assertion providers and their assertion counts.
GET /stats FREE
Service metadata: graph size, algorithm config, relay list, rate limits, and uptime.
GET /health FREE
Health check endpoint. Returns ready/starting status and graph statistics.