Node Scorecard API

Independent measurement and scoring of the Sentinel dVPN network. Pay per call in USDC over x402 — no account, no API key, no signup.

Paid endpoints

EndpointPriceReturns
GET /scorecard/network-stats$0.010Network-wide Sentinel dVPN health report: ASN concentration and HHI index, verified residential share, protocol mix, censorship-resistance mix, country distribution, SLA speed percentiles, P2P price percentiles. Also returns chain_registry: lifetime node registrations on the Sentinel chain versus nodes currently in active status, counted directly on-chain — the gap shows how much of the advertised network is actually alive. No parameters.
GET /scorecard/recommend$0.010Ranked node recommendations for a stated need, diversified across ASNs and countries so the result is not concentrated on one provider. Returns one recommendation plus three alternatives.
need string — Free text describing the requirement, e.g. "privacy residential" or "speed europe". Matched case-insensitively.
country string — Restrict candidates to a single country, exact name, case-insensitive, e.g. "Germany".
GET /scorecard/nodes$0.005Snapshot of nodes with composite score, reliability, uptime, SLA speed, price, ASN, jurisdiction freedom and residential verification. Returns active nodes by default.
all string, one of: 1 — Set to 1 to return every tracked node instead of only the active ones.
GET /scorecard/nodes/top$0.005Top nodes by composite score, with filtering and anti-concentration controls.
n integer, default 5, range 1-50 — How many nodes to return. Values outside the range are clamped.
max_per_asn integer, default 2, min 1 — Anti-concentration cap: maximum number of returned nodes sharing one ASN.
min_score number, default 0 — Minimum composite score, 0 to 100.
country string — Exact country name, case-insensitive.
protocol string, one of: v2ray | wireguard | xray | openvpn | hysteria2 | amneziawg — Filter by protocol. Also matches multi-protocol nodes that advertise it.
sla_only string, one of: true — Set to true to return only nodes that passed the SLA speed test.
GET /scorecard/node/:address$0.003Full scorecard for a single node, addressed by its sentnode1... bech32 address. No query parameters.

Free endpoints

Payment

Protocol
x402 v2
Base mainnet
eip155:8453
USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
pay to 0x0fcc5724d2dddf79ce1af1f091a823fd6438ef73
Solana mainnet
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
USDC EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
pay to 7KjmSaLhpJJScHEdmUV2CDR47FVxR7jv7DV8QEMszhDi
The facilitator sponsors the transaction fee, so no SOL is needed to pay.
Facilitator
https://facilitator.payai.network

Call any paid endpoint. The 402 response carries a PAYMENT-REQUIRED header with the full x402 payload. Sign and retry with the PAYMENT header. Failed requests (HTTP >= 400) are never settled.

Data

Independent collector polling every active node API directly, plus on-chain state. Not self-reported by node operators. Refresh: hourly. Responses cached 600s.