{"openapi":"3.1.0","info":{"title":"Krews Validator Data API","version":"1.0.0","summary":"Public, read-only data behind the Krews validator dashboards.","description":"Validator, block, staking, missed-proposal and Fibre data for Celestia mainnet and the Mocha testnet.\n\n**Base URL:** `https://celestia-dashboard-api.krews.xyz/api/v1` — every data route is scoped by a network id: `/api/v1/{network}/…`.\nThe unversioned `/api/{network}/…` tree serves the Krews dashboard itself and is not part of the public contract.\n\n**Authentication:** none. All documented routes are public and read-only.\n\n**Rate limit:** 120 requests per minute per client IP. Every response carries `RateLimit-Limit`, `RateLimit-Remaining` and `RateLimit-Reset`; a 429 includes `Retry-After`.\n\n**Caching:** responses carry `Cache-Control` and a weak `ETag`; send `If-None-Match` to get a `304 Not Modified`. Live data uses a short `max-age`, daily aggregates a longer one with `stale-while-revalidate`.\n\n**Errors:** one envelope for every non-2xx status: `{ error, message, status, request_id, details? }`. `error` is a stable snake_case code (`validation_error`, `unknown_network`, `not_found`, `invalid_cursor`, `invalid_sort`, `rate_limited`, `internal_error`, …).\n\n**Lists:** `{ items, next_cursor, limit }` with opaque cursor pagination — pass `next_cursor` back as `cursor`; `null` means the end. `sort=field` / `sort=-field` orders, `fields=a,b` returns a sparse fieldset, `include=x,y` embeds optional expansions on detail routes, `window=24h|7d|30d` picks a rolling window.\n\n**Conventions:** JSON only, snake_case keys; timestamps are ISO-8601 UTC strings; heights and counts are integers; token amounts in base units are decimal strings; units are suffixed (`_utia`, `_bytes`, `_ms`, `_pct`).\n\n**MCP:** the same data is available to AI agents as a Model Context Protocol server at `https://celestia-dashboard-api.krews.xyz/mcp` (Streamable HTTP, no auth, read-only tools). See the `mcp` entry of `GET /api/v1`.","contact":{"name":"Krews","url":"https://krews.xyz","email":"contact@krews.xyz"},"license":{"name":"Data: CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"}},"components":{"headers":{"X-Request-Id":{"description":"Correlation id (echoed from the request or generated).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed per minute.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the window resets.","schema":{"type":"integer"}},"ETag":{"description":"Weak validator for If-None-Match.","schema":{"type":"string"}}},"schemas":{"ErrorResponse":{"type":"object","description":"Every non-2xx response uses this envelope.","properties":{"error":{"type":"string","description":"Stable machine-readable code (snake_case).","examples":["not_found"]},"message":{"type":"string","description":"Human-readable explanation."},"status":{"type":"integer","description":"HTTP status code, repeated in the body."},"request_id":{"type":["string","null"],"description":"Echo of X-Request-Id for support."},"details":{"description":"Structured context: validation errors, allowed values."}},"required":["error","message","status"]}}},"paths":{"/api/v1/openapi.json":{"get":{"operationId":"getOpenApiDocument","summary":"OpenAPI 3.1 document","tags":["Meta"],"description":"Machine-readable description of every public route (same document as /api/openapi.json).","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"description":"Success"}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/changelog":{"get":{"operationId":"getChangelog","summary":"API changelog","tags":["Meta"],"description":"Versions of the public API and what changed in each. Breaking changes always get a new major version and a `Deprecation` / `Sunset` header on retired routes.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"description":"Success"}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/networks":{"get":{"operationId":"listNetworks","summary":"List networks","tags":["Meta"],"description":"Every network the public API serves (Celestia mainnet and Mocha), with display metadata and Fibre availability.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"description":"Success"}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/networks/{network}":{"get":{"operationId":"getNetwork","summary":"Network details","tags":["Meta"],"description":"Metadata for one network id plus the indexer position: the newest indexed block height and its time, so clients can judge freshness.","parameters":[{"schema":{"type":"string"},"in":"path","name":"network","required":true}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"description":"Success"}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/blocks":{"get":{"operationId":"listBlocks","summary":"List blocks","tags":["Blocks"],"description":"Indexed blocks, newest first, with the proposer and signature counts (the per-validator list is on the detail route). Filter by height range or `proposer`; `next_cursor` continues backwards. Source: the `blocks` collection, written by the indexer within seconds of each block.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–500)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"min_height","required":false,"description":"Only blocks at or above this height."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"max_height","required":false,"description":"Only blocks at or below this height."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"query","name":"proposer","required":false,"description":"Only blocks proposed by this validator (operator address)."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"height":{"type":"integer","description":"Block height."},"timestamp":{"type":["null","string"],"format":"date-time","description":"Block time as recorded by the chain (nanosecond precision)."},"proposer":{"type":"object","properties":{"operator_address":{"type":["null","string"],"description":"Bech32 operator address; null when the proposer id is not in the validator set."},"consensus_address":{"type":["null","string"],"description":"Hex consensus address."},"moniker":{"type":["null","string"],"description":"Display name."},"avatar_url":{"type":["null","string"],"description":"Keybase avatar URL."}},"additionalProperties":false,"description":"Validator that proposed the block."},"signatures_count":{"type":"integer","description":"Validators whose precommit is included in the block (block_id_flag 2)."},"validators_count":{"type":"integer","description":"Validators in the active set at that height."}},"additionalProperties":false,"description":"Block as listed.","required":["height"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T23:38:30.889Z from /api/v1/celestia_mainnet/blocks?limit=5.","examples":[{"items":[{"height":15293254,"timestamp":"2026-10-25T23:37:41.90683787Z","proposer":{"operator_address":"celestiavaloper1uxlf7mvr8nep3gm7udf2u9remms2jyjqa02qlj","consensus_address":"5BF16429EF39D58D9D428842DB7C582FB5844C88","moniker":"Kiln","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/e976400f2c6613037aa555dd11394305_360_360.jpg"},"signatures_count":96,"validators_count":96},{"height":15293253,"timestamp":"2026-10-25T23:37:39.070908541Z","proposer":{"operator_address":"celestiavaloper1llfydg9q5fnfuc0lfrwwqnvpywnw97lmvek8jf","consensus_address":"A6AE5A4868BE44FF6BBA721467406E75F641C698","moniker":"Anchorage Digital","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/3a23d52c1c4064ee11c2ed5da4abaa05_360_360.jpg"},"signatures_count":96,"validators_count":97},{"height":15293252,"timestamp":"2026-10-25T23:37:36.249650593Z","proposer":{"operator_address":"celestiavaloper1lm4jtr6wjwpamz2e9wlgzdazly3vnwqy53t5t4","consensus_address":"E4CDFFF0D3D39E6B9E82C22A37A6FEADFEF1F58B","moniker":"F5 Nodes","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/3df181c3fac7a8502e2668fb6b184a05_360_360.jpg"},"signatures_count":97,"validators_count":97},"… 2 more"],"next_cursor":"eyJrIjoxNTI5MzI1MH0","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/blocks/{height}":{"get":{"operationId":"getBlock","summary":"Block by height","tags":["Blocks"],"description":"One indexed block with its proposer and signature counts. `include=signatures` embeds one row per validator in the set with whether its precommit is in the block. 404 when the height is not indexed.","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return. Ids are always included."},{"schema":{"type":"string","maxLength":256},"example":"signatures","in":"query","name":"include","required":false,"description":"Comma-separated expansions to embed: signatures."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"integer","minimum":0},"in":"path","name":"height","required":true,"description":"Block height."}],"x-example-request":{"network":"celestia_mainnet","params":{"height":"15000000"},"query":{"include":"signatures"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"height":{"type":"integer","description":"Block height."},"timestamp":{"type":["null","string"],"format":"date-time","description":"Block time as recorded by the chain (nanosecond precision)."},"proposer":{"type":"object","properties":{"operator_address":{"type":["null","string"],"description":"Bech32 operator address; null when the proposer id is not in the validator set."},"consensus_address":{"type":["null","string"],"description":"Hex consensus address."},"moniker":{"type":["null","string"],"description":"Display name."},"avatar_url":{"type":["null","string"],"description":"Keybase avatar URL."}},"additionalProperties":false,"description":"Validator that proposed the block."},"signatures_count":{"type":"integer","description":"Validators whose precommit is included in the block (block_id_flag 2)."},"validators_count":{"type":"integer","description":"Validators in the active set at that height."},"signatures":{"type":"array","items":{"type":"object","properties":{"validator_id":{"type":["null","integer"],"description":"Indexer id of the validator."},"operator_address":{"type":["null","string"],"description":"Bech32 operator address; null when unknown."},"moniker":{"type":["null","string"],"description":"Display name."},"signed":{"type":"boolean","description":"True when the precommit is included in the block."},"timestamp":{"type":["null","string"],"format":"date-time","description":"Precommit time; null when the validator did not sign."}},"additionalProperties":false,"description":"Per-validator signing status of one block."},"description":"Per-validator signatures; present only with `include=signatures`."}},"additionalProperties":false,"description":"Block detail; `signatures` appears with `include=signatures`. Example captured 2026-10-25T23:38:30.955Z from /api/v1/celestia_mainnet/blocks/15000000?include=signatures.","required":["height"],"examples":[{"height":15000000,"timestamp":"2026-10-16T06:39:22.353571264Z","proposer":{"operator_address":"celestiavaloper1gyrwsnkmz69wgfd7zmd32gktqm7qd66e6j4vrq","consensus_address":"29D7D4050B8912FF25C4AA91FA7DBD5EBCD2CE86","moniker":"Endorphine Stake","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/4512a0c34627d6bb188b5e9281baff05_360_360.jpg"},"signatures_count":96,"validators_count":96,"signatures":[{"validator_id":290,"operator_address":"celestiavaloper1llfydg9q5fnfuc0lfrwwqnvpywnw97lmvek8jf","moniker":"Anchorage Digital","signed":true,"timestamp":"2026-10-16T06:39:25.265172394Z"},{"validator_id":234,"operator_address":"celestiavaloper1mpt4chntuewyktq64fgrszjp6ly7we5a3t4a8l","moniker":"BinanceNode","signed":true,"timestamp":"2026-10-16T06:39:25.215788811Z"},{"validator_id":270,"operator_address":"celestiavaloper1ac4mnwg79gyvd0x5trl2fgjv07lgfas02jf378","moniker":"P-OPS Team","signed":true,"timestamp":"2026-10-16T06:39:25.21888186Z"},"… 93 more"]}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/bridge-nodes":{"get":{"operationId":"listBridgeNodes","summary":"List bridge nodes","tags":["Bridge Nodes"],"description":"Tracked Celestia bridge nodes with sync status, version, heads and lag, most recently updated first. Filter with `status`. Source: the `bridge_nodes` collection, scraped from each node's metrics every few seconds.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–200)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","maxLength":64},"in":"query","name":"status","required":false,"description":"Exact status value, e.g. `operational`."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"instance":{"type":"string","description":"Bridge node instance id (libp2p peer id)."},"job":{"type":["null","string"],"description":"Prometheus job label, e.g. celestia/Bridge."},"status":{"type":["null","string"],"description":"Collector status, e.g. operational."},"syncing":{"type":["null","boolean"],"description":"Whether the node reports itself as syncing; null when not exposed."},"version":{"type":["null","string"],"description":"celestia-node version."},"uptime":{"type":["null","string"],"description":"Process uptime as reported, e.g. \"17d 10h\"."},"height":{"type":["null","integer"],"description":"Latest height the node has processed."},"subjective_head":{"type":["null","integer"],"description":"Head height the node believes in."},"objective_head":{"type":["null","integer"],"description":"Head height confirmed from the network."},"network_head":{"type":["null","integer"],"description":"Highest subjective head seen across all tracked bridge nodes."},"lag_local":{"type":["null","integer"],"description":"objective_head minus height."},"lag_global":{"type":["null","integer"],"description":"network_head minus height."},"ip":{"type":["null","string"],"description":"Public IP address."},"location":{"type":["null","object"],"properties":{"city":{"type":["null","string"],"description":"City."},"region":{"type":["null","string"],"description":"Region or state."},"country":{"type":["null","string"],"description":"ISO-3166 alpha-2 country code."},"country_name":{"type":["null","string"],"description":"Country name."},"provider":{"type":["null","string"],"description":"Hosting provider / organisation."},"asn":{"type":["null","string"],"description":"Autonomous system number."},"lat":{"type":["null","number"],"description":"Latitude."},"lon":{"type":["null","number"],"description":"Longitude."}},"additionalProperties":false,"description":"Geolocation of a host."},"last_seen":{"type":["null","string"],"format":"date-time","description":"Last successful scrape."},"last_updated":{"type":["null","string"],"format":"date-time","description":"When the record was last written."}},"additionalProperties":false,"description":"Telemetry snapshot of one bridge node.","required":["instance"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T18:27:10.733Z from /api/v1/celestia_mainnet/bridge-nodes?limit=5.","examples":[{"items":[{"instance":"12D3KooWRCHDM1hyVzDwJJNXq7BSiaLsYRrBUhAo8Xh8GQEp2bu1","job":"celestia/Bridge","status":"operational","syncing":null,"version":"v0.34.3","uptime":"2d 12h","height":15286699,"subjective_head":15286699,"objective_head":15286699,"network_head":15286699,"lag_local":0,"lag_global":0,"ip":"217.79.183.137","location":{"city":"Düsseldorf","region":"North Rhine-Westphalia","country":"DE","country_name":null,"provider":"AS24961 WIIT AG","asn":"AS24961","lat":51.2232,"lon":6.7793},"last_seen":"2026-10-25T18:27:06.652Z","last_updated":"2026-10-25T18:27:06.652Z"},{"instance":"12D3KooWLwecX4SNigGtv7PbF4avzMeFqDsc4fWHNRsVctuKpxgM","job":"celestia/Bridge","status":"operational","syncing":null,"version":"v0.34.3","uptime":"39m","height":15286699,"subjective_head":15286699,"objective_head":15286699,"network_head":15286699,"lag_local":0,"lag_global":0,"ip":"185.248.24.16","location":{"city":"Warsaw","region":"Mazovia","country":"PL","country_name":null,"provider":"AS201814 MEVSPACE sp. z o.o.","asn":"AS201814","lat":52.2298,"lon":21.0118},"last_seen":"2026-10-25T18:27:06.652Z","last_updated":"2026-10-25T18:27:06.652Z"},{"instance":"12D3KooWHrfSrn261E826FSB3PypWkHNUEeKyNvSGEgdwz11McDH","job":"celestia/Bridge","status":"operational","syncing":null,"version":"0.34.3","uptime":"2d 6h","height":15286697,"subjective_head":15286697,"objective_head":15286697,"network_head":15286699,"lag_local":0,"lag_global":2,"ip":"184.107.75.10","location":{"city":"Montréal","region":"Quebec","country":"CA","country_name":null,"provider":"AS32613 Leaseweb Canada Inc.","asn":"AS32613","lat":45.5088,"lon":-73.5878},"last_seen":"2026-10-25T18:27:06.652Z","last_updated":"2026-10-25T18:27:06.652Z"},"… 2 more"],"next_cursor":"eyJvIjo1fQ","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/bridge-nodes/{instance}":{"get":{"operationId":"getBridgeNode","summary":"Bridge node by instance","tags":["Bridge Nodes"],"description":"Latest telemetry snapshot of one bridge node. 404 when the instance id is not tracked.","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return. Ids are always included."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":128,"minLength":1},"in":"path","name":"instance","required":true,"description":"Bridge node instance id (libp2p peer id)."}],"x-example-request":{"network":"celestia_mainnet","params":{"instance":"12D3KooWBBzzGy5hAHUQVh2vBvL25CKwJ7wbmooPcz4amQhzJHJq"},"query":{}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"instance":{"type":"string","description":"Bridge node instance id (libp2p peer id)."},"job":{"type":["null","string"],"description":"Prometheus job label, e.g. celestia/Bridge."},"status":{"type":["null","string"],"description":"Collector status, e.g. operational."},"syncing":{"type":["null","boolean"],"description":"Whether the node reports itself as syncing; null when not exposed."},"version":{"type":["null","string"],"description":"celestia-node version."},"uptime":{"type":["null","string"],"description":"Process uptime as reported, e.g. \"17d 10h\"."},"height":{"type":["null","integer"],"description":"Latest height the node has processed."},"subjective_head":{"type":["null","integer"],"description":"Head height the node believes in."},"objective_head":{"type":["null","integer"],"description":"Head height confirmed from the network."},"network_head":{"type":["null","integer"],"description":"Highest subjective head seen across all tracked bridge nodes."},"lag_local":{"type":["null","integer"],"description":"objective_head minus height."},"lag_global":{"type":["null","integer"],"description":"network_head minus height."},"ip":{"type":["null","string"],"description":"Public IP address."},"location":{"type":["null","object"],"properties":{"city":{"type":["null","string"],"description":"City."},"region":{"type":["null","string"],"description":"Region or state."},"country":{"type":["null","string"],"description":"ISO-3166 alpha-2 country code."},"country_name":{"type":["null","string"],"description":"Country name."},"provider":{"type":["null","string"],"description":"Hosting provider / organisation."},"asn":{"type":["null","string"],"description":"Autonomous system number."},"lat":{"type":["null","number"],"description":"Latitude."},"lon":{"type":["null","number"],"description":"Longitude."}},"additionalProperties":false,"description":"Geolocation of a host."},"last_seen":{"type":["null","string"],"format":"date-time","description":"Last successful scrape."},"last_updated":{"type":["null","string"],"format":"date-time","description":"When the record was last written."}},"additionalProperties":false,"description":"Telemetry snapshot of one bridge node. Example captured 2026-10-25T18:27:10.798Z from /api/v1/celestia_mainnet/bridge-nodes/12D3KooWBBzzGy5hAHUQVh2vBvL25CKwJ7wbmooPcz4amQhzJHJq.","required":["instance"],"examples":[{"instance":"12D3KooWBBzzGy5hAHUQVh2vBvL25CKwJ7wbmooPcz4amQhzJHJq","job":"celestia/Bridge","status":"operational","syncing":null,"version":"v0.34.3","uptime":"18d 5h","height":15286698,"subjective_head":15286698,"objective_head":15286698,"network_head":15286699,"lag_local":0,"lag_global":1,"ip":"5.9.21.23","location":{"city":"Falkenstein","region":"Saxony","country":"DE","country_name":null,"provider":"AS24940 Hetzner Online GmbH","asn":"AS24940","lat":50.4779,"lon":12.3713},"last_seen":"2026-10-25T18:27:06.652Z","last_updated":"2026-10-25T18:27:06.652Z"}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/block-times":{"get":{"operationId":"listBlockTimes","summary":"List block times","tags":["Bridge Nodes"],"description":"Per-height block times (seconds since the previous block), newest first; filter with `min_height` / `max_height`. Source: the `block_times` collection, recorded by the block watcher as blocks arrive.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–500)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"min_height","required":false,"description":"Only heights at or above this value."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"max_height","required":false,"description":"Only heights at or below this value."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"height":{"type":"integer","description":"Block height."},"time":{"type":["null","string"],"format":"date-time","description":"Block time."},"block_time_s":{"type":["null","number"],"description":"Seconds since the previous block."}},"additionalProperties":false,"description":"Time between two consecutive blocks.","required":["height"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T18:27:10.860Z from /api/v1/celestia_mainnet/block-times?limit=5.","examples":[{"items":[{"height":14158116,"time":"2026-09-18T08:11:27.583Z","block_time_s":2.83},{"height":14158115,"time":"2026-09-18T08:11:24.751Z","block_time_s":2.87},{"height":14158114,"time":"2026-09-18T08:11:21.883Z","block_time_s":2.85},"… 2 more"],"next_cursor":"eyJrIjoxNDE1ODExMn0","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre":{"get":{"operationId":"getFibreOverview","summary":"Fibre overview","tags":["Fibre"],"description":"Fleet-level figures (registration, reachability, retention, escrow, capacity), chain params, protocol constants and lifetime totals in a few kilobytes. All Fibre routes read the collector snapshot (refreshed about every 30 s), answer 404 `fibre_inactive` on networks where Fibre is not live, and use the bech32 `…valcons1…` form for `consensus_address`.","parameters":[{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mocha_5","params":{},"query":{}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","description":"Network id."},"chain_id":{"type":["null","string"],"description":"Cosmos chain id."},"app_version":{"type":["null","string"],"description":"Celestia app version the collector follows."},"synced_at":{"type":["null","string"],"format":"date-time","description":"When the validator set and probes were last collected."},"head_height":{"type":["null","integer"],"description":"Latest height the chain indexer has processed."},"serve_window_s":{"type":["null","integer"],"description":"Serve window in seconds: max(payment promise timeout, shard retention)."},"download":{"description":"Edge download measurement setup: window, min_bytes and the region list (per-validator figures: `/fibre/validators?include=download`)."},"reach_window_days":{"type":["null","integer"],"description":"Days of reach probes kept; the longest reachability window really covers this many days."},"params":{"description":"Fibre chain params as stored ({ withdrawal_delay_s, payment_promise_timeout_s, payment_promise_height_window, shard_retention_s, full_stake_storage_budget_bytes })."},"protocol":{"description":"Protocol constants as stored (rows, liveness/safety thresholds, max blob size, price)."},"overview":{"type":"object","properties":{"bonded":{"type":["null","integer"],"description":"Bonded validators."},"registered":{"type":["null","integer"],"description":"Bonded validators with a Fibre host on chain."},"unregistered":{"type":["null","integer"],"description":"Bonded validators without one."},"reachable":{"type":["null","integer"],"description":"Registered validators whose last probe succeeded."},"ready":{"type":["null","integer"],"description":"Registered validators reporting SERVING."},"identity_verified":{"type":["null","integer"],"description":"Registered validators whose TLS identity matched."},"registered_vp_pct":{"type":["null","number"],"description":"Voting power registered, percent."},"reachable_vp_pct":{"type":["null","number"],"description":"Voting power reachable, percent."},"unregistered_vp_pct":{"type":["null","number"],"description":"Voting power not registered, percent."},"ready_vp_pct":{"type":["null","number"],"description":"Voting power reporting SERVING, percent."},"windows":{"description":"Legacy window placeholders as stored."},"in_retention":{"type":["null","integer"],"description":"Blobs inside the serve window."},"in_retention_bytes":{"type":["null","integer"],"description":"Their bytes."},"blob_bytes":{"type":["null","integer"],"description":"Bytes settled since indexing began."},"payers":{"type":["null","integer"],"description":"Distinct publishers."},"escrow_utia":{"type":["null","integer"],"description":"Sum of escrow balances, utia."},"namespaces":{"type":["null","integer"],"description":"Distinct namespaces."},"timeouts":{"type":["null","integer"],"description":"Payment-promise timeouts."},"timeout_fees_utia":{"type":["null","integer"],"description":"Fees charged on timeouts, utia."},"timeout_fees_known":{"type":["null","boolean"],"description":"Every timeout carried a blob size, so the fee total is exact."},"timeouts_24h":{"type":["null","integer"],"description":"Timeouts in the last 24 h."},"timeouts_7d":{"type":["null","integer"],"description":"Timeouts in the last 7 d."},"reconstructable":{"description":"Blob reconstructability sample as stored ({ examined, available, rows_needed, since }) or null."},"storage_budget_bytes_total":{"type":["null","integer"],"description":"Sum of validator storage budgets."},"held_bytes_total":{"type":["null","integer"],"description":"Sum of bytes held in retention."},"capacity_used_pct":{"type":["null","number"],"description":"Held bytes over total budget, percent."},"participation_7d":{"description":"Stake-weighted participation buckets over 7 d as stored."},"cost_per_mib_utia_24h":{"type":["null","number"],"description":"Fees per MiB settled over 24 h, utia."},"cost_per_mib_utia_7d":{"type":["null","number"],"description":"Fees per MiB settled over 7 d, utia."},"inclusion_lag_blocks_7d":{"description":"Promise-to-settlement lag over 7 d as stored ({ median_blocks, max_blocks, settlements })."}},"additionalProperties":false,"description":"Fleet-level figures."},"totals":{"type":"object","properties":{"settlements":{"type":["null","integer"],"description":"Settled promises since indexing began."},"fees_utia":{"type":["null","integer"],"description":"Fees paid, utia."},"bytes":{"type":["null","integer"],"description":"Bytes settled."},"payers":{"type":["null","integer"],"description":"Distinct publishers."}},"additionalProperties":false,"description":"Chain totals."}},"additionalProperties":false,"description":"Fibre network overview. Example captured 2026-10-25T23:38:32.969Z from /api/v1/celestia_mocha_5/fibre.","required":["network","overview","totals"],"examples":[{"network":"celestia_mocha_5","overview":{"bonded":88,"registered":84,"unregistered":4,"reachable":84,"ready":49,"identity_verified":84,"registered_vp_pct":99.7225,"reachable_vp_pct":99.7225,"unregistered_vp_pct":0.2775,"ready_vp_pct":54.3691,"windows":{"24h":null,"7d":null},"in_retention":20,"in_retention_bytes":74448896,"blob_bytes":170960879616,"payers":19,"escrow_utia":20947140000,"namespaces":59,"timeouts":0,"timeout_fees_utia":0,"timeout_fees_known":true,"timeouts_24h":0,"timeouts_7d":0,"reconstructable":{"examined":5,"available":0,"rows_needed":4096,"since":"2026-10-24T18:45:32.760Z"},"storage_budget_bytes_total":9303972904960,"held_bytes_total":200317248,"capacity_used_pct":0.0022,"participation_7d":{"min_slots":20,"high":{"label":">=0.9","validators":36,"vp_pct":0.4536181958028532},"mid":{"label":"0.5-0.9","validators":15,"vp_pct":0.24028188515807006},"low":{"label":"<0.5","validators":37,"vp_pct":0.3060999190390767},"insufficient":{"label":"<20 slots","validators":0,"vp_pct":0}},"cost_per_mib_utia_24h":484751.8479408659,"cost_per_mib_utia_7d":531421.0953712894,"inclusion_lag_blocks_7d":{"median_blocks":2,"max_blocks":5,"settlements":1498}},"totals":{"settlements":10995,"fees_utia":36494130000,"bytes":170960879616,"payers":19},"chain_id":"mocha-5","app_version":"10","synced_at":"2026-10-25T23:38:29.629Z","head_height":2022954,"serve_window_s":14400,"download":{"window":"last","min_bytes":2097152,"regions":[{"id":"nyc","label":"New York","continent":"Americas","lat":40.7128,"lon":-74.006},{"id":"sao","label":"São Paulo","continent":"South America","lat":-23.5505,"lon":-46.6333},{"id":"fra","label":"Frankfurt","continent":"Europe","lat":50.1109,"lon":8.6821},"… 3 more"]},"reach_window_days":14,"params":{"withdrawal_delay_s":86400,"payment_promise_timeout_s":3600,"payment_promise_height_window":1000,"shard_retention_s":14400,"full_stake_storage_budget_bytes":2199023255552},"protocol":{"original_rows":4096,"parity_rows":12288,"total_rows":16384,"min_rows_per_validator":148,"max_rows_per_validator":4096,"liveness_numerator":1,"liveness_denominator":3,"safety_numerator":2,"safety_denominator":3,"max_blob_size_bytes":134217728,"encoding_ratio":0.25,"pinned_celestia_app_version":"v10","pinned_celestia_app_commit":null,"must_serve_window_s":null,"price":{"base_gas":650000,"gas_per_chunk":45000,"chunk_bytes":262144,"utia_per_gas":1}}}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/validators":{"get":{"operationId":"listFibreValidators","summary":"List Fibre validators","tags":["Fibre"],"description":"Every bonded validator with its Fibre registration, last probe, budget and 7 d windows. `include=download` adds the per-region download throughput of the last 24 h.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–200)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","maxLength":128},"in":"query","name":"search","required":false,"description":"Case-insensitive substring of the moniker, host, operator or consensus address."},{"schema":{"type":"boolean"},"in":"query","name":"registered","required":false,"description":"Only validators with (true) or without (false) a registered host. Accepts true/false or 1/0."},{"schema":{"type":"boolean"},"in":"query","name":"reachable","required":false,"description":"Only validators whose last probe succeeded (true) or failed (false). Accepts true/false or 1/0."},{"schema":{"type":"boolean"},"in":"query","name":"fibre_ready","required":false,"description":"Only validators whose gRPC health reports SERVING (true) or not (false). Accepts true/false or 1/0."},{"schema":{"type":"string","enum":["nyc","sao","fra","jnb","sgp","syd"]},"in":"query","name":"region","required":false,"description":"Only validators whose last probe came from this edge region."},{"schema":{"type":"string","maxLength":64},"example":"download","in":"query","name":"include","required":false,"description":"Comma-separated expansions: `download`."},{"schema":{"type":"boolean","default":false},"in":"query","name":"count","required":false,"description":"Add `total` to the response. Accepts true/false or 1/0."},{"schema":{"type":"string","default":"-voting_power_pct"},"examples":{"-voting_power_pct":{"value":"-voting_power_pct"},"-reachability_7d_pct":{"value":"-reachability_7d_pct"},"moniker":{"value":"moniker"}},"in":"query","name":"sort","required":false,"description":"Sort field; prefix with \"-\" for descending. One of: voting_power_pct, reachability_7d_pct, moniker. Default `-voting_power_pct`."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mocha_5","params":{},"query":{"limit":"5","include":"download"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"operator_address":{"type":["null","string"],"description":"Bech32 operator address."},"consensus_address":{"type":["null","string"],"description":"Bech32 consensus address (…valcons1…)."},"moniker":{"type":["null","string"],"description":"Display name."},"registered":{"type":"boolean","description":"Has registered a Fibre host on chain."},"host":{"type":["null","string"],"description":"Registered host:port."},"reachable":{"type":["null","boolean"],"description":"Last TLS probe succeeded."},"fibre_ready":{"type":["null","boolean"],"description":"gRPC health reported SERVING."},"fibre_ready_status":{"type":["null","string"],"description":"Raw health status."},"probe_latency_ms":{"type":["null","integer"],"description":"Last probe handshake latency."},"probe_region":{"type":["null","string"],"description":"Edge region of the last probe."},"voting_power_pct":{"type":["null","number"],"description":"Share of total voting power, as stored in the snapshot (fraction 0–1)."},"assigned_rows":{"type":["null","integer"],"description":"Rows assigned per blob."},"storage_budget_bytes":{"type":["null","integer"],"description":"Storage budget in bytes."},"held_bytes":{"type":["null","integer"],"description":"Bytes currently held in retention."},"reachability_24h_pct":{"type":["null","number"],"description":"Share of successful reach probes over 24 h, percent."},"reachability_7d_pct":{"type":["null","number"],"description":"Share of successful reach probes over 7 d, percent."},"service_7d":{"type":["null","object"],"properties":{"served":{"type":"integer","description":"Serve checks answered with the assigned rows."},"checked":{"type":"integer","description":"Endorsements checked in the window."},"rate_pct":{"type":["null","number"],"description":"served / checked, percent."}},"additionalProperties":false,"description":"Serve-check tally."},"endorsements_7d":{"type":["null","object"],"properties":{"signed":{"type":"integer","description":"Blobs this validator signed."},"assigned":{"type":"integer","description":"Blobs it was assigned rows for."},"rate_pct":{"type":["null","number"],"description":"signed / assigned, percent."}},"additionalProperties":false,"description":"Endorsement tally."},"last_reachable_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"last_served_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"location":{"description":"Geolocation of the host ({ city, region, country, country_name, provider, asn, lat, lon }) or null."},"download":{"type":["null","object"],"properties":{"regions":{"type":"object","additionalProperties":{"type":"object","properties":{"bps":{"type":["null","number"],"description":"Last measured download throughput, bytes per second; null when the last probe produced no rate."},"handshake_ms":{"type":["null","number"],"description":"TLS handshake latency of the last probe, milliseconds."},"samples":{"type":["null","integer"],"description":"Probes behind the figure."},"updated_at":{"type":["null","string"],"format":"date-time","description":"When the region last measured this validator."}},"additionalProperties":false},"description":"Latest measurement per edge region id."},"median_bps":{"type":["null","number"],"description":"Median of the regions' throughput, bytes per second."},"median_handshake_ms":{"type":["null","number"],"description":"Median of the regions' handshake latency, milliseconds."}},"additionalProperties":false,"description":"Edge download measurements of the last 24 h."}},"additionalProperties":false,"description":"Fibre validator as listed; `download` appears with `include=download`.","required":["operator_address"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T23:38:32.977Z from /api/v1/celestia_mocha_5/fibre/validators?limit=5&include=download.","examples":[{"items":[{"operator_address":"celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx","consensus_address":"celestiavalcons17dzlj8xncd3r3a2s5qjgqrq29ngd04yu6v4lcc","moniker":"devops","registered":true,"host":"195.154.212.12:7980","reachable":true,"fibre_ready":true,"fibre_ready_status":"serving","probe_latency_ms":22,"probe_region":"fra","voting_power_pct":11.9305,"assigned_rows":1467,"storage_budget_bytes":787589627904,"held_bytes":26664192,"reachability_24h_pct":100,"reachability_7d_pct":100,"service_7d":{"served":1398,"checked":1398,"rate_pct":100},"endorsements_7d":{"signed":1398,"assigned":1498,"rate_pct":93.32},"last_reachable_at":"2026-10-25T23:38:05.842Z","last_served_at":null,"location":{"city":"Paris","region":null,"country":"FR","country_name":null,"provider":"Scaleway","asn":12876,"lat":48.8534,"lon":2.3488},"download":{"regions":{"fra":{"bps":54211481,"handshake_ms":22,"samples":57,"updated_at":"2026-10-25T22:55:51.789Z"},"sgp":{"bps":4111883,"handshake_ms":302,"samples":57,"updated_at":"2026-10-25T22:59:06.384Z"},"sao":{"bps":5959772,"handshake_ms":381,"samples":57,"updated_at":"2026-10-25T22:50:53.143Z"},"jnb":{"bps":3560468,"handshake_ms":349,"samples":57,"updated_at":"2026-10-25T23:01:42.820Z"},"nyc":{"bps":7585799,"handshake_ms":162,"samples":58,"updated_at":"2026-10-25T22:59:06.325Z"},"syd":{"bps":536170,"handshake_ms":564,"samples":57,"updated_at":"2026-10-25T23:12:30.994Z"}},"median_bps":5035828,"median_handshake_ms":326}},{"operator_address":"celestiavaloper1gt9f9xta2mj5xmwgqy7ph2qhrcrkdfd2wk3ugr","consensus_address":"celestiavalcons1gr2y25jpx2v6qfq08rvw9xy25hpxvncxtd2lr5","moniker":"P-OPS Team","registered":true,"host":"89.106.4.13:7980","reachable":true,"fibre_ready":null,"fibre_ready_status":"unimplemented","probe_latency_ms":67,"probe_region":"fra","voting_power_pct":6.2868,"assigned_rows":773,"storage_budget_bytes":415001214976,"held_bytes":14050048,"reachability_24h_pct":100,"reachability_7d_pct":96.44,"service_7d":{"served":1039,"checked":1039,"rate_pct":100},"endorsements_7d":{"signed":1039,"assigned":1498,"rate_pct":69.36},"last_reachable_at":"2026-10-25T23:38:05.842Z","last_served_at":null,"location":{"city":"Šiauliai","region":null,"country":"LT","country_name":null,"provider":"Cherry Servers","asn":16125,"lat":55.9333,"lon":23.3167},"download":{"regions":{"nyc":{"bps":4612930,"handshake_ms":220,"samples":10,"updated_at":"2026-10-25T22:59:06.324Z"},"sao":{"bps":3205228,"handshake_ms":456,"samples":10,"updated_at":"2026-10-25T22:50:53.140Z"},"sgp":{"bps":2782044,"handshake_ms":359,"samples":10,"updated_at":"2026-10-25T22:59:06.383Z"},"fra":{"bps":15914070,"handshake_ms":58,"samples":10,"updated_at":"2026-10-25T22:55:51.100Z"},"jnb":{"bps":2280273,"handshake_ms":403,"samples":10,"updated_at":"2026-10-25T22:59:57.312Z"},"syd":{"bps":752053,"handshake_ms":598,"samples":10,"updated_at":"2026-10-25T23:12:30.993Z"}},"median_bps":2993636,"median_handshake_ms":381}},{"operator_address":"celestiavaloper1ypueejv825cm8gqxcfpa963vh3xy8c2anzm6kh","consensus_address":"celestiavalcons1ytjyl9mkgzf6j264mxxygcl5uje0ws4fu5gf0q","moniker":"Qubelabs","registered":true,"host":"84.32.176.121:7980","reachable":true,"fibre_ready":null,"fibre_ready_status":"unimplemented","probe_latency_ms":16,"probe_region":"fra","voting_power_pct":6.0121,"assigned_rows":739,"storage_budget_bytes":396747603968,"held_bytes":13432064,"reachability_24h_pct":100,"reachability_7d_pct":100,"service_7d":{"served":1352,"checked":1352,"rate_pct":100},"endorsements_7d":{"signed":1352,"assigned":1498,"rate_pct":90.25},"last_reachable_at":"2026-10-25T23:38:05.842Z","last_served_at":null,"location":{"city":"Amsterdam","region":null,"country":"NL","country_name":null,"provider":"Cherry Servers","asn":59642,"lat":52.374,"lon":4.8897},"download":{"regions":{"jnb":{"bps":2880339,"handshake_ms":331,"samples":42,"updated_at":"2026-10-25T22:59:57.314Z"},"nyc":{"bps":6330599,"handshake_ms":145,"samples":44,"updated_at":"2026-10-25T22:59:55.456Z"},"sao":{"bps":3887342,"handshake_ms":372,"samples":41,"updated_at":"2026-10-25T22:50:53.142Z"},"sgp":{"bps":2661847,"handshake_ms":365,"samples":42,"updated_at":"2026-10-25T23:00:45.342Z"},"syd":{"bps":1742817,"handshake_ms":555,"samples":42,"updated_at":"2026-10-25T22:47:29.952Z"},"fra":{"bps":70181161,"handshake_ms":14,"samples":42,"updated_at":"2026-10-25T22:55:51.101Z"}},"median_bps":3383841,"median_handshake_ms":348}},"… 2 more"],"next_cursor":"eyJvIjo1fQ","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/validators/{operator}":{"get":{"operationId":"getFibreValidator","summary":"Fibre validator detail","tags":["Fibre"],"description":"One validator's Fibre row (7 d summary) with chain-side counters; other windows are on `/stats`. `include=download` adds the per-region download throughput, `include=host_history` the last 20 host registrations.","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return. Ids are always included."},{"schema":{"type":"string","maxLength":256},"example":"download,host_history","in":"query","name":"include","required":false,"description":"Comma-separated expansions to embed: download, host_history."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"path","name":"operator","required":true,"description":"Validator id: bech32 operator address (…valoper1…) or bech32 consensus address (…valcons1…)."}],"x-example-request":{"network":"celestia_mocha_5","params":{"operator":"celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx"},"query":{"include":"download"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"operator_address":{"type":["null","string"],"description":"Bech32 operator address."},"consensus_address":{"type":["null","string"],"description":"Bech32 consensus address (…valcons1…)."},"moniker":{"type":["null","string"],"description":"Display name."},"registered":{"type":"boolean","description":"Has registered a Fibre host on chain."},"host":{"type":["null","string"],"description":"Registered host:port."},"reachable":{"type":["null","boolean"],"description":"Last TLS probe succeeded."},"fibre_ready":{"type":["null","boolean"],"description":"gRPC health reported SERVING."},"fibre_ready_status":{"type":["null","string"],"description":"Raw health status."},"probe_latency_ms":{"type":["null","integer"],"description":"Last probe handshake latency."},"probe_region":{"type":["null","string"],"description":"Edge region of the last probe."},"voting_power_pct":{"type":["null","number"],"description":"Share of total voting power, as stored in the snapshot (fraction 0–1)."},"assigned_rows":{"type":["null","integer"],"description":"Rows assigned per blob."},"storage_budget_bytes":{"type":["null","integer"],"description":"Storage budget in bytes."},"held_bytes":{"type":["null","integer"],"description":"Bytes currently held in retention."},"reachability_24h_pct":{"type":["null","number"],"description":"Share of successful reach probes over 24 h, percent."},"reachability_7d_pct":{"type":["null","number"],"description":"Share of successful reach probes over 7 d, percent."},"service_7d":{"type":["null","object"],"properties":{"served":{"type":"integer","description":"Serve checks answered with the assigned rows."},"checked":{"type":"integer","description":"Endorsements checked in the window."},"rate_pct":{"type":["null","number"],"description":"served / checked, percent."}},"additionalProperties":false,"description":"Serve-check tally."},"endorsements_7d":{"type":["null","object"],"properties":{"signed":{"type":"integer","description":"Blobs this validator signed."},"assigned":{"type":"integer","description":"Blobs it was assigned rows for."},"rate_pct":{"type":["null","number"],"description":"signed / assigned, percent."}},"additionalProperties":false,"description":"Endorsement tally."},"last_reachable_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"last_served_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"location":{"description":"Geolocation of the host ({ city, region, country, country_name, provider, asn, lat, lon }) or null."},"avatar_url":{"type":["null","string"],"description":"Keybase avatar URL."},"identity_status":{"type":["null","string"],"description":"TLS identity check: verified, mismatch, unknown…"},"endpoint_state":{"type":["null","string"],"description":"Endpoint classification from the last probe round."},"probe_error":{"type":["null","string"],"description":"Error of the last failed probe, or null."},"shard_bytes_7d":{"type":["null","integer"],"description":"Shard bytes assigned over 7 d."},"last_endorsed_at":{"type":["null","string"],"format":"date-time","description":"Last settlement this validator signed."},"chain":{"description":"Chain-side endorsement counters as stored ({ endorsements, opportunities, last_time, last_height, *_24h, *_7d, *_30d }) or null."},"chain_host":{"description":"Current on-chain host registration as stored ({ host, height, time, updates }) or null."},"download":{"type":["null","object"],"properties":{"regions":{"type":"object","additionalProperties":{"type":"object","properties":{"bps":{"type":["null","number"],"description":"Last measured download throughput, bytes per second; null when the last probe produced no rate."},"handshake_ms":{"type":["null","number"],"description":"TLS handshake latency of the last probe, milliseconds."},"samples":{"type":["null","integer"],"description":"Probes behind the figure."},"updated_at":{"type":["null","string"],"format":"date-time","description":"When the region last measured this validator."}},"additionalProperties":false},"description":"Latest measurement per edge region id."},"median_bps":{"type":["null","number"],"description":"Median of the regions' throughput, bytes per second."},"median_handshake_ms":{"type":["null","number"],"description":"Median of the regions' handshake latency, milliseconds."}},"additionalProperties":false,"description":"Edge download measurements of the last 24 h."},"host_history":{"type":"array","items":{"type":"object","properties":{"host":{"type":["null","string"],"description":"Host:port registered by this update."},"height":{"type":["null","integer"],"description":"Height of the registration tx."},"time":{"type":["null","string"],"format":"date-time","description":"Block time."},"tx_hash":{"type":["null","string"],"description":"Transaction hash."}},"additionalProperties":false},"description":"Host registrations, newest first (with `include=host_history`)."}},"additionalProperties":false,"description":"Fibre validator detail (7 d summary); other windows are on `/stats`. `download` and `host_history` appear with `include=`. Example captured 2026-10-25T23:38:32.980Z from /api/v1/celestia_mocha_5/fibre/validators/celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx?include=download.","required":["operator_address"],"examples":[{"operator_address":"celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx","consensus_address":"celestiavalcons17dzlj8xncd3r3a2s5qjgqrq29ngd04yu6v4lcc","moniker":"devops","registered":true,"host":"195.154.212.12:7980","reachable":true,"fibre_ready":true,"fibre_ready_status":"serving","probe_latency_ms":22,"probe_region":"fra","voting_power_pct":11.9305,"assigned_rows":1467,"storage_budget_bytes":787589627904,"held_bytes":26664192,"reachability_24h_pct":100,"reachability_7d_pct":100,"service_7d":{"served":1398,"checked":1398,"rate_pct":100},"endorsements_7d":{"signed":1398,"assigned":1498,"rate_pct":93.32},"last_reachable_at":"2026-10-25T23:38:05.842Z","last_served_at":null,"location":{"city":"Paris","region":null,"country":"FR","country_name":null,"provider":"Scaleway","asn":12876,"lat":48.8534,"lon":2.3488},"avatar_url":null,"identity_status":"verified","endpoint_state":"reachable","probe_error":null,"shard_bytes_7d":588827648,"last_endorsed_at":"2026-10-25T23:34:14.751Z","chain":{"endorsements":8333,"opportunities":10995,"last_time":"2026-10-25T23:34:14.751Z","last_height":2022866,"endorsements_24h":111,"opportunities_24h":111,"shard_bytes_24h":88911936,"endorsements_7d":1398,"opportunities_7d":1498,"shard_bytes_7d":588827648,"endorsements_30d":8201,"opportunities_30d":10863,"shard_bytes_30d":40681333504},"chain_host":{"host":"195.154.212.12:7980","height":1097906,"time":"2026-09-25T08:44:37.853Z","updates":1},"download":{"regions":{"fra":{"bps":54211481,"handshake_ms":22,"samples":57,"updated_at":"2026-10-25T22:55:51.789Z"},"sgp":{"bps":4111883,"handshake_ms":302,"samples":57,"updated_at":"2026-10-25T22:59:06.384Z"},"sao":{"bps":5959772,"handshake_ms":381,"samples":57,"updated_at":"2026-10-25T22:50:53.143Z"},"jnb":{"bps":3560468,"handshake_ms":349,"samples":57,"updated_at":"2026-10-25T23:01:42.820Z"},"nyc":{"bps":7585799,"handshake_ms":162,"samples":58,"updated_at":"2026-10-25T22:59:06.325Z"},"syd":{"bps":536170,"handshake_ms":564,"samples":57,"updated_at":"2026-10-25T23:12:30.994Z"}},"median_bps":5035828,"median_handshake_ms":326}}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/validators/{operator}/probes":{"get":{"operationId":"listFibreValidatorProbes","summary":"Reachability probes of a validator","tags":["Fibre"],"description":"Reachability probes of one validator, newest first, kept for the reach window (`reach_window_days` on the overview).","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–500)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00Z","in":"query","name":"from","required":false,"description":"Only probes at or after this time."},{"schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00Z","in":"query","name":"to","required":false,"description":"Only probes at or before this time."},{"schema":{"type":"boolean"},"in":"query","name":"ok","required":false,"description":"Only successful (true) or failed (false) probes. Accepts true/false or 1/0."},{"schema":{"type":"string","enum":["edge","local"]},"in":"query","name":"source","required":false,"description":"Only edge-agent or local (API host) probes."},{"schema":{"type":"string","enum":["nyc","sao","fra","jnb","sgp","syd"]},"in":"query","name":"region","required":false,"description":"Only probes from this edge region."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"path","name":"operator","required":true,"description":"Validator id: bech32 operator address (…valoper1…) or bech32 consensus address (…valcons1…)."}],"x-example-request":{"network":"celestia_mocha_5","params":{"operator":"celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx"},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"ts":{"type":["null","string"],"format":"date-time","description":"Probe time."},"ok":{"type":"boolean","description":"TLS handshake succeeded."},"latency_ms":{"type":["null","integer"],"description":"Handshake latency."},"ready":{"type":["null","boolean"],"description":"gRPC health reported SERVING; null when not checked."},"ready_status":{"type":["null","string"],"description":"Raw health status."},"ready_latency_ms":{"type":["null","integer"],"description":"Health check latency."},"error":{"type":["null","string"],"description":"Failure reason when `ok` is false."},"source":{"type":"string","description":"edge (regional agent) or local (API host)."},"region":{"type":["null","string"],"description":"Edge region id; null for local probes."}},"additionalProperties":false,"description":"One reachability probe."}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T23:38:33.082Z from /api/v1/celestia_mocha_5/fibre/validators/celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx/probes?limit=5.","examples":[{"items":[{"ts":"2026-10-25T23:38:05.842Z","ok":true,"latency_ms":22,"ready":true,"ready_status":"serving","ready_latency_ms":31,"error":null,"source":"edge","region":"fra"},{"ts":"2026-10-25T23:37:05.792Z","ok":true,"latency_ms":22,"ready":true,"ready_status":"serving","ready_latency_ms":31,"error":null,"source":"edge","region":"fra"},{"ts":"2026-10-25T23:36:05.850Z","ok":true,"latency_ms":21,"ready":true,"ready_status":"serving","ready_latency_ms":30,"error":null,"source":"edge","region":"fra"},"… 2 more"],"next_cursor":"eyJrIjoiMjAyNi0xMC0yNVQyMzozNDowNS44NThaIiwidCI6ImQiLCJpIjoiNmFkZTkxZWRiOWIxYjkwODk3Njk3YjM5In0","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/validators/{operator}/serve-checks":{"get":{"operationId":"listFibreValidatorServeChecks","summary":"Serve checks of a validator","tags":["Fibre"],"description":"Shard download checks run against one validator, newest first. Each blob gets a start-of-window and an end-of-window (`final`) check; `verdict` is the judged outcome.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–500)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","maxLength":200},"in":"query","name":"promise_hash","required":false,"description":"Only checks of this blob (promise hash)."},{"schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00Z","in":"query","name":"from","required":false,"description":"Only checks at or after this time."},{"schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00Z","in":"query","name":"to","required":false,"description":"Only checks at or before this time."},{"schema":{"type":"boolean"},"in":"query","name":"final","required":false,"description":"Only end-of-window (true) or start-of-window (false) checks. Accepts true/false or 1/0."},{"schema":{"type":"string","enum":["nyc","sao","fra","jnb","sgp","syd"]},"in":"query","name":"region","required":false,"description":"Only checks from this edge region."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"path","name":"operator","required":true,"description":"Validator id: bech32 operator address (…valoper1…) or bech32 consensus address (…valcons1…)."}],"x-example-request":{"network":"celestia_mocha_5","params":{"operator":"celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx"},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"promise_hash":{"type":["null","string"],"description":"Blob the check downloaded from."},"ts":{"type":["null","string"],"format":"date-time","description":"Check time."},"status":{"type":["null","string"],"description":"Raw outcome: served, rows, not_found, empty, server_error, timeout, unreachable, no-grpc…"},"verdict":{"type":"string","description":"served, not_served, mismatch or not_counted."},"rows":{"type":"integer","description":"Rows returned."},"expected_rows":{"type":"integer","description":"Rows the validator was assigned."},"latency_ms":{"type":["null","integer"],"description":"Download latency."},"final":{"type":"boolean","description":"End-of-window check (true) or start-of-window check (false)."},"source":{"type":["null","string"],"description":"edge or local."},"region":{"type":["null","string"],"description":"Edge region id."},"region_label":{"type":["null","string"],"description":"Human label of the region."}},"additionalProperties":false,"description":"One serve check."}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T23:38:33.172Z from /api/v1/celestia_mocha_5/fibre/validators/celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx/serve-checks?limit=5.","examples":[{"items":[{"promise_hash":"2022864:54a14d9239786725a05bd7b60604e29694bfc262b7bf3eff7add1c0de63d4bd9:celestia15rnqxh8lym8z95fpm06d5frtpy6nhn7fv0uafj","ts":"2026-10-25T23:34:18.595Z","status":"served","verdict":"served","rows":1467,"expected_rows":1467,"latency_ms":110,"final":false,"source":"edge","region":"fra","region_label":"Frankfurt"},{"promise_hash":"2018140:4272486513bca9fe2b6009c29c7012298a1a75da249e1e6ec0d4f077ab3076ae:celestia130esyug49fnzfvln9n6vzugtgaenufltmxtmz8","ts":"2026-10-25T23:33:41.387Z","status":"served","verdict":"served","rows":1467,"expected_rows":1467,"latency_ms":91,"final":true,"source":"edge","region":"fra","region_label":"Frankfurt"},{"promise_hash":"2017919:b21018b92bb36978d24913e65adae6200f52a082e03857fd4c31d0a3152d542b:celestia15rnqxh8lym8z95fpm06d5frtpy6nhn7fv0uafj","ts":"2026-10-25T23:23:11.472Z","status":"served","verdict":"served","rows":1467,"expected_rows":1467,"latency_ms":110,"final":true,"source":"edge","region":"fra","region_label":"Frankfurt"},"… 2 more"],"next_cursor":"eyJrIjoiMjAyNi0xMC0yNVQyMzoxMToxNC40NjRaIiwidCI6ImQiLCJpIjoiNmFkZThjOTIzOGU4OGZhMjVhMTFhNGQ0In0","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/validators/{operator}/stats":{"get":{"operationId":"getFibreValidatorStats","summary":"Fibre validator window stats","tags":["Fibre"],"description":"Reachability, endorsements, serve checks and shard bytes of one validator for one rolling window (reachability is capped at the reach window).","parameters":[{"schema":{"type":"string","enum":["24h","7d","30d"],"default":"7d"},"in":"query","name":"window","required":false,"description":"Rolling window."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"path","name":"operator","required":true,"description":"Validator id: bech32 operator address (…valoper1…) or bech32 consensus address (…valcons1…)."}],"x-example-request":{"network":"celestia_mocha_5","params":{"operator":"celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx"},"query":{"window":"7d"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"operator_address":{"type":["null","string"],"description":"Bech32 operator address."},"consensus_address":{"type":["null","string"],"description":"Bech32 consensus address."},"window":{"type":"string","description":"Window applied."},"reachability_pct":{"type":["null","number"],"description":"Successful reach probes, percent."},"probes":{"type":["null","object"],"properties":{"ok":{"type":"integer","description":"Successful probes."},"total":{"type":"integer","description":"Probes run."}},"additionalProperties":false},"endorsements":{"type":["null","object"],"properties":{"signed":{"type":"integer","description":"Blobs this validator signed."},"assigned":{"type":"integer","description":"Blobs it was assigned rows for."},"rate_pct":{"type":["null","number"],"description":"signed / assigned, percent."}},"additionalProperties":false,"description":"Endorsement tally."},"service":{"type":["null","object"],"properties":{"served":{"type":"integer","description":"Serve checks answered with the assigned rows."},"checked":{"type":"integer","description":"Endorsements checked in the window."},"rate_pct":{"type":["null","number"],"description":"served / checked, percent."}},"additionalProperties":false,"description":"Serve-check tally."},"shard_bytes":{"type":["null","integer"],"description":"Shard bytes assigned in the window."},"held_bytes":{"type":["null","integer"],"description":"Bytes currently held in retention (not windowed)."}},"additionalProperties":false,"description":"One window of a validator's figures. Example captured 2026-10-25T23:38:33.174Z from /api/v1/celestia_mocha_5/fibre/validators/celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx/stats?window=7d.","examples":[{"operator_address":"celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx","consensus_address":"celestiavalcons17dzlj8xncd3r3a2s5qjgqrq29ngd04yu6v4lcc","window":"7d","reachability_pct":100,"probes":{"ok":9976,"total":9976},"endorsements":{"signed":1398,"assigned":1498,"rate_pct":93.32},"service":{"served":1398,"checked":1398,"rate_pct":100},"shard_bytes":588827648,"held_bytes":26664192}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/blobs":{"get":{"operationId":"listFibreBlobs","summary":"List Fibre blobs","tags":["Fibre"],"description":"Settled blobs (`kind=settlement`, default) or payment-promise timeouts (`kind=timeout`), newest first by settlement height.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–500)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","maxLength":90},"in":"query","name":"publisher","required":false,"description":"Exact publisher account address."},{"schema":{"type":"string","maxLength":90},"in":"query","name":"signer","required":false,"description":"Exact promise signer account address."},{"schema":{"type":"string","maxLength":66,"pattern":"^(0[xX])?[0-9a-fA-F]*$"},"in":"query","name":"namespace","required":false,"description":"Namespace id (58 hex chars) or a hex prefix, with or without 0x."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"min_height","required":false,"description":"Only settlements at or above this height."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"max_height","required":false,"description":"Only settlements at or below this height."},{"schema":{"type":"boolean"},"in":"query","name":"in_retention","required":false,"description":"Only blobs still inside (true) or past (false) their serve window. Settlements only. Accepts true/false or 1/0."},{"schema":{"type":"string","enum":["settlement","timeout"],"default":"settlement"},"in":"query","name":"kind","required":false,"description":"Settled promises, or MsgPaymentPromiseTimeout events."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mocha_5","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"promise_hash":{"type":["null","string"],"description":"Blob id (`height:commitment_hex:signer`)."},"commitment":{"type":["null","string"],"description":"Blob commitment, hex."},"namespace":{"type":["null","string"],"description":"Namespace id, 58 hex chars."},"blob_size_bytes":{"type":["null","integer"],"description":"Blob size."},"publisher":{"type":["null","string"],"description":"Account that paid."},"signer":{"type":["null","string"],"description":"Account that signed the promise."},"settlement_height":{"type":["null","integer"],"description":"Height of the settlement (or timeout) tx."},"settlement_tx_hash":{"type":["null","string"],"description":"Settlement tx hash."},"settlement_time":{"type":["null","string"],"format":"date-time","description":"Block time of the settlement."},"created_at":{"type":["null","string"],"format":"date-time","description":"Promise creation time."},"must_serve_until":{"type":["null","string"],"format":"date-time","description":"End of the serve window; null for timeouts."},"in_retention":{"type":"boolean","description":"Still inside the serve window."},"signers_count":{"type":["null","integer"],"description":"Validators whose signature is in the settlement."},"validators_count":{"type":["null","integer"],"description":"Active-set size at promise height."},"attested_vp_pct":{"type":["null","number"],"description":"Voting power behind the signatures, percent."},"fee_utia":{"type":["null","integer"],"description":"Fee charged, utia."},"kind":{"type":"string","description":"settlement or timeout."}},"additionalProperties":false,"description":"A settled payment promise (or a timeout).","required":["promise_hash"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T23:38:33.259Z from /api/v1/celestia_mocha_5/fibre/blobs?limit=5.","examples":[{"items":[{"promise_hash":"2022864:54a14d9239786725a05bd7b60604e29694bfc262b7bf3eff7add1c0de63d4bd9:celestia15rnqxh8lym8z95fpm06d5frtpy6nhn7fv0uafj","commitment":"54a14d9239786725a05bd7b60604e29694bfc262b7bf3eff7add1c0de63d4bd9","namespace":"0000000000000000000000000000000000000000000000006b72657773","blob_size_bytes":3670016,"publisher":"celestia15rnqxh8lym8z95fpm06d5frtpy6nhn7fv0uafj","signer":"celestia15rnqxh8lym8z95fpm06d5frtpy6nhn7fv0uafj","settlement_height":2022866,"settlement_tx_hash":"e7b1fede7ff20b1bcee0bae9d0b341577de3f022c9f0794c05e79a0f962f6037","settlement_time":"2026-10-25T23:34:14.751Z","created_at":"2026-10-25T23:34:13.487Z","must_serve_until":"2026-10-26T03:34:13.487Z","in_retention":true,"signers_count":49,"validators_count":88,"attested_vp_pct":67.1865,"fee_utia":1280000,"kind":"settlement"},{"promise_hash":"2022571:23e66daa5fb1b6a55b4ba592f1cdf56b785e900c7ac50835b68ea4fd0c66f5cc:celestia130esyug49fnzfvln9n6vzugtgaenufltmxtmz8","commitment":"23e66daa5fb1b6a55b4ba592f1cdf56b785e900c7ac50835b68ea4fd0c66f5cc","namespace":"0000000000000000000000000000000000000066696272652d64656d6f","blob_size_bytes":262144,"publisher":"celestia130esyug49fnzfvln9n6vzugtgaenufltmxtmz8","signer":"celestia130esyug49fnzfvln9n6vzugtgaenufltmxtmz8","settlement_height":2022573,"settlement_tx_hash":"c2a989df50b3c5c81dcbc3fc167516f2e54109a30c165672745304da539b23ef","settlement_time":"2026-10-25T23:20:14.260Z","created_at":"2026-10-25T23:20:12.369Z","must_serve_until":"2026-10-26T03:20:12.369Z","in_retention":true,"signers_count":50,"validators_count":88,"attested_vp_pct":68.2746,"fee_utia":695000,"kind":"settlement"},{"promise_hash":"2022379:941a310d5df96fc7fdcc099fd802ad7c535d86ff401c599f98c913ad0149690a:celestia15rnqxh8lym8z95fpm06d5frtpy6nhn7fv0uafj","commitment":"941a310d5df96fc7fdcc099fd802ad7c535d86ff401c599f98c913ad0149690a","namespace":"0000000000000000000000000000000000000000000000006b72657773","blob_size_bytes":3670016,"publisher":"celestia15rnqxh8lym8z95fpm06d5frtpy6nhn7fv0uafj","signer":"celestia15rnqxh8lym8z95fpm06d5frtpy6nhn7fv0uafj","settlement_height":2022382,"settlement_tx_hash":"2460bb23db82f7af4fa367f6f1acb98782f3e7fff92619290ca7a39548b1d2aa","settlement_time":"2026-10-25T23:11:09.896Z","created_at":"2026-10-25T23:11:06.491Z","must_serve_until":"2026-10-26T03:11:06.491Z","in_retention":true,"signers_count":48,"validators_count":88,"attested_vp_pct":68.2474,"fee_utia":1280000,"kind":"settlement"},"… 2 more"],"next_cursor":"eyJrIjoyMDIxODk3LCJpIjoiMjAyMTg5NzoyOjAifQ","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/blobs/{promise_hash}":{"get":{"operationId":"getFibreBlob","summary":"Fibre blob detail","tags":["Fibre"],"description":"One blob by promise hash, commitment or settlement tx hash. `include=signers` adds each endorser with its shard share, `include=serve_checks` the latest start and end check per endorser.","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return. Ids are always included."},{"schema":{"type":"string","maxLength":256},"example":"signers,serve_checks","in":"query","name":"include","required":false,"description":"Comma-separated expansions to embed: signers, serve_checks."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":256,"minLength":10},"examples":{"4272486513bca9fe2b6009c29c7012298a1a75da249e1e6ec0d4f077ab3076ae":{"value":"4272486513bca9fe2b6009c29c7012298a1a75da249e1e6ec0d4f077ab3076ae"},"1992813:4272486513bca9fe2b6009c29c7012298a1a75da249e1e6ec0d4f077ab3076ae:celestia130esyug49fnzfvln9n6vzugtgaenufltmxtmz8":{"value":"1992813:4272486513bca9fe2b6009c29c7012298a1a75da249e1e6ec0d4f077ab3076ae:celestia130esyug49fnzfvln9n6vzugtgaenufltmxtmz8"}},"in":"path","name":"promise_hash","required":true,"description":"Blob id: the promise hash (`height:commitment_hex:signer`), or the 64-hex blob commitment or settlement tx hash."}],"x-example-request":{"network":"celestia_mocha_5","params":{"promise_hash":"4272486513bca9fe2b6009c29c7012298a1a75da249e1e6ec0d4f077ab3076ae"},"query":{"include":"signers"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"promise_hash":{"type":["null","string"],"description":"Blob id (`height:commitment_hex:signer`)."},"commitment":{"type":["null","string"],"description":"Blob commitment, hex."},"namespace":{"type":["null","string"],"description":"Namespace id, 58 hex chars."},"blob_size_bytes":{"type":["null","integer"],"description":"Blob size."},"publisher":{"type":["null","string"],"description":"Account that paid."},"signer":{"type":["null","string"],"description":"Account that signed the promise."},"settlement_height":{"type":["null","integer"],"description":"Height of the settlement (or timeout) tx."},"settlement_tx_hash":{"type":["null","string"],"description":"Settlement tx hash."},"settlement_time":{"type":["null","string"],"format":"date-time","description":"Block time of the settlement."},"created_at":{"type":["null","string"],"format":"date-time","description":"Promise creation time."},"must_serve_until":{"type":["null","string"],"format":"date-time","description":"End of the serve window; null for timeouts."},"in_retention":{"type":"boolean","description":"Still inside the serve window."},"signers_count":{"type":["null","integer"],"description":"Validators whose signature is in the settlement."},"validators_count":{"type":["null","integer"],"description":"Active-set size at promise height."},"attested_vp_pct":{"type":["null","number"],"description":"Voting power behind the signatures, percent."},"fee_utia":{"type":["null","integer"],"description":"Fee charged, utia."},"kind":{"type":"string","description":"settlement or timeout."},"signers":{"type":"array","items":{"type":"object","properties":{"consensus_address":{"type":"string","description":"Bech32 consensus address."},"operator_address":{"type":["null","string"],"description":"Bech32 operator address when the validator is in the snapshot."},"moniker":{"type":["null","string"],"description":"Display name."},"shard_bytes":{"type":["null","integer"],"description":"Bytes of this blob assigned to the validator."}},"additionalProperties":false},"description":"Endorsers with their shard share (with `include=signers`)."},"serve_checks":{"type":"array","items":{"type":"object","properties":{"consensus_address":{"type":"string","description":"Validator checked."},"operator_address":{"type":["null","string"],"description":"Its operator address."},"promise_hash":{"type":["null","string"],"description":"Blob the check downloaded from."},"ts":{"type":["null","string"],"format":"date-time","description":"Check time."},"status":{"type":["null","string"],"description":"Raw outcome: served, rows, not_found, empty, server_error, timeout, unreachable, no-grpc…"},"verdict":{"type":"string","description":"served, not_served, mismatch or not_counted."},"rows":{"type":"integer","description":"Rows returned."},"expected_rows":{"type":"integer","description":"Rows the validator was assigned."},"latency_ms":{"type":["null","integer"],"description":"Download latency."},"final":{"type":"boolean","description":"End-of-window check (true) or start-of-window check (false)."},"source":{"type":["null","string"],"description":"edge or local."},"region":{"type":["null","string"],"description":"Edge region id."},"region_label":{"type":["null","string"],"description":"Human label of the region."}},"additionalProperties":false},"description":"Latest start and end check per endorser (with `include=serve_checks`)."}},"additionalProperties":false,"description":"Blob detail; `signers` and `serve_checks` appear with `include=`. Example captured 2026-10-25T23:38:33.325Z from /api/v1/celestia_mocha_5/fibre/blobs/4272486513bca9fe2b6009c29c7012298a1a75da249e1e6ec0d4f077ab3076ae?include=signers.","required":["promise_hash"],"examples":[{"promise_hash":"1967443:4272486513bca9fe2b6009c29c7012298a1a75da249e1e6ec0d4f077ab3076ae:celestia130esyug49fnzfvln9n6vzugtgaenufltmxtmz8","commitment":"4272486513bca9fe2b6009c29c7012298a1a75da249e1e6ec0d4f077ab3076ae","namespace":"0000000000000000000000000000000000000066696272652d64656d6f","blob_size_bytes":262144,"publisher":"celestia130esyug49fnzfvln9n6vzugtgaenufltmxtmz8","signer":"celestia130esyug49fnzfvln9n6vzugtgaenufltmxtmz8","settlement_height":1967445,"settlement_tx_hash":"8a912114a0b3f251bc8dcae260b379c8734ab421010fcb0ebf2c1b3291ea62c2","settlement_time":"2026-10-24T03:29:03.471Z","created_at":"2026-10-24T03:29:02.378Z","must_serve_until":"2026-10-24T07:29:02.378Z","in_retention":false,"signers_count":50,"validators_count":88,"attested_vp_pct":68.2475,"fee_utia":695000,"kind":"settlement","signers":[{"consensus_address":"celestiavalcons17dzlj8xncd3r3a2s5qjgqrq29ngd04yu6v4lcc","operator_address":"celestiavaloper19jz75rcp26a6tkch208qm2wmt2ekk4a272cvlx","moniker":"devops","shard_bytes":93888},{"consensus_address":"celestiavalcons1gr2y25jpx2v6qfq08rvw9xy25hpxvncxtd2lr5","operator_address":"celestiavaloper1gt9f9xta2mj5xmwgqy7ph2qhrcrkdfd2wk3ugr","moniker":"P-OPS Team","shard_bytes":49472},{"consensus_address":"celestiavalcons1ytjyl9mkgzf6j264mxxygcl5uje0ws4fu5gf0q","operator_address":"celestiavaloper1ypueejv825cm8gqxcfpa963vh3xy8c2anzm6kh","moniker":"Qubelabs","shard_bytes":47296},"… 47 more"]}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/publishers":{"get":{"operationId":"listFibrePublishers","summary":"List Fibre publishers","tags":["Fibre"],"description":"Accounts that paid for blobs, with settled volume, fees and escrow: the top 50 by fees plus publishers whose promises only timed out.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–200)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","maxLength":128},"in":"query","name":"search","required":false,"description":"Case-insensitive substring of the publisher address."},{"schema":{"type":"boolean","default":false},"in":"query","name":"count","required":false,"description":"Add `total` to the response. Accepts true/false or 1/0."},{"schema":{"type":"string","default":"-fees_utia"},"examples":{"-fees_utia":{"value":"-fees_utia"},"-settlements":{"value":"-settlements"},"-bytes":{"value":"-bytes"}},"in":"query","name":"sort","required":false,"description":"Sort field; prefix with \"-\" for descending. One of: fees_utia, settlements, bytes. Default `-fees_utia`."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mocha_5","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","description":"Bech32 account address."},"settlements":{"type":"integer","description":"Settled promises."},"bytes":{"type":"integer","description":"Bytes settled."},"fees_utia":{"type":"integer","description":"Fees paid, utia."},"paid_per_mib_utia":{"type":["null","number"],"description":"Fees per MiB settled, utia."},"avg_blob_bytes":{"type":["null","integer"],"description":"Mean blob size."},"largest_blob_bytes":{"type":["null","integer"],"description":"Largest blob."},"timeouts":{"type":"integer","description":"Promises that timed out."},"timed_out_utia":{"type":["null","integer"],"description":"Fees charged on timeouts, utia."},"namespaces_count":{"type":"integer","description":"Distinct namespaces written."},"first_settlement_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"last_settlement_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"escrow_utia":{"type":["null","integer"],"description":"Escrow balance, utia; null when no escrow account was found."},"escrow_available_utia":{"type":["null","integer"],"description":"Withdrawable escrow, utia."}},"additionalProperties":false,"description":"Publisher as listed.","required":["address"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T23:38:33.329Z from /api/v1/celestia_mocha_5/fibre/publishers?limit=5.","examples":[{"items":[{"address":"celestia1las83d0dt9gew3faq2mxp2gtupq5drclee9snr","settlements":8472,"bytes":142723776512,"fees_utia":30006960000,"paid_per_mib_utia":220458,"avg_blob_bytes":16846527,"largest_blob_bytes":134217728,"timeouts":0,"timed_out_utia":0,"namespaces_count":2,"first_settlement_at":"2026-09-28T12:47:32.406Z","last_settlement_at":"2026-10-02T14:54:50.445Z","escrow_utia":19993040000,"escrow_available_utia":19993040000},{"address":"celestia1jw8afsj3j0c23fxs09nu8pq5asxwes5e3kkxdx","settlements":706,"bytes":16217276416,"fees_utia":3242780000,"paid_per_mib_utia":209672,"avg_blob_bytes":22970646,"largest_blob_bytes":134217728,"timeouts":0,"timed_out_utia":0,"namespaces_count":33,"first_settlement_at":"2026-09-25T16:11:05.086Z","last_settlement_at":"2026-10-20T14:32:15.955Z","escrow_utia":261220000,"escrow_available_utia":261220000},{"address":"celestia1kh9j9zvpt3kw2ql5fy0wv8qz65h3vasrlzmvmw","settlements":247,"bytes":8902934528,"fees_utia":1688840000,"paid_per_mib_utia":198909,"avg_blob_bytes":36044269,"largest_blob_bytes":100925440,"timeouts":0,"timed_out_utia":0,"namespaces_count":1,"first_settlement_at":"2026-09-28T14:15:25.935Z","last_settlement_at":"2026-10-11T00:15:27.630Z","escrow_utia":134845000,"escrow_available_utia":134845000},"… 2 more"],"next_cursor":"eyJvIjo1fQ","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/publishers/{address}":{"get":{"operationId":"getFibrePublisher","summary":"Fibre publisher detail","tags":["Fibre"],"description":"One publisher with its escrow and the namespaces it has written to (publishers outside the top set answer 404).","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return. Ids are always included."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestia1las83d0dt9gew3faq2mxp2gtupq5drclee9snr","in":"path","name":"address","required":true,"description":"Bech32 account address."}],"x-example-request":{"network":"celestia_mocha_5","params":{"address":"celestia1las83d0dt9gew3faq2mxp2gtupq5drclee9snr"},"query":{}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"Bech32 account address."},"settlements":{"type":"integer","description":"Settled promises."},"bytes":{"type":"integer","description":"Bytes settled."},"fees_utia":{"type":"integer","description":"Fees paid, utia."},"paid_per_mib_utia":{"type":["null","number"],"description":"Fees per MiB settled, utia."},"avg_blob_bytes":{"type":["null","integer"],"description":"Mean blob size."},"largest_blob_bytes":{"type":["null","integer"],"description":"Largest blob."},"timeouts":{"type":"integer","description":"Promises that timed out."},"timed_out_utia":{"type":["null","integer"],"description":"Fees charged on timeouts, utia."},"namespaces_count":{"type":"integer","description":"Distinct namespaces written."},"first_settlement_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"last_settlement_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"escrow_utia":{"type":["null","integer"],"description":"Escrow balance, utia; null when no escrow account was found."},"escrow_available_utia":{"type":["null","integer"],"description":"Withdrawable escrow, utia."},"namespaces":{"type":"array","items":{"type":"string","description":"Namespace id, 58 hex chars."},"description":"Every namespace this publisher has written to, most bytes first."}},"additionalProperties":false,"description":"Publisher detail. Example captured 2026-10-25T23:38:33.411Z from /api/v1/celestia_mocha_5/fibre/publishers/celestia1las83d0dt9gew3faq2mxp2gtupq5drclee9snr.","required":["address"],"examples":[{"address":"celestia1las83d0dt9gew3faq2mxp2gtupq5drclee9snr","settlements":8472,"bytes":142723776512,"fees_utia":30006960000,"paid_per_mib_utia":220458,"avg_blob_bytes":16846527,"largest_blob_bytes":134217728,"timeouts":0,"timed_out_utia":0,"namespaces_count":2,"first_settlement_at":"2026-09-28T12:47:32.406Z","last_settlement_at":"2026-10-02T14:54:50.445Z","escrow_utia":19993040000,"escrow_available_utia":19993040000,"namespaces":["00000000000000000000000000000000000000736f762d6e696b6f2d61","000000000000000000000000000000000000006c61743132386d696230"]}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/namespaces":{"get":{"operationId":"listFibreNamespaces","summary":"List Fibre namespaces","tags":["Fibre"],"description":"Namespaces written through Fibre with settled volume, fees, publishers and share of all bytes.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–200)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","maxLength":128},"in":"query","name":"search","required":false,"description":"Case-insensitive substring of the namespace id or label."},{"schema":{"type":"boolean","default":false},"in":"query","name":"count","required":false,"description":"Add `total` to the response. Accepts true/false or 1/0."},{"schema":{"type":"string","default":"-bytes"},"examples":{"-bytes":{"value":"-bytes"},"-settlements":{"value":"-settlements"}},"in":"query","name":"sort","required":false,"description":"Sort field; prefix with \"-\" for descending. One of: bytes, settlements. Default `-bytes`."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mocha_5","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"namespace":{"type":"string","description":"Namespace id, 58 hex chars."},"version":{"type":["null","integer"],"description":"Namespace version byte."},"label":{"type":["null","string"],"description":"ASCII rendering of the id when printable."},"kind":{"type":["null","string"],"description":"user, reserved or parity."},"reserved":{"type":["null","boolean"],"description":"Protocol-reserved namespace."},"settlements":{"type":"integer","description":"Settled promises."},"bytes":{"type":"integer","description":"Bytes settled."},"share_pct":{"type":["null","number"],"description":"Share of all settled bytes, percent."},"fees_utia":{"type":"integer","description":"Fees paid, utia."},"timeouts":{"type":"integer","description":"Promises that timed out."},"publishers":{"type":"integer","description":"Distinct publishers."},"largest_blob_bytes":{"type":["null","integer"],"description":"Largest blob."},"in_retention":{"type":"integer","description":"Blobs still inside the serve window."},"first_settlement_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"last_settlement_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."}},"additionalProperties":false,"description":"Namespace as listed.","required":["namespace"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T23:38:33.413Z from /api/v1/celestia_mocha_5/fibre/namespaces?limit=5.","examples":[{"items":[{"namespace":"00000000000000000000000000000000000000736f762d6e696b6f2d61","version":0,"label":"sov-niko-a","kind":"user","reserved":null,"settlements":8467,"bytes":142052687872,"share_pct":83.0908,"fees_utia":29888510000,"timeouts":0,"publishers":1,"largest_blob_bytes":16777216,"in_retention":0,"first_settlement_at":"2026-09-28T12:47:32.406Z","last_settlement_at":"2026-09-28T20:48:38.760Z"},{"namespace":"00000000000000000000000000000000000000000074656e73696c6500","version":0,"label":"tensile","kind":"user","reserved":null,"settlements":708,"bytes":15629549568,"share_pct":9.1422,"fees_utia":3143190000,"timeouts":0,"publishers":9,"largest_blob_bytes":134217728,"in_retention":0,"first_settlement_at":"2026-10-01T17:18:06.819Z","last_settlement_at":"2026-10-20T14:29:27.942Z"},{"namespace":"000000000000000000000000000000000000000000008e5f679bf7116c","version":0,"label":null,"kind":"user","reserved":null,"settlements":247,"bytes":8902934528,"share_pct":5.2076,"fees_utia":1688840000,"timeouts":0,"publishers":1,"largest_blob_bytes":100925440,"in_retention":0,"first_settlement_at":"2026-09-28T14:15:25.935Z","last_settlement_at":"2026-10-11T00:15:27.630Z"},"… 2 more"],"next_cursor":"eyJvIjo1fQ","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/fibre/activity":{"get":{"operationId":"getFibreActivity","summary":"Fibre settlement activity","tags":["Fibre"],"description":"Settlement counts, fees, bytes and signatures per bucket: hourly for `24h`, daily for `7d` and `30d`; empty buckets are zeros.","parameters":[{"schema":{"type":"string","enum":["24h","7d","30d"],"default":"7d"},"in":"query","name":"window","required":false,"description":"Rolling window."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mocha_5","params":{},"query":{"window":"24h"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","description":"Network id."},"window":{"type":"string","description":"Window applied."},"bucket":{"type":"string","description":"Bucket size: hour or day."},"buckets":{"type":"array","items":{"type":"object","properties":{"start":{"type":["null","string"],"format":"date-time","description":"Bucket start."},"end":{"type":["null","string"],"format":"date-time","description":"Bucket end."},"settlements":{"type":"integer","description":"Settlements in the bucket."},"fees_utia":{"type":"integer","description":"Fees, utia."},"bytes":{"type":"integer","description":"Bytes settled."},"endorsements":{"type":"integer","description":"Signatures across the settlements."},"max_blob_bytes":{"type":"integer","description":"Largest blob."},"avg_vp_pct":{"type":["null","number"],"description":"Mean attested voting power per settlement, percent."}},"additionalProperties":false}}},"additionalProperties":false,"description":"Settlement activity buckets. Example captured 2026-10-25T23:38:33.415Z from /api/v1/celestia_mocha_5/fibre/activity?window=24h.","required":["network","window","buckets"],"examples":[{"network":"celestia_mocha_5","window":"24h","buckets":[{"start":"2026-10-25T00:00:00.000Z","end":"2026-10-25T01:00:00.000Z","settlements":5,"fees_utia":4960000,"bytes":9961472,"endorsements":240,"max_blob_bytes":3145728,"avg_vp_pct":67.1883},{"start":"2026-10-25T01:00:00.000Z","end":"2026-10-25T02:00:00.000Z","settlements":5,"fees_utia":4960000,"bytes":9961472,"endorsements":242,"max_blob_bytes":3145728,"avg_vp_pct":67.2428},{"start":"2026-10-25T02:00:00.000Z","end":"2026-10-25T03:00:00.000Z","settlements":4,"fees_utia":3770000,"bytes":6815744,"endorsements":193,"max_blob_bytes":3145728,"avg_vp_pct":67.4609},"… 21 more"],"bucket":"hour"}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/missed-proposals":{"get":{"operationId":"listMissedProposals","summary":"List missed proposals","tags":["Missed Proposals"],"description":"Consensus rounds in which the scheduled proposer did not deliver a block, newest first.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–500)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"query","name":"operator","required":false,"description":"Only rounds scheduled for this validator (bech32 operator address)."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"min_height","required":false,"description":"Only rounds at or above this height."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"max_height","required":false,"description":"Only rounds at or below this height."},{"schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00Z","in":"query","name":"from","required":false,"description":"Only rounds at or after this time."},{"schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00Z","in":"query","name":"to","required":false,"description":"Only rounds at or before this time."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"height":{"type":"integer","description":"Height of the missed round."},"round":{"type":["null","integer"],"description":"Consensus round that was missed (0 is the first)."},"timestamp":{"type":["null","string"],"format":"date-time","description":"Block time of the height that was eventually produced."},"proposer":{"type":"object","properties":{"operator_address":{"type":"string","description":"Bech32 operator address."},"consensus_address":{"type":["null","string"],"description":"Hex consensus address."},"moniker":{"type":["null","string"],"description":"Display name."},"avatar_url":{"type":["null","string"],"description":"Keybase avatar URL."}},"additionalProperties":false,"description":"Minimal validator identity."}},"additionalProperties":false,"description":"A proposal slot the scheduled proposer did not deliver.","required":["height"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T18:27:11.874Z from /api/v1/celestia_mainnet/missed-proposals?limit=5.","examples":[{"items":[{"height":15284980,"round":0,"timestamp":"2026-10-25T17:05:28.623Z","proposer":{"operator_address":"celestiavaloper19v94c3z7ckarwsum76kaagma0wqsqhh5nl5zqg","consensus_address":"65AFA0603AAD6F854F8EC3BF8F1030E6D0568486","moniker":"Validatus","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/22719e70a0bf62d953ee027e7595d005_360_360.jpg"}},{"height":15284925,"round":0,"timestamp":"2026-10-25T17:02:46.784Z","proposer":{"operator_address":"celestiavaloper19v94c3z7ckarwsum76kaagma0wqsqhh5nl5zqg","consensus_address":"65AFA0603AAD6F854F8EC3BF8F1030E6D0568486","moniker":"Validatus","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/22719e70a0bf62d953ee027e7595d005_360_360.jpg"}},{"height":15284858,"round":0,"timestamp":"2026-10-25T16:59:30.840Z","proposer":{"operator_address":"celestiavaloper19v94c3z7ckarwsum76kaagma0wqsqhh5nl5zqg","consensus_address":"65AFA0603AAD6F854F8EC3BF8F1030E6D0568486","moniker":"Validatus","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/22719e70a0bf62d953ee027e7595d005_360_360.jpg"}},"… 2 more"],"next_cursor":"eyJrIjoxNTI4NDc0MiwiaSI6IjZhZGUzNDFkMzhlODhmYTI1YWUyMDQwZSJ9","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/missed-proposals/stats":{"get":{"operationId":"getMissedProposalStats","summary":"Missed-proposal totals","tags":["Missed Proposals"],"description":"How many rounds were missed, by how many distinct proposers, over a rolling window of 24 hours, 7 days (default) or 30 days, with a per-UTC-day breakdown. Computed from `missed_proposals` timestamps; refreshed every 60 s.","parameters":[{"schema":{"type":"string","enum":["24h","7d","30d"],"default":"7d"},"in":"query","name":"window","required":false,"description":"Rolling window ending now."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"window":"30d"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","description":"Network id."},"window":{"type":"string","description":"Rolling window that was applied: 24h, 7d or 30d."},"from":{"type":["null","string"],"format":"date-time","description":"Start of the window (inclusive)."},"to":{"type":["null","string"],"format":"date-time","description":"End of the window (inclusive)."},"missed":{"type":"integer","description":"Missed rounds in the window."},"validators_affected":{"type":"integer","description":"Distinct proposers that missed at least one round."},"per_day":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"UTC calendar day, YYYY-MM-DD."},"missed":{"type":"integer","description":"Missed rounds that day."},"validators":{"type":"integer","description":"Distinct proposers that missed that day."}},"additionalProperties":false},"description":"One entry per UTC day with at least one miss, oldest first."}},"additionalProperties":false,"description":"Missed-proposal totals over a rolling window. Example captured 2026-10-25T18:27:11.937Z from /api/v1/celestia_mainnet/missed-proposals/stats?window=30d.","required":["network","window","from","to","missed","validators_affected","per_day"],"examples":[{"network":"celestia_mainnet","window":"30d","from":"2026-09-25T18:27:11.874Z","to":"2026-10-25T18:27:11.874Z","missed":624,"validators_affected":56,"per_day":[{"date":"2026-09-26","missed":103,"validators":5},{"date":"2026-09-27","missed":1,"validators":1},{"date":"2026-09-28","missed":16,"validators":3},"… 24 more"]}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/missed-proposals/rankings":{"get":{"operationId":"listProposerRankings","summary":"Proposer rankings","tags":["Missed Proposals"],"description":"Validators ranked by proposer miss rate over the indexed window: slots delivered versus missed, average voting-power share and last miss. Rebuilt every few minutes (`updated_at`); Celestia networks only.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–200)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"integer","minimum":0,"maximum":1000000,"default":10},"in":"query","name":"min_slots","required":false,"description":"Minimum proposal slots (signed + missed) a validator needs to be listed."},{"schema":{"type":"string","default":"-miss_rate_pct"},"examples":{"-miss_rate_pct":{"value":"-miss_rate_pct"},"-missed":{"value":"-missed"},"-signed":{"value":"-signed"}},"in":"query","name":"sort","required":false,"description":"Sort field; prefix with \"-\" for descending. One of: miss_rate_pct, missed, signed. Default `-miss_rate_pct`."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"validator":{"type":"object","properties":{"operator_address":{"type":"string","description":"Bech32 operator address."},"consensus_address":{"type":["null","string"],"description":"Hex consensus address."},"moniker":{"type":["null","string"],"description":"Display name."},"avatar_url":{"type":["null","string"],"description":"Keybase avatar URL."}},"additionalProperties":false,"description":"Minimal validator identity."},"signed":{"type":"integer","description":"Proposal slots delivered."},"missed":{"type":"integer","description":"Proposal slots missed."},"slots":{"type":"integer","description":"Proposal slots in the window (signed + missed)."},"miss_rate_pct":{"type":["null","number"],"description":"missed / slots, percent."},"avg_voting_power_pct":{"type":["null","number"],"description":"Average share of voting power over the window, percent; null when no snapshot covers the validator."},"last_missed":{"type":["null","object"],"properties":{"height":{"type":"integer","description":"Height of the last missed round."},"timestamp":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."}},"additionalProperties":false,"description":"Most recent miss, or null."},"low_sample":{"type":"boolean","description":"Fewer than 10 slots: the rate is not statistically meaningful."}},"additionalProperties":false,"description":"One validator's proposer record.","required":["validator"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."},"window":{"type":["null","object"],"properties":{"min_height":{"type":"integer","description":"First height of the window."},"max_height":{"type":"integer","description":"Last height of the window."}},"additionalProperties":false,"description":"Height range the snapshot covers; null while the first snapshot is being computed."},"updated_at":{"type":["null","string"],"format":"date-time","description":"When the snapshot was computed."}},"additionalProperties":false,"description":"Proposer rankings page. Example captured 2026-10-25T18:27:12.079Z from /api/v1/celestia_mainnet/missed-proposals/rankings?limit=5.","required":["items","next_cursor","limit"],"examples":[{"items":[{"validator":{"operator_address":"celestiavaloper13xz8683xvpm8qnen8nzggy7604d80fr872lycx","consensus_address":"0F581529A11D28339E2611D963EDE56D96F221CA","moniker":"Tané","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/f497798ec6e2834d65cf5232120f7c05_360_360.jpg"},"signed":0,"missed":155,"slots":155,"miss_rate_pct":100,"avg_voting_power_pct":null,"last_missed":{"height":8806714,"timestamp":"2025-12-04T19:19:02.767Z"},"low_sample":false},{"validator":{"operator_address":"celestiavaloper1cmaga4f6f7pttuwzfldn9067ld3090uw0e6zq8","consensus_address":"6B2C63872F6D3402AEB5B616B63AE83982D6B5F6","moniker":"wavefive","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/d5a2f83f5467dd169401cdba7a205d05_360_360.jpg"},"signed":0,"missed":72,"slots":72,"miss_rate_pct":100,"avg_voting_power_pct":null,"last_missed":{"height":10053415,"timestamp":"2026-03-02T20:27:28.271Z"},"low_sample":false},{"validator":{"operator_address":"celestiavaloper1n4x47z0e8wlhjvvafhhuvypz4kfqal7er80ejy","consensus_address":"AF1333337F449C2D70BA70D1A70A9591E27A4DB7","moniker":"StakeUs","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/46a12154829e5a88c84cbc8de01d4a05_360_360.jpg"},"signed":0,"missed":69,"slots":69,"miss_rate_pct":100,"avg_voting_power_pct":0,"last_missed":{"height":9317636,"timestamp":"2026-01-09T22:45:35.899Z"},"low_sample":false},"… 2 more"],"next_cursor":"eyJvIjo1fQ","limit":5,"window":{"min_height":8483400,"max_height":15286607},"updated_at":"2026-10-25T18:23:29.171Z"}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/nodes":{"get":{"operationId":"listNodes","summary":"List network nodes","tags":["Network Nodes"],"description":"Consensus nodes from the latest P2P crawl (about hourly), with geolocation and peer rank, best-connected first.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–200)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","maxLength":2,"minLength":2},"in":"query","name":"country","required":false,"description":"ISO-3166 alpha-2 country code (case-insensitive)."},{"schema":{"type":"string","maxLength":128},"in":"query","name":"provider","required":false,"description":"Case-insensitive substring of the hosting provider / organisation."},{"schema":{"type":"string","maxLength":128},"in":"query","name":"search","required":false,"description":"Case-insensitive substring of the moniker, node id or IP."},{"schema":{"type":"boolean","default":false},"in":"query","name":"count","required":false,"description":"Add `total` to the response. Accepts true/false or 1/0."},{"schema":{"type":"string","default":"-peer_rank"},"examples":{"-peer_rank":{"value":"-peer_rank"},"moniker":{"value":"moniker"}},"in":"query","name":"sort","required":false,"description":"Sort field; prefix with \"-\" for descending. One of: peer_rank, moniker. Default `-peer_rank`."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"node_id":{"type":["null","string"],"description":"Tendermint node id (hex)."},"moniker":{"type":["null","string"],"description":"Node moniker as advertised to peers."},"ip":{"type":["null","string"],"description":"Public IP address."},"port":{"type":["null","integer"],"description":"P2P port."},"chain_id":{"type":["null","string"],"description":"Chain id the node reported."},"peer_rank":{"type":["null","number"],"description":"Crawler score: higher means the node was seen by more peers and answered faster."},"location":{"type":["null","object"],"properties":{"city":{"type":["null","string"],"description":"City."},"region":{"type":["null","string"],"description":"Region or state."},"country":{"type":["null","string"],"description":"ISO-3166 alpha-2 country code."},"country_name":{"type":["null","string"],"description":"Country name."},"provider":{"type":["null","string"],"description":"Hosting provider / organisation."},"asn":{"type":["null","string"],"description":"Autonomous system number."},"lat":{"type":["null","number"],"description":"Latitude."},"lon":{"type":["null","number"],"description":"Longitude."}},"additionalProperties":false,"description":"Geolocation of a host."},"crawled_at":{"type":["null","string"],"format":"date-time","description":"When the crawl that found this node ran."}},"additionalProperties":false,"description":"A consensus node found by the P2P crawler.","required":["node_id"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T18:27:12.275Z from /api/v1/celestia_mainnet/nodes?limit=5.","examples":[{"items":[{"node_id":"5f6cac70e9767f994c089b198300f8e5f750d0ef","moniker":"mainnet","ip":"61.111.3.65","port":20470,"chain_id":"celestia","peer_rank":291,"location":{"city":"Incheon","region":"Asia","country":"KR","country_name":"South Korea","provider":"AS3786 LG DACOM Corporation","asn":"AS3786","lat":37.4565,"lon":126.7052},"crawled_at":"2026-10-25T17:02:50.878Z"},{"node_id":"c5891aaf923e0aa5bbec3660454cfe08ae3c48c0","moniker":"tx2-risk-tia","ip":"150.109.95.123","port":26656,"chain_id":"celestia","peer_rank":290,"location":{"city":"Singapore","region":"Asia","country":"SG","country_name":"Singapore","provider":"AS132203 Tencent Building, Kejizhongyi Avenue","asn":"AS132203","lat":1.2897,"lon":103.8501},"crawled_at":"2026-10-25T17:02:50.878Z"},{"node_id":"292c560bca440b3e73a2c42f3118a0ed68b22174","moniker":"celestia mainnet","ip":"102.207.62.106","port":10656,"chain_id":"celestia","peer_rank":289,"location":{"city":"Johannesburg","region":"Africa","country":"ZA","country_name":"South Africa","provider":"AS329206 Rackzar  (Pty) Ltd","asn":"AS329206","lat":-26.2023,"lon":28.0436},"crawled_at":"2026-10-25T17:02:50.878Z"},"… 2 more"],"next_cursor":"eyJvIjo1fQ","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/nodes/stats":{"get":{"operationId":"getNodeStats","summary":"Node distribution","tags":["Network Nodes"],"description":"How the nodes of the latest crawl are spread across countries and hosting providers (top 50 each, descending), with the crawl time. Same batch as `listNodes`; refreshed about hourly.","parameters":[{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","description":"Network id."},"total":{"type":"integer","description":"Nodes in the latest crawl."},"crawled_at":{"type":["null","string"],"format":"date-time","description":"When the latest crawl ran."},"by_country":{"type":"array","items":{"type":"object","properties":{"country":{"type":["null","string"],"description":"ISO-3166 alpha-2 country code."},"country_name":{"type":["null","string"],"description":"Country name."},"nodes":{"type":"integer","description":"Nodes in that country."},"pct":{"type":"number","description":"Share of all nodes, percent."}},"additionalProperties":false},"description":"Top 50 countries by node count, descending."},"by_provider":{"type":"array","items":{"type":"object","properties":{"provider":{"type":["null","string"],"description":"Hosting provider / organisation."},"nodes":{"type":"integer","description":"Nodes with that provider."},"pct":{"type":"number","description":"Share of all nodes, percent."}},"additionalProperties":false},"description":"Top 50 providers by node count, descending."}},"additionalProperties":false,"description":"Distribution of the crawled nodes. Example captured 2026-10-25T18:27:12.288Z from /api/v1/celestia_mainnet/nodes/stats.","required":["network","total","by_country","by_provider"],"examples":[{"network":"celestia_mainnet","total":291,"by_country":[{"country":"US","country_name":"United States","nodes":52,"pct":17.87},{"country":"DE","country_name":"Germany","nodes":48,"pct":16.49},{"country":"FI","country_name":"Finland","nodes":36,"pct":12.37},"… 32 more"],"by_provider":[{"provider":"AS24940 Hetzner Online GmbH","nodes":53,"pct":18.21},{"provider":"AS16509 Amazon.com, Inc.","nodes":46,"pct":15.81},{"provider":"AS395201 Allnodes Inc","nodes":14,"pct":4.81},"… 47 more"],"crawled_at":"2026-10-25T17:02:50.878Z"}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/price":{"get":{"operationId":"getPrice","summary":"Staking token price","tags":["Network"],"description":"Current USD price of the network's staking token as stored by the price updater (`current_price` collection), refreshed about every minute. 404 `not_found` on networks where no price is tracked.","parameters":[{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","description":"Network id."},"symbol":{"type":["null","string"],"description":"Ticker of the staking token."},"currency":{"type":"string","description":"Quote currency; always `usd`."},"price":{"type":"number","description":"Price of one token in the quote currency."},"updated_at":{"type":["null","string"],"format":"date-time","description":"When the price was last fetched from the source."}},"additionalProperties":false,"description":"Current staking-token price. Example captured 2026-10-25T18:27:12.348Z from /api/v1/celestia_mainnet/price.","required":["network","currency","price"],"examples":[{"network":"celestia_mainnet","currency":"usd","price":0.537,"symbol":"TIA","updated_at":"2026-10-25T18:26:58.595Z"}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/snapshots":{"get":{"operationId":"listSnapshots","summary":"List node snapshots","tags":["Snapshots"],"description":"Krews node snapshots, newest block first, with download URL, sizes and binary version. Refreshed about every 2 h; 503 `unavailable` when the catalogue is not configured.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–200)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"boolean"},"in":"query","name":"pruned","required":false,"description":"Filter by snapshot type: true = pruned only, false = archive only. Omit for both. Accepts true/false or 1/0."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Catalogue code, e.g. `celestia_mainnet_pruned`."},"name":{"type":["null","string"],"description":"Display name."},"pruned":{"type":"boolean","description":"True for a pruned snapshot, false for an archive."},"pruning_mode":{"type":["null","string"],"description":"Pruning mode the node ran with (pruned, archive…)."},"block":{"type":["null","integer"],"description":"Block height the snapshot was taken at."},"snapshot_at":{"type":["null","string"],"format":"date-time","description":"When the snapshot was taken."},"period":{"type":["null","string"],"description":"How often the snapshot is refreshed, e.g. `2h`."},"size":{"type":["null","string"],"description":"Compressed download size, human readable (e.g. `2.6GB`)."},"raw_size":{"type":["null","string"],"description":"Uncompressed data size, human readable."},"url":{"type":["null","string"],"description":"Download URL of the archive."},"filename":{"type":["null","string"],"description":"Archive file name."},"app_name":{"type":["null","string"],"description":"Node binary the snapshot was taken with."},"version":{"type":["null","string"],"description":"Version of that binary."},"db_backend":{"type":["null","string"],"description":"Database backend (goleveldb, pebbledb…)."},"data_path":{"type":["null","string"],"description":"Data directory the archive unpacks into."},"indexer_mode":{"type":["null","string"],"description":"Transaction indexer setting when known."}},"additionalProperties":false,"description":"A node snapshot published by Krews.","required":["id"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T18:27:15.135Z from /api/v1/celestia_mainnet/snapshots?limit=5.","examples":[{"items":[{"id":"celestia_mainnet_pruned","name":"celestia mainnet pruned","pruned":true,"pruning_mode":"pruned","block":15286339,"snapshot_at":"2026-10-25T19:11:13.000Z","period":"2h","size":"2.6GB","raw_size":"6.4GB","url":"https://cdn.krews.xyz/celestia_mainnet_pruned-2026-10-25-15286339.tar.zst","filename":"celestia_mainnet_pruned-2026-10-25-15286339.tar.zst","app_name":"celestia-appd","version":"v9.0.6","db_backend":"pebbledb","data_path":"/data","indexer_mode":null}],"next_cursor":null,"limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/snapshots/latest":{"get":{"operationId":"getLatestSnapshot","summary":"Latest node snapshot","tags":["Snapshots"],"description":"The most recent snapshot (highest block), optionally restricted with `pruned`.","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return. Ids are always included."},{"schema":{"type":"boolean"},"in":"query","name":"pruned","required":false,"description":"Filter by snapshot type: true = pruned only, false = archive only. Omit for both. Accepts true/false or 1/0."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"pruned":"true"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Catalogue code, e.g. `celestia_mainnet_pruned`."},"name":{"type":["null","string"],"description":"Display name."},"pruned":{"type":"boolean","description":"True for a pruned snapshot, false for an archive."},"pruning_mode":{"type":["null","string"],"description":"Pruning mode the node ran with (pruned, archive…)."},"block":{"type":["null","integer"],"description":"Block height the snapshot was taken at."},"snapshot_at":{"type":["null","string"],"format":"date-time","description":"When the snapshot was taken."},"period":{"type":["null","string"],"description":"How often the snapshot is refreshed, e.g. `2h`."},"size":{"type":["null","string"],"description":"Compressed download size, human readable (e.g. `2.6GB`)."},"raw_size":{"type":["null","string"],"description":"Uncompressed data size, human readable."},"url":{"type":["null","string"],"description":"Download URL of the archive."},"filename":{"type":["null","string"],"description":"Archive file name."},"app_name":{"type":["null","string"],"description":"Node binary the snapshot was taken with."},"version":{"type":["null","string"],"description":"Version of that binary."},"db_backend":{"type":["null","string"],"description":"Database backend (goleveldb, pebbledb…)."},"data_path":{"type":["null","string"],"description":"Data directory the archive unpacks into."},"indexer_mode":{"type":["null","string"],"description":"Transaction indexer setting when known."}},"additionalProperties":false,"description":"A node snapshot published by Krews. Example captured 2026-10-25T18:27:15.203Z from /api/v1/celestia_mainnet/snapshots/latest?pruned=true.","required":["id"],"examples":[{"id":"celestia_mainnet_pruned","name":"celestia mainnet pruned","pruned":true,"pruning_mode":"pruned","block":15286339,"snapshot_at":"2026-10-25T19:11:13.000Z","period":"2h","size":"2.6GB","raw_size":"6.4GB","url":"https://cdn.krews.xyz/celestia_mainnet_pruned-2026-10-25-15286339.tar.zst","filename":"celestia_mainnet_pruned-2026-10-25-15286339.tar.zst","app_name":"celestia-appd","version":"v9.0.6","db_backend":"pebbledb","data_path":"/data","indexer_mode":null}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/stats":{"get":{"operationId":"getNetworkStats","summary":"Network summary","tags":["Network"],"description":"Active-set size, bonded tokens, delegators, estimated APR, last full-day average block time, minimum active stake, mean commission and the token price. Refreshed daily (price every minute).","parameters":[{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","description":"Network id."},"active_validators":{"type":"integer","description":"Validators in the active set."},"total_validators":{"type":"integer","description":"All known validators, including unbonded."},"bonded_tokens":{"type":["null","number"],"description":"Bonded stake in display tokens (TIA)."},"delegators":{"type":["null","integer"],"description":"Distinct delegators."},"estimated_apr_pct":{"type":["null","number"],"description":"Estimated staking APR, percent."},"avg_block_time_ms":{"type":["null","number"],"description":"Average block time of the last full day, milliseconds."},"min_stake_tokens":{"type":["null","number"],"description":"Smallest stake in the active set (display units)."},"avg_commission_pct":{"type":["null","number"],"description":"Mean commission of the active set, percent."},"price_usd":{"type":["null","number"],"description":"Staking token price in USD, when tracked."},"updated_at":{"type":["null","string"],"format":"date-time","description":"When the slowest of these figures was last refreshed."}},"additionalProperties":false,"description":"Network summary. Example captured 2026-10-25T18:27:15.470Z from /api/v1/celestia_mainnet/stats.","required":["network","active_validators","total_validators"],"examples":[{"network":"celestia_mainnet","active_validators":97,"total_validators":299,"bonded_tokens":464228098,"delegators":332428,"estimated_apr_pct":6.04,"avg_block_time_ms":2842.15,"min_stake_tokens":11,"avg_commission_pct":22.11,"price_usd":0.537,"updated_at":"2026-10-24T00:00:00.000Z"}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/stats/history":{"get":{"operationId":"getNetworkStatsHistory","summary":"Daily history of a network metric","tags":["Network"],"description":"One value per UTC day for `bonded` (bonded stake in display tokens), `delegators` (distinct delegators) or `block_time` (average milliseconds), oldest first, with the day-over-day change. Defaults to the last 90 days; at most 400 days per request.","parameters":[{"schema":{"type":"string","enum":["bonded","delegators","block_time"],"default":"bonded"},"in":"query","name":"metric","required":false,"description":"Which series to return."},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"},"example":"2026-10-01","in":"query","name":"from","required":false,"description":"First day to include (inclusive)."},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"},"example":"2026-10-01","in":"query","name":"to","required":false,"description":"Last day to include (inclusive); defaults to today."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"metric":"bonded","from":"2026-10-01"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","description":"Network id."},"metric":{"type":"string","description":"Requested metric."},"unit":{"type":"string","description":"Unit of `value`."},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"UTC calendar day, YYYY-MM-DD."},"value":{"type":["null","number"],"description":"Metric value for that day."},"change_pct":{"type":["null","number"],"description":"Change versus the previous day, percent."}},"additionalProperties":false}}},"additionalProperties":false,"description":"Daily history of one network metric. Example captured 2026-10-25T18:27:15.535Z from /api/v1/celestia_mainnet/stats/history?metric=bonded&from=2026-10-01.","required":["network","metric","items"],"examples":[{"network":"celestia_mainnet","metric":"bonded","items":[{"date":"2026-10-01","value":475087611,"change_pct":null},{"date":"2026-10-02","value":473363645,"change_pct":-0.36},{"date":"2026-10-03","value":473486151,"change_pct":0.03},"… 22 more"],"unit":"tokens"}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/validators":{"get":{"operationId":"listValidators","summary":"List validators","tags":["Validators"],"description":"The validator set ranked by stake, active validators first. Filter with `status` or `search`; sort with `sort`; trim fields with `fields`. The set is small (a few hundred), so `count=true` adds `total`. Refreshed every 30 s.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–200)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"string","enum":["active","inactive","jailed","all"],"default":"active"},"in":"query","name":"status","required":false,"description":"Which validators to return."},{"schema":{"type":"string","maxLength":128},"in":"query","name":"search","required":false,"description":"Case-insensitive substring of the moniker, operator or consensus address."},{"schema":{"type":"boolean","default":false},"in":"query","name":"count","required":false,"description":"Add `total` to the response. Accepts true/false or 1/0."},{"schema":{"type":"string","default":"-tokens"},"examples":{"-tokens":{"value":"-tokens"},"rank":{"value":"rank"},"commission_pct":{"value":"commission_pct"},"uptime_pct":{"value":"uptime_pct"},"delegators":{"value":"delegators"},"moniker":{"value":"moniker"}},"in":"query","name":"sort","required":false,"description":"Sort field; prefix with \"-\" for descending. One of: tokens, rank, commission_pct, uptime_pct, delegators, moniker. Default `-tokens`."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."}],"x-example-request":{"network":"celestia_mainnet","params":{},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"operator_address":{"type":"string","description":"Bech32 operator address."},"consensus_address":{"type":["null","string"],"description":"Hex consensus address."},"account_address":{"type":["null","string"],"description":"Bech32 account address."},"moniker":{"type":["null","string"],"description":"Display name."},"identity":{"type":["null","string"],"description":"Keybase identity."},"website":{"type":["null","string"],"description":"Website."},"avatar_url":{"type":["null","string"],"description":"Keybase avatar URL."},"status":{"type":"string","description":"active, inactive, jailed or tombstoned."},"jailed":{"type":"boolean","description":"Currently jailed."},"tombstoned":{"type":"boolean","description":"Permanently removed."},"rank":{"type":["null","integer"],"description":"Position by stake within the active set; null when inactive."},"tokens":{"type":["null","number"],"description":"Bonded stake in display units (TIA)."},"voting_power_pct":{"type":["null","number"],"description":"Share of total voting power, percent."},"commission_pct":{"type":["null","number"],"description":"Commission rate, percent."},"max_commission_pct":{"type":["null","number"],"description":"Maximum commission rate, percent."},"delegators":{"type":["null","integer"],"description":"Number of delegators."},"uptime_pct":{"type":["null","number"],"description":"Signing uptime, percent."},"proposer_signed_pct_10k":{"type":["null","number"],"description":"Share of proposal slots delivered over the last 10,000 blocks, percent."},"proposal_slots_10k":{"type":["null","integer"],"description":"Proposal slots over the last 10,000 blocks."},"updated_at":{"type":["null","string"],"format":"date-time","description":"When the record was last refreshed."}},"additionalProperties":false,"description":"Validator as listed.","required":["operator_address"]}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T18:27:15.803Z from /api/v1/celestia_mainnet/validators?limit=5.","examples":[{"items":[{"operator_address":"celestiavaloper1llfydg9q5fnfuc0lfrwwqnvpywnw97lmvek8jf","consensus_address":"A6AE5A4868BE44FF6BBA721467406E75F641C698","account_address":"celestia1llfydg9q5fnfuc0lfrwwqnvpywnw97lmfx57y0","moniker":"Anchorage Digital","identity":"17D0A114A90FD55F","website":"https://www.anchorage.com/","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/3a23d52c1c4064ee11c2ed5da4abaa05_360_360.jpg","status":"active","jailed":false,"tombstoned":false,"rank":1,"tokens":56486176,"voting_power_pct":12.17,"commission_pct":20,"max_commission_pct":60,"delegators":583,"uptime_pct":100,"proposer_signed_pct_10k":100,"proposal_slots_10k":1217,"updated_at":"2026-10-25T18:26:32.417Z"},{"operator_address":"celestiavaloper1ac4mnwg79gyvd0x5trl2fgjv07lgfas02jf378","consensus_address":"05D2E22C1216CD30104BCDB6B122B1E7F1ACB5CD","account_address":"celestia1ac4mnwg79gyvd0x5trl2fgjv07lgfas00dtggp","moniker":"P-OPS Team","identity":"956048A2293BAB23","website":"https://www.pops.one","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/8aa0cb782e598889029a1d39c6211b05_360_360.jpg","status":"active","jailed":false,"tombstoned":false,"rank":2,"tokens":22783697,"voting_power_pct":4.91,"commission_pct":20,"max_commission_pct":60,"delegators":7131,"uptime_pct":99.96,"proposer_signed_pct_10k":100,"proposal_slots_10k":491,"updated_at":"2026-10-25T18:26:32.417Z"},{"operator_address":"celestiavaloper1r4kqtye4dzacmrwnh6f057p50pdjm8g59tlhhg","consensus_address":"1650146F478A6096E4F980803646FC8EE3C36103","account_address":"celestia1r4kqtye4dzacmrwnh6f057p50pdjm8g5q5awpw","moniker":"P2P.org 💙","identity":"CB5C07F7D6458403","website":"https://p2p.org","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/ba8cc9d0510e9d56164c704a0a48de05_360_360.jpg","status":"active","jailed":false,"tombstoned":false,"rank":3,"tokens":22477350,"voting_power_pct":4.84,"commission_pct":20,"max_commission_pct":60,"delegators":7728,"uptime_pct":100,"proposer_signed_pct_10k":100,"proposal_slots_10k":484,"updated_at":"2026-10-25T18:26:32.415Z"},"… 2 more"],"next_cursor":"eyJvIjo1fQ","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/validators/{operator}":{"get":{"operationId":"getValidator","summary":"Validator detail","tags":["Validators"],"description":"One validator with its profile fields. `include=fibre` embeds the Fibre participation summary (Celestia networks where Fibre is live), `include=proposer_stats` the last-10k-block proposer performance.","parameters":[{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return. Ids are always included."},{"schema":{"type":"string","maxLength":256},"example":"fibre,proposer_stats","in":"query","name":"include","required":false,"description":"Comma-separated expansions to embed: fibre, proposer_stats."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"path","name":"operator","required":true,"description":"Validator id: bech32 operator address (preferred), hex consensus address or account address."}],"x-example-request":{"network":"celestia_mainnet","params":{"operator":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js"},"query":{"include":"proposer_stats"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"operator_address":{"type":"string","description":"Bech32 operator address."},"consensus_address":{"type":["null","string"],"description":"Hex consensus address."},"account_address":{"type":["null","string"],"description":"Bech32 account address."},"moniker":{"type":["null","string"],"description":"Display name."},"identity":{"type":["null","string"],"description":"Keybase identity."},"website":{"type":["null","string"],"description":"Website."},"avatar_url":{"type":["null","string"],"description":"Keybase avatar URL."},"status":{"type":"string","description":"active, inactive, jailed or tombstoned."},"jailed":{"type":"boolean","description":"Currently jailed."},"tombstoned":{"type":"boolean","description":"Permanently removed."},"rank":{"type":["null","integer"],"description":"Position by stake within the active set; null when inactive."},"tokens":{"type":["null","number"],"description":"Bonded stake in display units (TIA)."},"voting_power_pct":{"type":["null","number"],"description":"Share of total voting power, percent."},"commission_pct":{"type":["null","number"],"description":"Commission rate, percent."},"max_commission_pct":{"type":["null","number"],"description":"Maximum commission rate, percent."},"delegators":{"type":["null","integer"],"description":"Number of delegators."},"uptime_pct":{"type":["null","number"],"description":"Signing uptime, percent."},"proposer_signed_pct_10k":{"type":["null","number"],"description":"Share of proposal slots delivered over the last 10,000 blocks, percent."},"proposal_slots_10k":{"type":["null","integer"],"description":"Proposal slots over the last 10,000 blocks."},"updated_at":{"type":["null","string"],"format":"date-time","description":"When the record was last refreshed."},"details":{"type":["null","string"],"description":"Self-description."},"security_contact":{"type":["null","string"],"description":"Security contact."},"self_delegation_tokens":{"type":["null","number"],"description":"Self-delegated stake in display units."},"created_at":{"type":["null","string"],"format":"date-time","description":"When the validator was first indexed."},"unbonding_time":{"type":["null","string"],"format":"date-time","description":"Unbonding completion time when unbonding."},"fibre":{"type":["null","object"],"properties":{"operator_address":{"type":["null","string"],"description":"Bech32 operator address."},"consensus_address":{"type":["null","string"],"description":"Hex consensus address."},"moniker":{"type":["null","string"],"description":"Display name."},"registered":{"type":"boolean","description":"Has registered a Fibre host on chain."},"host":{"type":["null","string"],"description":"Registered host:port."},"reachable":{"type":["null","boolean"],"description":"Last TLS probe succeeded."},"fibre_ready":{"type":["null","boolean"],"description":"gRPC health reported SERVING."},"fibre_ready_status":{"type":["null","string"],"description":"Raw health status."},"probe_latency_ms":{"type":["null","integer"],"description":"Last probe handshake latency."},"probe_region":{"type":["null","string"],"description":"Edge region of the last probe."},"voting_power_pct":{"type":["null","number"],"description":"Share of voting power, percent."},"assigned_rows":{"type":["null","integer"],"description":"Rows assigned per blob."},"storage_budget_bytes":{"type":["null","integer"],"description":"Storage budget in bytes."},"held_bytes":{"type":["null","integer"],"description":"Bytes currently held in retention."},"reachability_24h_pct":{"type":["null","number"],"description":"Share of successful probes over 24 h, percent."},"reachability_7d_pct":{"type":["null","number"],"description":"Share of successful probes over 7 d, percent."},"service_7d":{"type":["null","object"],"properties":{"served":{"type":"integer","description":"Shard checks served correctly."},"checked":{"type":"integer","description":"Shard checks run."},"rate_pct":{"type":["null","number"],"description":"Served share, percent."}},"additionalProperties":false,"description":"Serve checks over 7 d."},"endorsements_7d":{"type":["null","object"],"properties":{"signed":{"type":"integer","description":"Blobs signed."},"assigned":{"type":"integer","description":"Blobs the validator was assigned rows on."},"rate_pct":{"type":["null","number"],"description":"Signed share, percent."}},"additionalProperties":false,"description":"Blob signatures over 7 d."},"last_reachable_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"last_served_at":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."},"location":{"description":"Geolocation of the host or null."}},"additionalProperties":false,"description":"Fibre participation summary."},"proposer_stats":{"type":["null","object"],"properties":{"operator_address":{"type":"string","description":"Bech32 operator address."},"moniker":{"type":["null","string"],"description":"Display name."},"hex_proposer":{"type":["null","string"],"description":"Hex consensus address used as proposer id."},"window":{"type":"object","properties":{"min_height":{"type":"integer","description":"First height of the window."},"max_height":{"type":"integer","description":"Last height of the window."},"block_count":{"type":"integer","description":"Blocks in the window."},"scope":{"type":"string","description":"last_10k or all."}},"additionalProperties":false},"stats":{"type":"object","properties":{"signed_proposals":{"type":"integer","description":"Delivered proposals."},"missed_proposals":{"type":"integer","description":"Missed proposal rounds."},"total_proposals":{"type":"integer","description":"Slots."},"signed_pct":{"type":"number","description":"Delivered share, percent; -1 when no slots."},"missed_pct":{"type":"number","description":"Missed share, percent; -1 when no slots."}},"additionalProperties":false},"recent":{"type":"object","properties":{"last_proposed_block":{"type":["null","object"],"properties":{"height":{"type":"integer","description":"Height."},"time":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."}},"additionalProperties":false},"last_missed_block":{"type":["null","object"],"properties":{"height":{"type":"integer","description":"Height."},"round":{"type":["null","integer"],"description":"Round."},"timestamp":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"Proposer performance."}},"additionalProperties":false,"description":"Validator detail; `fibre` and `proposer_stats` appear with `include=`. Example captured 2026-10-25T18:27:16.054Z from /api/v1/celestia_mainnet/validators/celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js?include=proposer_stats.","required":["operator_address"],"examples":[{"operator_address":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","consensus_address":"D9A12172F21B21626DEE96B258F49561C8C1C982","account_address":"celestia1903nlmjss20garjvtjgm78v0peauc7xg23h7yk","moniker":"DTEAM","identity":"B71B958218E3F7BA","website":"https://dteam.tech/","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/481bd3cdaad3e5384034de4e54cee105_360_360.jpg","status":"active","jailed":false,"tombstoned":false,"rank":45,"tokens":3516802,"voting_power_pct":0.76,"commission_pct":20,"max_commission_pct":60,"delegators":21,"uptime_pct":99.8,"proposer_signed_pct_10k":100,"proposal_slots_10k":76,"updated_at":"2026-10-25T18:26:32.415Z","details":"DTEAM provides reliable infrastructure to support and scale projects effectively, along with building essential tools tailored for project communities, node ope…","security_contact":"contact@dteam.tech","self_delegation_tokens":1,"created_at":"2025-12-24T04:45:54.634Z","unbonding_time":"1970-01-01T00:00:00Z","proposer_stats":{"operator_address":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","moniker":"DTEAM","hex_proposer":"D9A12172F21B21626DEE96B258F49561C8C1C982","window":{"min_height":15276704,"max_height":15286703,"block_count":10000,"scope":"last_10k"},"stats":{"signed_proposals":76,"missed_proposals":0,"total_proposals":76,"signed_pct":100,"missed_pct":0},"recent":{"last_proposed_block":{"height":15286632,"time":"2026-10-25T18:23:49.101584829Z"},"last_missed_block":null}}}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/validators/{operator}/signatures":{"get":{"operationId":"listValidatorSignatures","summary":"Recent block signatures","tags":["Validators"],"description":"Per-block signing status of one validator over the most recent blocks still in the live window (about the last few thousand), oldest first. `max_height` pages backwards; `status` keeps only one outcome (e.g. `missed`).","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"in":"query","name":"limit","required":false,"description":"Number of most recent blocks (1–500)."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"max_height","required":false,"description":"Only blocks at or below this height."},{"schema":{"type":"string","enum":["signed","precommit_only","missed","unknown"]},"in":"query","name":"status","required":false,"description":"Only blocks with this signing status."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"path","name":"operator","required":true,"description":"Validator id: bech32 operator address (preferred), hex consensus address or account address."}],"x-example-request":{"network":"celestia_mainnet","params":{"operator":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js"},"query":{"limit":"10"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"operator_address":{"type":"string","description":"Bech32 operator address."},"consensus_address":{"type":"string","description":"Hex consensus address."},"items":{"type":"array","items":{"type":"object","properties":{"height":{"type":"integer","description":"Block height."},"proposer":{"type":["null","string"],"description":"Hex consensus address of the block proposer."},"status":{"type":"string","description":"signed, precommit_only, missed or unknown (not in the validator set)."}},"additionalProperties":false}}},"additionalProperties":false,"description":"Example captured 2026-10-25T18:27:16.183Z from /api/v1/celestia_mainnet/validators/celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js/signatures?limit=10.","examples":[{"operator_address":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","consensus_address":"D9A12172F21B21626DEE96B258F49561C8C1C982","items":[{"height":15286693,"proposer":"8AC8EE7942D79BAC27B5B38CEDD2404C5E0D8BBD","status":"signed"},{"height":15286694,"proposer":"63A624445A71A5E18730854CE5BE1D9C93DCAD6E","status":"signed"},{"height":15286695,"proposer":"A6AE5A4868BE44FF6BBA721467406E75F641C698","status":"signed"},"… 7 more"]}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/validators/{operator}/missed-proposals":{"get":{"operationId":"listValidatorMissedProposals","summary":"Missed proposals of a validator","tags":["Validators"],"description":"Proposal slots this validator did not deliver, newest first. Filter by height or time range.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"in":"query","name":"limit","required":false,"description":"Page size (1–500)."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from a previous response's `next_cursor`."},{"schema":{"type":"string","maxLength":512},"in":"query","name":"fields","required":false,"description":"Comma-separated top-level fields to return (sparse fieldset). Ids are always included."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"min_height","required":false,"description":"Only rounds at or above this height."},{"schema":{"type":"integer","minimum":0},"in":"query","name":"max_height","required":false,"description":"Only rounds at or below this height."},{"schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00Z","in":"query","name":"from","required":false,"description":"Only rounds at or after this time."},{"schema":{"type":"string","format":"date-time"},"example":"2026-10-01T00:00:00Z","in":"query","name":"to","required":false,"description":"Only rounds at or before this time."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"path","name":"operator","required":true,"description":"Validator id: bech32 operator address (preferred), hex consensus address or account address."}],"x-example-request":{"network":"celestia_mainnet","params":{"operator":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js"},"query":{"limit":"5"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"height":{"type":"integer","description":"Height of the missed round."},"round":{"type":["null","integer"],"description":"Consensus round."},"timestamp":{"type":["null","string"],"format":"date-time","description":"Block time of the height that was eventually produced."},"proposer":{"type":"object","properties":{"operator_address":{"type":"string","description":"Bech32 operator address."},"consensus_address":{"type":["null","string"],"description":"Hex consensus address."},"moniker":{"type":["null","string"],"description":"Display name."},"avatar_url":{"type":["null","string"],"description":"Keybase avatar URL."}},"additionalProperties":false,"description":"Minimal validator identity."}},"additionalProperties":false,"description":"A proposal slot the validator did not deliver."}},"next_cursor":{"type":["null","string"],"description":"Pass as `cursor` to fetch the next page; null at the end."},"limit":{"type":"integer","description":"Page size that was applied."},"total":{"type":["null","integer"],"description":"Total matching items; present only with `count=true` on routes that support it."}},"additionalProperties":false,"required":["items","next_cursor","limit"],"description":"Example captured 2026-10-25T18:27:16.313Z from /api/v1/celestia_mainnet/validators/celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js/missed-proposals?limit=5.","examples":[{"items":[{"height":15260232,"round":0,"timestamp":"2026-10-24T21:32:07.481Z","proposer":{"operator_address":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","consensus_address":"D9A12172F21B21626DEE96B258F49561C8C1C982","moniker":"DTEAM","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/481bd3cdaad3e5384034de4e54cee105_360_360.jpg"}},{"height":15183983,"round":0,"timestamp":"2026-10-22T09:15:13.924Z","proposer":{"operator_address":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","consensus_address":"D9A12172F21B21626DEE96B258F49561C8C1C982","moniker":"DTEAM","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/481bd3cdaad3e5384034de4e54cee105_360_360.jpg"}},{"height":14846023,"round":0,"timestamp":"2026-10-11T04:00:40.563Z","proposer":{"operator_address":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","consensus_address":"D9A12172F21B21626DEE96B258F49561C8C1C982","moniker":"DTEAM","avatar_url":"https://s3.amazonaws.com/keybase_processed_uploads/481bd3cdaad3e5384034de4e54cee105_360_360.jpg"}},"… 2 more"],"next_cursor":"eyJrIjoxNDMwMzk3OCwiaSI6IjZhYjM0ZWRlN2MwODA2NTlhMTY0YTljMCJ9","limit":5}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/validators/{operator}/proposer-stats":{"get":{"operationId":"getValidatorProposerStats","summary":"Proposer performance","tags":["Validators"],"description":"Delivered versus missed proposal slots. `scope=last_10k` (default) covers the rolling last 10,000 blocks; `scope=all` the whole indexed history.","parameters":[{"schema":{"type":"string","enum":["last_10k","all"],"default":"last_10k"},"in":"query","name":"scope","required":false,"description":"Window to evaluate."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"path","name":"operator","required":true,"description":"Validator id: bech32 operator address (preferred), hex consensus address or account address."}],"x-example-request":{"network":"celestia_mainnet","params":{"operator":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js"},"query":{}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":["null","object"],"properties":{"operator_address":{"type":"string","description":"Bech32 operator address."},"moniker":{"type":["null","string"],"description":"Display name."},"hex_proposer":{"type":["null","string"],"description":"Hex consensus address used as proposer id."},"window":{"type":"object","properties":{"min_height":{"type":"integer","description":"First height of the window."},"max_height":{"type":"integer","description":"Last height of the window."},"block_count":{"type":"integer","description":"Blocks in the window."},"scope":{"type":"string","description":"last_10k or all."}},"additionalProperties":false},"stats":{"type":"object","properties":{"signed_proposals":{"type":"integer","description":"Delivered proposals."},"missed_proposals":{"type":"integer","description":"Missed proposal rounds."},"total_proposals":{"type":"integer","description":"Slots."},"signed_pct":{"type":"number","description":"Delivered share, percent; -1 when no slots."},"missed_pct":{"type":"number","description":"Missed share, percent; -1 when no slots."}},"additionalProperties":false},"recent":{"type":"object","properties":{"last_proposed_block":{"type":["null","object"],"properties":{"height":{"type":"integer","description":"Height."},"time":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."}},"additionalProperties":false},"last_missed_block":{"type":["null","object"],"properties":{"height":{"type":"integer","description":"Height."},"round":{"type":["null","integer"],"description":"Round."},"timestamp":{"type":["null","string"],"format":"date-time","description":"ISO-8601 UTC timestamp."}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"Proposer performance. Example captured 2026-10-25T18:27:16.571Z from /api/v1/celestia_mainnet/validators/celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js/proposer-stats.","examples":[{"operator_address":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","moniker":"DTEAM","hex_proposer":"D9A12172F21B21626DEE96B258F49561C8C1C982","window":{"min_height":15276704,"max_height":15286703,"block_count":10000,"scope":"last_10k"},"stats":{"signed_proposals":76,"missed_proposals":0,"total_proposals":76,"signed_pct":100,"missed_pct":0},"recent":{"last_proposed_block":{"height":15286632,"time":"2026-10-25T18:23:49.101584829Z"},"last_missed_block":null}}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/{network}/validators/{operator}/history":{"get":{"operationId":"getValidatorHistory","summary":"Daily history of a validator metric","tags":["Validators"],"description":"One value per UTC day for `delegations` (total delegated stake, display units) or `delegators` (distinct delegators), oldest first, with the day-over-day change. Defaults to the last 90 days; at most 400 days per request.","parameters":[{"schema":{"type":"string","enum":["delegations","delegators"],"default":"delegations"},"in":"query","name":"metric","required":false,"description":"Which series to return."},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"},"example":"2026-10-01","in":"query","name":"from","required":false,"description":"First day to include (inclusive)."},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"},"example":"2026-10-01","in":"query","name":"to","required":false,"description":"Last day to include (inclusive); defaults to today."},{"schema":{"type":"string","enum":["celestia_mainnet","celestia_mocha_5"]},"in":"path","name":"network","required":true,"description":"Network id, one of the ids returned by GET /api/v1/networks."},{"schema":{"type":"string","maxLength":90,"minLength":10},"example":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","in":"path","name":"operator","required":true,"description":"Validator id: bech32 operator address (preferred), hex consensus address or account address."}],"x-example-request":{"network":"celestia_mainnet","params":{"operator":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js"},"query":{"metric":"delegators","from":"2026-10-01"}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"operator_address":{"type":"string","description":"Bech32 operator address."},"metric":{"type":"string","description":"Requested metric."},"unit":{"type":"string","description":"Unit of `value`."},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"UTC calendar day, YYYY-MM-DD."},"value":{"type":["null","number"],"description":"Metric value for that day."},"change_pct":{"type":["null","number"],"description":"Change versus the previous day, percent."}},"additionalProperties":false}}},"additionalProperties":false,"description":"Example captured 2026-10-25T18:27:16.705Z from /api/v1/celestia_mainnet/validators/celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js/history?metric=delegators&from=2026-10-01.","examples":[{"operator_address":"celestiavaloper1903nlmjss20garjvtjgm78v0peauc7xg0w48js","metric":"delegators","unit":"count","items":[{"date":"2026-10-01","value":20,"change_pct":null},{"date":"2026-10-02","value":20,"change_pct":0},{"date":"2026-10-03","value":20,"change_pct":0},"… 22 more"]}]}}}},"400":{"description":"Invalid parameters (`validation_error`) or an unusable combination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Unknown network or no matching record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; honour `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"servers":[{"url":"https://celestia-dashboard-api.krews.xyz","description":"Production"}],"tags":[{"name":"Meta","description":"API index, network catalogue and the OpenAPI document."},{"name":"Network","description":"Network-wide figures: bonded stake, delegators, block time, APR, price."},{"name":"Validators","description":"Validator set, profiles, signatures, missed proposals and proposer performance."},{"name":"Blocks","description":"Latest blocks, block lookups and daily block-time averages."},{"name":"Missed Proposals","description":"Rounds where the scheduled proposer did not deliver a block, plus rankings."},{"name":"Network Nodes","description":"Crawled consensus nodes with geolocation."},{"name":"Bridge Nodes","description":"Celestia bridge-node telemetry and block times."},{"name":"Fibre","description":"Celestia Fibre data-availability protocol: validators, blobs, probes."},{"name":"Snapshots","description":"Node snapshot catalogue served by Krews."}],"externalDocs":{"description":"Interactive reference","url":"https://celestia-dashboard-api.krews.xyz"}}