lahza / API
API & streams

The score, as data.

Everything on the board, as JSON and as a WebSocket stream — in two layers. Public: what the dashboard shows, for everyone, no key. Evidence: raw observations and breakdowns, for an ecosystem through its foundation's partnership.

Base URLs
RESThttps://api.lahza.xyz/v1public + evidence endpoints
WS · publicwss://stream.lahza.xyz/v1/publicno key · what the dashboard subscribes to
WS · evidencewss://stream.lahza.xyz/v1/stream?chain=…partnership key · one subscription per chain

All responses are JSON. Times are UTC, durations in milliseconds. Every observation carries the hash of the user transaction it timed. Evidence endpoints authenticate with Authorization: Bearer <key>.

Endpoints

Click any endpoint for a sample response.

Public · no key
GET/v1/chainsAll measured chains with current score, finality p50/p95/p99, uptime and ICM delivery
GET/v1/chains/{id}One chain in full: regions, validator set, open incidents, 30-day trend
GET/v1/badge/{id}.svgLive SVG badge for a chain — embeddable in one line of HTML
GET/v1/indexAvalanche Reliability Index: monthly ecosystem median finality, with history
GET/v1/methodologyThe scoring formula and weights in force, versioned
WS/v1/publicPublic WebSocket: score updates, incidents with evidence, index — what the dashboard subscribes to
GET/v1/chains/{id}/incidentsIncident timeline: start, end, duration, affected metric, leg
Evidence · partnership key
GET/v1/chains/{id}/finality?window=7d&region=fraRaw finality observations with transaction hashes, per observatory
GET/v1/icm/routesEvery measured route: source, destination, delivery rate, per-leg p50/p95
WS/v1/stream?chain={id}WebSocket: every measurement and incident for a chain, as it happens

Example

# one chain, in full
curl -s https://api.lahza.xyz/v1/chains/meridian-finance \
  -H "Authorization: Bearer $ES_KEY"

Live badge

<a href="https://lahza.xyz/dashboard/#meridian-finance">
  <img src="https://api.lahza.xyz/v1/badge/meridian-finance.svg"
       alt="Measured by Lahza">
</a>

Keys & limits

Public endpoints need no key (120 requests per minute per IP). Evidence endpoints use one Bearer key per organisation, issued through an ecosystem partnership or by request: 600 requests per minute and one evidence subscription per chain. Foundation keys are ecosystem-wide. Bulk export under a data licence.

Access & versioning

The evidence layer is opened to an ecosystem through its foundation's partnership, under the foundation's name; teams in ecosystems without a partnership can request early access. Raw historical data is available under a data licence. The observer and scoring engine are proprietary; the methodology that governs them is public and versioned. Breaking changes ship as /v2 with six months of overlap.