← canonicalprotocolregistry.com
Developer Documentation

CPR Public API Query 2,750 curated ENS infrastructure namespaces programmatically

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.

Quick Start

The API is live at https://canonicalprotocolregistry.com/api. Try it in your terminal:

curl https://canonicalprotocolregistry.com/api/health
No API key required. Responses are cached at the edge for 60 seconds. Feel free to integrate this into dApps, dashboards, or directories.

Endpoints

GET/api/health

Service health check. Returns current version, name count, and status.

GET https://canonicalprotocolregistry.com/api/health Try it →

GET/api/stats

Portfolio-wide statistics. Total counts, breakdowns by tier, vertical, and rights type.

GET https://canonicalprotocolregistry.com/api/stats Try it →

GET/api/names

List all names with optional filters and pagination.

GET https://canonicalprotocolregistry.com/api/names?vertical=CHAIN.L2.ZK&limit=20

Query parameters:

ParameterTypeDescription
verticalstringExact match on full dot-notation vertical (e.g., CHAIN.L2.ZK). Case-insensitive.
tierint 1-20Exact tier match
min_tierintTier ≥ this value
max_tierintTier ≤ this value
rightsstringlease-eligible or transferable
searchstringSubstring match on name (case-insensitive)
limitintMax results, default 100, max 1000
offsetintPagination 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) →

GET/api/names/<name>

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/canonicalprotocol

Also accepts .eth suffix: /api/names/canonicalprotocol.eth.

Try it →

GET/api/verticals

List all 15 top-level verticals with name counts, segment lists, and tier ranges.

GET https://canonicalprotocolregistry.com/api/verticals Try it →

GET/api/segments

List all dot-notation segments (e.g., CHAIN.L2.ZK) with name counts and tier ranges. Filter by top-level vertical with ?vertical=.

GET https://canonicalprotocolregistry.com/api/segments?vertical=CHAIN Try it (CHAIN segments) →

Response Format

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": [...]
}

Caching & Rate Limits

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.

Use Cases

What this API is good for:

About the Registry

The 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.