Skip to content
IceRootDocs

Explorer API

The explorer API is a read-only Rust/Axum service. Its current dataset is a deterministic sample ledger; successful responses identify it with meta.mode: "demo". It does not sign or broadcast transactions.

Try a request in the API playground →

From the explorer repository:

Terminal window
cargo run --locked --manifest-path backend/Cargo.toml

The default origin is http://127.0.0.1:3188. The API allows browser requests from the local docs origins. For a hosted docs site, set ICEROOT_API_CORS_ORIGINS to its exact origin; the explorer README describes the configuration. The Next.js frontend proxies only /api/v1/snapshot.

Terminal window
curl --fail 'http://127.0.0.1:3188/api/v1/validators?status=active&limit=10'
PathReturns
/healthzProcess health and chain-connection status
/api/v1/statusMode, recorded height range, and counts
/api/v1/snapshotComplete explorer data and configuration
/api/v1/blocksBlocks, newest first
/api/v1/transactionsRecorded transactions
/api/v1/validatorsValidators in rank order
/api/v1/assetsDistinct assets
/api/v1/accountsRecorded accounts
/api/v1/migrationsMigration records
/api/v1/routesSample migration routes
/api/v1/search?q=...Search across resource collections

Each collection also has a detail route: append its identifier, for example /api/v1/blocks/20416. Encode identifiers when constructing URLs.

Lists support q, limit, and offset. The default page is limit=25&offset=0; limits range from 1 to 100. Offsets range from 0 to 1,000,000.

CollectionAdditional filters
Blocksvalidator
Transactionsasset, account, validator, type, block
Validatorsstatus=active|standby|resigned
Assetsorigin=created|migrated
Migrationsasset, account, direction=in|out, route, state=0..3

Unknown parameters and invalid filter values return 400. Search requires a nonempty q, limited to 256 UTF-8 bytes.

{
"data": [],
"pagination": {
"limit": 25,
"offset": 0,
"total": 0,
"hasMore": false
},
"meta": {
"mode": "demo",
"source": "bundled-fixtures",
"updatedAt": null
}
}

The response envelope depends on the endpoint:

  • List: data, pagination, and meta.
  • Single record: data and meta.
  • Snapshot: data, config, and meta.
  • Health: a small top-level object.

Amounts are decimal strings. Preserve their precision instead of converting them to JavaScript floating-point numbers. A null updatedAt is not a freshness timestamp.

StatusMeaning
400Invalid query parameter or filter
404No matching record
405Unsupported HTTP method

Errors contain error.code, error.message, and meta.mode.

Handle API failure explicitly. Never turn a failed request into a zero balance or silently replace it with client-side fixtures.