Endpoints by Coin
SoloFury serves identical APIs across 5 SHA-256 coins. The base path differs by coin — BCH uses /api for historical reasons; the others use /api-{coin}.
| Coin | Base path | Stratum ports |
|---|---|---|
| BTC | /api-btc | 6060, 6061, 6062 |
| BCH | /api | 7070, 7071, 7072 |
| BC2 | /api-bc2 | 8080, 8081, 8082 |
| BCH2 | /api-bch2 | 8585, 8586, 8587 |
| XEC | /api-xec | 9090, 9091, 9092 |
Pool Stats
/api/pool Pool-wide statistics: total hashrate (rolling 1m/1h/1d/7d), connected miners, blocks found, current block height, network difficulty/hashrate, fee.
{
"totalHashRate": 2780000000000000, // H/s · current
"totalHashRate1m": 2810000000000000,
"totalHashRate1hr": 2750000000000000,
"totalHashRate1d": 2640000000000000,
"totalHashRate7d": 2420000000000000,
"blockHeight": 948592,
"networkDifficulty": 763004012345.6,
"networkHashRate": 5060000000000000000,
"totalMiners": 10,
"blocksFound": […], // array of past block events
"fee": 1 // percent
} Pool Info
/api/info Pool runtime info: best share so far, accepted/rejected/stale/invalid shares, efficiency, uptime, stratum port, pool identifier.
{
"poolIdentifier": "BCH-Solo",
"fee": 1,
"stratumPort": 7070,
"uptime": 8643215, // seconds
"accepted": 142357821,
"rejected": 12483,
"stale": 8421,
"invalid": 3,
"efficiency": "99.99",
"highScores": [{ "bestDifficulty": 2613000000000, "bestDifficultyUserAgent": "Antminer" }]
} Pool Chart
/api/info/chart Time-series of pool hashrate, accepted/rejected/stale/invalid counters, network difficulty. Used by the dashboard chart. Default 24h, max ~7 days.
| Query | Type | Default | Description |
|---|---|---|---|
hours | integer | 24 | Window size in hours (5-min granularity) |
[
{
"label": "01:25",
"data": 2540000000000000, // hashrate · H/s
"difficulty": 763004012345.6,
"accepted": 142357821,
"rejected": 12483,
"stale": 8421,
"invalid": 3
},
… // 288 points for 24h window
] Network Info
/api/network Live blockchain network data fetched directly from the underlying node — block height, difficulty, hashrate, mempool size, chain identifier.
{
"blocks": 948592,
"difficulty": 763004012345.6,
"networkhashps": 5060000000000000000, // H/s
"currentblockweight": 3998000,
"currentblocktx": 2841,
"pooledtx": 3142,
"chain": "main",
"warnings": ""
} Network History
/api/network/history Time-series of network difficulty and hashrate. Default 24h, maximum 168h (7 days).
| Query | Type | Default | Description |
|---|---|---|---|
hours | integer | 168 | Window size in hours (max 168) |
Client / Miner Info
/api/client/{wallet_address} Per-address miner data: connected workers, hashrate per worker, share counts, best difficulty achieved, last-seen timestamp.
| Path | Type | Description |
|---|---|---|
address | string | Miner wallet address (BTC/BCH/BC2/BCH2/XEC native format) |
{
"bestDifficulty": 2613000000000,
"sessionId": "a1b2c3d4...",
"workers": [
{
"name": "S21Plus01",
"hashRate": 276000000000000, // H/s
"protocol": "SV2", // "SV1" | "SV2"
"availableIn": "sv2", // "sv2" | "ckpool"
"channelCount": 1, // SV2 only
"currentDiff": 2048,
"region": "eu",
"regionSourceName": "Frankfurt SV2",
"bestDifficulty": 59870000000,
"sessionId": "abc...",
"lastSeen": "2026-05-08T00:42:00.000Z",
"startTime": "2026-04-28T13:55:00.000Z"
},
…
]
} Client Chart
/api/client/{wallet_address}/chart Per-miner time-series: hashrate, accepted/rejected/stale/invalid shares, difficulty. Same shape as /api/info/chart but scoped to a single address.
| Path / Query | Type | Default | Description |
|---|---|---|---|
address | string | — | Miner wallet address |
hours | integer | 24 | Window size in hours |
Per-miner history is recorded from the address's first connection, so longer time windows fill in gradually as data accumulates.
Stratum Connection
Connect your ASIC miner to SoloFury via Stratum V1 or V2. 9 regions worldwide for low-latency global routing.
// Host = [region]-[coin].solofury.com (Atlanta has no region prefix)
// Regions: (none)=Atlanta · eu-=Frankfurt · jp-=Tokyo · asia-=Singapore
// lat-=Sao Paulo · pnw-=Seattle · me-=Tel Aviv · afr-=Johannesburg · uk-=London
// Coins: bch · btc · bc2 · bch2 · xec
// Ports: BTC 6060-6062 · BCH 7070-7072 · BC2 8080-8082 · BCH2 8585-8587 · XEC 9090-9092
// Examples (3 ports per coin = failover)
stratum+tcp://btc.solofury.com:6060 // BTC · Atlanta
stratum+tcp://eu-bch.solofury.com:7070 // BCH · Frankfurt
stratum+tcp://jp-xec.solofury.com:9090 // XEC · Tokyo
stratum+tcp://asia-btc.solofury.com:6060 // BTC · Singapore
stratum+tcp://uk-bc2.solofury.com:8080 // BC2 · London
// Worker format
Username: YOUR_WALLET_ADDRESS.WORKER_NAME
Password: x
// ── Stratum V2 (BTC only) ─────────────────────────────────────────
// Same hosts. V1 and V2 share the same ports: the pool detects the
// protocol your miner speaks and answers accordingly.
// Ports: 3333 (standard) · 3343 (high-difficulty, S21/S23 class)
stratum2+tcp://eu-btc.solofury.com:3333 // AxeOS / NerdQAxe
stratum2+tcp://eu-btc.solofury.com:3333/9cLif4sCxvAz7FBP7GPvYG8Mv586ZhdgNbn3f4PsrM56gboSZEp
// Braiins OS+ wants the key in the URL path
// Authority public key (verifies you are talking to SoloFury)
9cLif4sCxvAz7FBP7GPvYG8Mv586ZhdgNbn3f4PsrM56gboSZEp Rate Limits & Notes
/api-btc/, /api-bc2/, /api-bch2/ or /api-xec/ — the bare /api/ path serves BCH. Querying /api/client/:address with a BTC address returns an empty worker list, not an error.protocol field: "SV1" or "SV2". Stratum V2 workers also expose channelCount and availableIn: "sv2".luck is personal, not pool-round: it resets on your own blocks only. Values above 100% are legitimate solo-mining variance, not an error.Examples
# All 5 coin pools
curl -s https://solofury.com/api-btc/pool | jq .
curl -s https://solofury.com/api/pool | jq . # BCH (no suffix)
curl -s https://solofury.com/api-bc2/pool | jq .
curl -s https://solofury.com/api-bch2/pool | jq .
curl -s https://solofury.com/api-xec/pool | jq .
# Network info
curl -s https://solofury.com/api/network
# Per-miner stats
curl -s https://solofury.com/api/client/YOUR_WALLET_ADDRESS
# Time-series chart (24h, 5-min granularity)
curl -s "https://solofury.com/api/info/chart?hours=24"// Browser or Node.js (with fetch polyfill)
const coins = ['-btc', '', '-bc2', '-bch2', '-xec'];
const stats = await Promise.all(
coins.map(c => fetch(`https://solofury.com/api${c}/pool`).then(r => r.json()))
);
for (const [i, p] of stats.entries()) {
const coin = ['BTC', 'BCH', 'BC2', 'BCH2', 'XEC'][i];
console.log(`${coin}: ${(p.totalHashRate/1e12).toFixed(1)} TH/s · ${p.totalMiners} miners · ${p.fee}% fee`);
}import requests
def pool_stats(coin=''):
suffix = '' if coin == 'bch' else f'-{coin}'
r = requests.get(f'https://solofury.com/api{suffix}/pool', timeout=5)
return r.json()
for coin in ['btc', 'bch', 'bc2', 'bch2', 'xec']:
s = pool_stats(coin)
th = s['totalHashRate'] / 1e12
print(f'{coin.upper():<5} {th:.1f} TH/s · {s["totalMiners"]} miners · fee {s["fee"]}%')Integrations
SoloFury's API follows industry conventions and is compatible with standard mining tooling.