A read-only JSON API over the Canonical Protocol Registry™ portfolio. Free to use, no authentication required, CORS-enabled for browser clients. Designed for builders, wallets, block explorers, and anyone who wants to reference the CPR taxonomy.
The API is live at https://canonicalprotocolregistry.com/api. Try it in your terminal:
curl https://canonicalprotocolregistry.com/api/health
Service health check. Returns current version, name count, and status.
GET https://canonicalprotocolregistry.com/api/health Try it →Portfolio-wide statistics. Total counts, breakdowns by tier, vertical, and rights type.
GET https://canonicalprotocolregistry.com/api/stats Try it →List all names with optional filters and pagination.
GET https://canonicalprotocolregistry.com/api/names?vertical=CHAIN.L2.ZK&limit=20Query parameters:
| Parameter | Type | Description |
|---|---|---|
vertical | string | Exact match on full dot-notation vertical (e.g., CHAIN.L2.ZK). Case-insensitive. |
tier | int 1-20 | Exact tier match |
min_tier | int | Tier ≥ this value |
max_tier | int | Tier ≤ this value |
rights | string | lease-eligible or transferable |
search | string | Substring match on name (case-insensitive) |
limit | int | Max results, default 100, max 1000 |
offset | int | Pagination offset, default 0 |
Example usages:
# All T20 flagship names
GET /api/names?tier=20
# Everything in the ZK execution segment
GET /api/names?vertical=CHAIN.L2.ZK
# Names containing "zkrollup"
GET /api/names?search=zkrollup
# Top 50 highest-tier names
GET /api/names?min_tier=15&limit=50
Try it (T20 names) →
Full detail for a single name, including all on-chain record fields, both lease prices, and up to 12 related names in the same vertical.
GET https://canonicalprotocolregistry.com/api/names/canonicalprotocolAlso accepts .eth suffix: /api/names/canonicalprotocol.eth.
List all 15 top-level verticals with name counts, segment lists, and tier ranges.
GET https://canonicalprotocolregistry.com/api/verticals Try it →List all dot-notation segments (e.g., CHAIN.L2.ZK) with name counts and tier ranges. Filter by top-level vertical with ?vertical=.
All responses are JSON with Content-Type: application/json. Example response from /api/names/canonicalprotocol:
{
"name": "canonicalprotocol",
"ens": "canonicalprotocol.eth",
"url": "https://canonicalprotocolregistry.com/n/canonicalprotocol.html",
"vertical": "CHAIN.NAMESPACE",
"tier": 20,
"annual_lease_usd": 15000,
"transferable_lease_usd": 22500,
"rights": "lease-eligible",
"description": "Canonical protocol primitive...",
"records": {
"vertical": "CHAIN.NAMESPACE",
"category": "namespace-registry",
"type": "canonical-protocol-layer",
"purpose": "canonical-protocol-standard",
"rights": "lease-eligible",
"mapping": "inheritance:infra",
"schema": "ensv2-taxonomy-v1"
},
"related": [...]
}
Responses are cached at Vercel's edge for 60 seconds (CDN cache: 5 minutes). Data is refreshed whenever the underlying portfolio updates. Typical latency is under 50ms globally.
No per-user rate limits currently enforced — the API is read-only and static. If you plan to poll heavily or integrate in production, let us know so we can monitor usage patterns.
What this API is good for:
.eth namesThe Canonical Protocol Registry™ is a curated registry of protocol-grade ENS infrastructure namespaces operated by Craig Vsetula LLC. Every name in the portfolio has been scored, categorized, and assigned on-chain records per the published taxonomy. See ENS Ontology for the doctrine or browse the registry.
Names are available via lease-only subdomain leasing — parent names are not sold. Once ENSv2 launches, the full leasing flow activates on-chain.