Explorer API
Pool summaries and public share reads
Pool totals, or one miner at a time
The explorer publishes what a miner opted to publish, including their wallet address. No endpoint or feed enumerates the pool's miners or reveals who mines here. The pool summary contains combined figures only.
The three reads
Looking up one miner by wallet address is served by the Melanin gateway, not by this explorer. No key, no account, one address at a time.
| Method | Path | |||
|---|---|---|---|---|
| GET | /api/pool-stats?project=btcThis explorer · A publicly listed project (optional) · 404 when unavailable | This explorer | A publicly listed project (optional) | 404 when unavailable |
| GET | /api/public-shares/{shareId}This explorer · An opaque share id · 404 when unpublished | This explorer | An opaque share id | 404 when unpublished |
| GET | melanin.engineering/api/v1/miner/<address>The Melanin gateway · One wallet address, no key · 404 | The Melanin gateway | One wallet address, no key | 404 |
Try a read
These responses were captured from isolated acceptance tests with synthetic data. Replace the example share id or address with one you already know; the examples do not identify a current miner and may return 404 on the live service. Pool summaries can be up to 60 seconds behind the latest stored report. The observation time says when the source reported, not when you requested it.
Pool summary
curl -i 'https://explorer.melanin.global/api/pool-stats?project=btc'200 response from an isolated test
{
"projectId": "btc",
"observedAt": "2026-09-06T12:00:00.000Z",
"collectionComplete": true,
"metrics": {
"users": 3,
"workers": 4,
"hashrate1h": "5000000000000",
"hashrate1d": "4900000000000",
"hashrate7d": "4000000000000",
"networkDifficulty": 123456789,
"acceptedShares": "12",
"rejectedShares": "0",
"bestShare": "1234"
}
}404 response
{
"error": "not_found"
}Public share
curl -i 'https://explorer.melanin.global/api/public-shares/share_0000000000000000000000'200 response from an isolated test
{
"shareId": "share_0000000000000000000000",
"projectId": "btc",
"walletAddress": null,
"observedAt": "2026-09-06T12:00:00.000Z",
"metrics": {
"hashrate1h": "5000000000000",
"hashrate1d": "4900000000000",
"hashrate7d": "4000000000000",
"workerCount": 2,
"shares": "12",
"bestShare": "1234",
"bestEver": "1234",
"lastShareAt": "2026-09-06T11:59:00.000Z"
}
}404 response
{
"error": "not_found"
}One address at the gateway
curl -i 'https://melanin.engineering/api/v1/miner/bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq'200 response from an isolated test
{
"ok": true,
"address": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
"projectId": "btc",
"observedAt": "2025-09-02T08:00:00Z",
"metrics": {
"hashrate1m": 5000000000000,
"hashrate5m": 4900000000000,
"hashrate1h": 0,
"hashrate1d": 0,
"hashrate7d": 0,
"shares": 12,
"bestShare": 1234,
"bestEver": 1234,
"lastShareAt": "2025-09-02T07:59:50Z"
}
}404 response
{
"ok": false,
"error": "not_found"
}Rules every read obeys
Poll at most once per minute and back off on errors. The explorer currently has no per-client request quota; the gateway limits public reads to 60 requests per ten minutes for each client and route bucket. Respect Retry-After when a service returns 429 or 503.
Public share pages, API responses and generated preview images are not cached by this application. Withdrawing consent prevents subsequent reads here; a third-party site may retain a copy it fetched while sharing was enabled. A null collectionComplete value means an older pool report did not record whether every configured lane was included.
- A miss
- For a public share, unknown, unpublished and withdrawn return the same
404body. A pool-summary 404 also covers an unlisted project or the absence of a saved report. - Lists
- The leaderboard pages rank only shares whose owners opted in, and carry share ids only. The wallet address appears solely on a share's own page.
- Writes
- There is no public write API: sharing is turned on and off from the Melanin dashboard, and the explorer exposes no account records and no profile-management actions.
- Retired routes
/api/users,/api/users/togglePrivacyand/api/resetUserreturn410 Gone. The old address URLs under/users/…are not served.