Explorer API
Routes that exist in this app. Partial = bridge may return empty / error pre-testnet.
Lab base
http://localhost:3055Format
JSON / Prometheus textAuth
None (lab / controlled access)Endpoints
Response shapes
Canonical TypeScript lives in zeqron-explorer/src/lib/types.ts. Field presence depends on the bridge — partial is expected.
Vertex (Block)id, height, round, hash, proposer, parentIds[], txCount, status: pending|finalized|anchor, signature
Validatorid, name?, status, stake?, uptime?, blocksProposed?, version?, peerCount?
LabMetricsonline, total, aggregate{maxRound,sumPeers,maxUptimeSeconds}, nodes[{port,ok,peers,round,…}]
SSE stream
GET /api/stream/vertices polls the bridge and emits initial then incremental events. Disconnects if the bridge is down — not a guaranteed pub/sub bus.
// Browser EventSource against Explorer SSE proxy
const es = new EventSource('http://localhost:3055/api/stream/vertices');
es.addEventListener('initial', (e) => {
const batch = JSON.parse(e.data);
console.log('initial', batch.length);
});
es.addEventListener('vertex', (e) => {
const v = JSON.parse(e.data);
console.log('new', v.round ?? v.height, v.vertex_id ?? v.hash);
});
es.onerror = () => console.warn('SSE disconnected — bridge/poll may be down');Builder links
Repo: zeqron-protocol/crates (explorer services) · client bridge: zeqron-explorer/src/lib/grpc-client.ts · SDK stubs: zeqron-explorer/src/lib/sdk/
// JavaScript / Node.js
const res = await fetch('http://localhost:3055/api/vertices?limit=10');
const vertices = await res.json();
console.log(vertices);Spec: zeqron-explorer/openapi.yaml. Dashboard stats are composed client-side; /api/anchors is heuristic only.