API HonestPool
Публичный JSON API без ключей. База: https://honestpool.ru/api/v2
Содержание
Авторизация не нужна
Только throttle + бан по IP
JSON, Cache-Control: no-store
Введение
API v2 — публичный JSON-интерфейс HonestPool. Ключи не нужны, все запросы проходят через throttle и проверку бана по IP.
Base URL
https://honestpool.ru/api/v2
Формат
JSON
Кэш
no-store
Авторизация
Не требуется
Эндпоинты
| GET | /api/v2/getRange |
Получить область на проверку |
| POST | /api/v2/setRange |
Подтвердить область |
GET
/api/v2/getRange
Получить область на проверку. random — только свободную. numberRange=N — конкретную, если не пройдена.
Параметры
| Параметр | Тип | Обяз. | По умолч. | Описание |
|---|---|---|---|---|
idPuzzle |
integer | да | — | Номер пазла (70 — тестовый) |
numberRange |
string | нет | random |
Номер области или random |
Пример запроса
GET
https://honestpool.ru/api/v2/getRange?idPuzzle=71 https://honestpool.ru/api/v2/getRange?idPuzzle=71&numberRange=838640
Пример ответа
200 OK · application/json
{
"ok": true,
"idPuzzle": 71,
"targetAddress": "1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU",
"startRangeHex": "40ccbef00000000000",
"endRangeHex": "40ccbf000000000000",
"numberRange": 838640,
"bits": 44,
"proofAddresses": [
"15ZFxTfWZD8k855RUzPmshHHxVj4ErrH4s",
"13xxGjoyPoWgCRRBWsMZVQoW8TMq2GjWo6",
"19bLF3s55frjneyhuuXeprhqjaow1moESj",
"14RDhNecss1CQMD3wQ3dJmCKX48QFWwetS",
"17WLn2GAiAQWtzhJc7kobWeF1DL2WBKMWK"
]
}
POST
/api/v2/setRange
Подтвердить проверку области. Требуется заголовок X-Payout-Address — конфиденциально, только в заголовке.
Адрес для выплат не показывается публично. В UI виден только его
sha256 — идентификатор проверяющего.Заголовки
X-Payout-Address: bc1qdn2wng73y80phr7kul5aa24n850f5c82zwq27h
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
idPuzzle |
integer | да | Номер пазла |
numberRange |
integer | да | Номер области |
checkProofAddresses |
json | да | JSON-объект { "адрес": "ключ", ... } — все 5 штук |
comment |
string | нет | Комментарий (до 1000 символов) |
Пример запроса
POST · form-data
idPuzzle=71
numberRange=1
checkProofAddresses={"1AD4QW5Q6gibLdjwGyBDyyJrY54cvKQxGP":"405864A632D8FE0326","1GspY6uX82kPCVeWQSTqTCKxu49f3EWf7x":"405864A635033E0461","1HiodgLdFnuEANN61EEZRb7MCn6KSsRvxG":"405864A636719CC264","1L1hBgmfEWrkpGczia2itvMYFN8cwb6Uuz":"405864A63AE54145CD","1H3T5xWX3gNZ4ZPB7fgecvAsy2hFqk6G8C":"405864A63D52D0422A"}
comment=pool comment
Пример ответа
200 OK · application/json
{
"ok": true,
"text": "You have successfully completed the range 1 in 71 puzzles",
"payoutHash": "3b0c0c5e...sha256 of your payout address..."
}
Ошибки
Все ошибки — {"ok": false, "text": "..."}.
| HTTP | Значение |
|---|---|
| 404 | Пазл или область не найдены |
| 409 | Область уже подтверждена |
| 410 | Поиск по пазлу завершён |
| 422 | Неверные параметры / адрес / ключи |
| 429 | Лимит или бан. См. Retry-After |
| 503 | Нет свободных областей, повторите позже |
Лимиты
| Метод | Лимит |
|---|---|
getRange (random) |
10/мин, 60/час, 300/сутки |
getRange с numberRange=N |
5/мин, 30/час, 100/сутки |
setRange |
60/мин, 3600/час; 3600/час на один адрес выплат |
неудачные setRange (неверные ключи) |
10/час |
Как работает бан
- Превышение лимита →
429+Retry-After. - IP входит в lockout на это время. В lockout его запросы отбиваются, но новые предупреждения не начисляются.
- После lockout IP снова может работать. Если опять превышает лимит — это новое предупреждение.
- 10 предупреждений за 30 дней → бан на 1 год. Забаненный IP получает
429 Access permanently blocked.
Что нового
15.10.2026
API v2
Все запросы переведены на
/api/v2/*. Поля и формат ответа совместимы с v1.15.10.2026
API v1 → 410 Gone
v1 отключён. Полное удаление URL — 01.12.2026.
12.12.2025
Режим -b / --brute
Последовательная проверка областей: n, n+1, ...
API v1
устарелС 15.10.2026 все запросы к /api/v1/* возвращают 410 Gone с заголовками Sunset, Deprecation и Link: </api/v2/...>; rel="successor-version".
Если ваш клиент использует
/api/v1/ — замените на /api/v2/. Поля запроса и ответа совместимы. Полное отключение URL запланировано на 01.12.2026.