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/час
Как работает бан
  1. Превышение лимита → 429 + Retry-After.
  2. IP входит в lockout на это время. В lockout его запросы отбиваются, но новые предупреждения не начисляются.
  3. После lockout IP снова может работать. Если опять превышает лимит — это новое предупреждение.
  4. 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.