# List your mining pool on MiningBoard

> Listing is free. There is no listing fee, no paid placement, and no ranking that can be bought.
> Publish your pool's stats in the JSON format below and we scrape them every 5 minutes — your live
> hashrate, miner count and blocks appear on your coin's page automatically.

- **Submit at:** https://miningboard.com/en/pools/submit
- **JSON Schema:** https://miningboard.com/en/pools/spec/v1
- **Spec version:** `miningboard-pool-v1`
- **Poll interval:** every 5 minutes

## How it works

1. **** — 
2. **** — 
3. **** — 

## Two ways to be listed

An API is not a requirement. Most pools in our directory have no public stats endpoint at all — we list them from catalog data and attribute their hashrate from aggregate sources. Publishing an endpoint simply makes your numbers first-party, live, and accurate.

| Track | | |
|---|---|---|
| **Full listing — you publish an endpoint** | Recommended | We read your numbers directly from you, every five minutes. Your pool shows live hashrate, miner count, blocks in the last 24h and last block found, plus a reliability score based on how consistently your endpoint responds. |
| **Directory listing** | No API needed | Name, homepage, fee, payout scheme, supported coins and logo. Your pool appears in the directory and on the coin pages you mine, with hashrate attributed from aggregate sources rather than from you. |

## The endpoint spec

One public GET endpoint per coin, returning application/json. Every field maps directly onto something we store, so there is nothing here that we ask for and then ignore.

```json
{
  "spec": "miningboard-pool-v1",
  "coin": "ZEC",
  "algorithm": "Equihash",
  "updated_at": "2026-08-24T16:29:33Z",
  "pool": {
    "hashrate": 1.23e15,
    "miners": 412,
    "workers": 980,
    "blocks_24h": 7,
    "last_block_at": "2026-08-24T16:10:33Z",
    "fee_percent": 1.5,
    "payout_scheme": "PPS+",
    "min_payout": 0.001
  },
  "network": {
    "hashrate": 8.9e15,
    "difficulty": 120000000,
    "height": 2900123,
    "block_reward": 1.5625,
    "block_time": 75
  },
  "stratum": [
    { "url": "stratum+tcp://zec.example.com:3333", "region": "eu", "tls": false }
  ]
}
```

### Field reference

| Field | Required | Notes |
|---|---|---|
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |
| `` | Optional |  |

### Optional: an index endpoint

If you publish a list of the coins you support and where their stats live, adding a coin later needs no new submission — we pick it up from the index.

```json
{
  "spec": "miningboard-pool-index-v1",
  "pool": { "name": "Example Pool", "homepage": "https://example.com", "fee_percent": 1.5 },
  "coins": [
    { "coin": "ZEC", "stats_url": "https://api.example.com/v1/pool/zec" },
    { "coin": "BTC", "stats_url": "https://api.example.com/v1/pool/btc" }
  ]
}
```

## Rules your endpoint must follow

These are not preferences. Each one is a constraint our pipeline actually enforces, and an endpoint that breaks one cannot be listed as a live source.

1. **** — 
2. **** — 
3. **** — 
4. **** — 
5. **** — 
6. **** — 

## Validate before you submit

`POST https://miningboard.com/en/pools/submit/validate` with `{"url": "https://api.example.com/v1/pool/zec"}` returns a
field-by-field conformance report:

```json
{
  "ok": true,
  "url": "https://api.example.com/v1/pool/zec",
  "checks": [
    { "field": "pool.hashrate", "status": "pass", "detail": "1.23 PH/s (1230000000000000 H/s)" },
    { "field": "network.hashrate.cross_check", "status": "pass", "detail": "Within 10x of our ZEC consensus." }
  ]
}
```

`status` is one of `pass`, `warn`, `fail`, `info`. `ok` is true when nothing failed. The same check
runs server-side when you submit, so the report you see is the report our team sees.

The most valuable check is `network.hashrate.cross_check`: we compare your self-reported network
hashrate against our own multi-source chain consensus. Unit errors — publishing TH/s where the spec
says raw H/s — are the most common mistake and this catches them immediately.

## After you submit

- **** — 
- **** — 
- **** — 
- **** — 
