Сначала выберите сценарий. Затем просто повторите готовую схему. На странице есть рабочие запросы, ответы, webhook HMAC, статусы ошибок и checklist перед запуском.
Этот универсальный промпт охватывает все режимы DarkBoost: обязательный ОП, задания, Умный ОП, webhooks, Mini App и группы. Скопируйте его в ChatGPT или другой ИИ для интеграции вашего бота. Исходная документация остаётся ниже на этой странице.
Полный промпт для копирования
Промпт рассчитан на разработку без догадок. Если ИИ не может открыть эту страницу, скопируйте и отправьте текст вручную.
РОЛЬ: ты инженер Telegram-ботов и HTTP API. Прежде чем писать код, изучи всю документацию DarkBoost: https://darkboosts.com/docs. Не выдумывай endpoints, схемы JSON и статусы; если сайт недоступен, попроси скопировать страницу.
ОБЩИЕ ПРАВИЛА ВСЕХ РЕЖИМОВ
- Base URL: https://darkboosts.com. Отправляй JSON с заголовками Auth: YOUR_API_KEY и Content-Type: application/json. API-ключ только в защищённом backend/environment.
- Реальный Telegram user_id (не chat_id группы!), username, chat_id контекста, language_code, is_premium. Сохраняй server session_id, offer id и персональную ссылку link без изменений. Telegram Mini App обрабатывает переход; нельзя самостоятельно подменять URL провайдера.
- HTTP 200 значит доставку, а не выполнение. Анализируй status (ok / not_ok / busy / no_offers / expired / cooldown), missing, completed, rewarded, reward_rub и session_reward_rub_total. При not_ok обнови только оставшиеся кнопки. Новых выплат при повторном check может быть 0.
- Обеспечь idempotency, timeout, backoff+jitter при 429 и 5xx, повтор после retry_after_ms при busy. Не отправляй запросы непрерывно, не записывай токены в логи. Награды распределяет только сервер DarkBoost.
РЕЖИМ A — ОБЯЗАТЕЛЬНАЯ ПОДПИСКА (КЛАССИЧЕСКИЙ ОП)
POST /api/v1/sponsors: JSON {user_id, chat_id, max_sponsors:1..10}. Получи список, session_id и links. Покажи кнопку на каждый link. POST /api/v1/check с тем же user_id и session_id возвращает статус; POST /api/v1/check-offer проверяет только точный offer.id, который действительно был выдан. При not_ok оставь missing; пропускай пользователя только при ok.
РЕЖИМ B — ЗАДАНИЯ ПО ОДНОМУ
POST /api/v1/tasks/next, /api/v1/tasks/check, /api/v1/tasks/skip. Сохраняй состояние и session_id одного задания на пользователя; после проверки или пропуска запрашивай следующее по правилам документации. Не смешивай tasks-сессии с mandatory/check. Корректно отображай таймауты, provider unavailability, no_offers.
РЕЖИМ C — УМНЫЙ ОП (ОПЦИОНАЛЬНЫЙ, В КОНЦЕ ДОКУМЕНТАЦИИ)
POST /api/v1/smart-op с {tg_user_id,chat_id,lang,is_premium,offers_limit:1..10}. Первый запрос получает задания; повторный POST с session_id проверяет уже выданную сессию. Можно явно вызвать POST /api/v1/smart-op/check. Он похож по принципу на TGrass /offers, но работает внутри DarkBoost и использует ЕГО Auth. Старая API-интеграция остаётся рабочей и не требует миграции.
WEBHOOK, MINI APP, ГРУППЫ, ПОДПИСКИ
- Принцип обработки подписки/отписки подробно описан в разделе Webhooks: проверяй X-DarkBoost-Signature как sha256=HMAC_SHA256(secret, точные bytes тела); constant-time compare; UNIQUE(event_id), retries и атомарное изменение состояния. Никогда не кредитуй по неподтверждённому web-клику.
- В чатах и комментариях передавай настоящий Telegram user_id и chat_id группы; кнопки обрабатывай для этого же пользователя. Если человек закрывает Mini App, повторно проверь задания, уже выполненные убери из кнопок.
- Рекламодатель может отправить папку t.me/addlist/... до 100 чатов. Стоимость считается по полному составу; факт импорта папки Telegram не раскрывает Bot API. DarkBoost использует переход плюс подписку на один из контрольных чатов с правами бота как приближённое подтверждение; не называй это доказательством импорта.
ЧТО СГЕНЕРИРОВАТЬ
Уточни язык/фреймворк бота, если неизвестны. Напиши готовый интеграционный модуль, HTTP-клиент (timeout/retry), handlers на выдачу и «Проверить», хранение session_id по bot/user/chat, кнопки Telegram URL, HMAC webhook (если требуется), обработку status и HTTP отдельно, учёт неполных проверок, идемпотентные операции и graceful degradation. Добавь тесты успеха, неполной подписки, Already completed, busy, expired, no_offers, 401, 403, 429, 5xx, потерянных webhook и повторов. Не делай самовольную миграцию старого работающего режима в новый. Сверь код с текущей документацией DarkBoost.
Используйте, когда пользователь должен выполнить сразу весь список.
Задания
/tasks/next→1 task→/tasks/check→next
Используйте, когда задания показываются строго по одному.
Не смешивайте режимы. Сессия из /api/v1/tasks/next проверяется через /api/v1/tasks/check. Mandatory-сессия из /api/v1/sponsors — через /api/v1/check.
02 · USER PAYLOAD
Какие данные пользователя передавать
Поле
Обязательно
Что передавать
user_id
да
Telegram ID пользователя.
chat_id
желательно
Контекст, где выдали спонсоров. В личке обычно равен user_id.
username
нет
Без @. Если неизвестен — не выдумывайте.
first_name / last_name
нет
Передавайте только реальные значения Telegram.
language_code
нет
Например ru. Не подставляйте ru, если язык неизвестен.
is_premium
нет
true/false только если значение реально известно.
Чем точнее профиль, тем корректнее upstream-таргетинг сторонних сервисов.
POST/api/v1/sponsorsMANDATORY
Получить список спонсоров
DarkBoost собирает общий пул из всех включённых для бота источников, дедуплицирует его, фильтрует недоступные офферы и только потом ограничивает результат вашим max_sponsors. Максимум — 10.
01Запросите
Передайте user payload и нужный лимит.
02Сохраните session_id
Он нужен для последующей проверки.
03Покажите link
Используйте персональную ссылку DarkBoost из ответа.
Если запросили 10, а получили 2: это означает, что после объединения всех включённых источников для конкретного пользователя осталось только 2 подходящих уникальных оффера. Не нужно повторять запрос в цикле сразу же.
POST/api/v1/check
Проверить весь обязательный список
Передайте того же пользователя и session_id. Уже подтверждённые офферы фиксируются идемпотентно. В missing остаются только невыполненные.
Вся обязательная часть выполнена. Можно пропускать пользователя дальше.
status = not_ok
Покажите пользователю массив missing и после выполнения повторите тот же check.
completed и rewarded — разные вещи.completed означает подтверждённую подписку. rewarded — сколько из них прямо сейчас создали новое начисление владельцу площадки. Поэтому completed:1, rewarded:0 может быть корректным результатом.
POST/api/v1/check-offerOPTIONAL
Проверить конкретный оффер
Полезно, если у каждого спонсора отдельная кнопка «Проверить». Можно передать offer_id, offer_link, а также массивы offer_ids / offer_links.
После успешного check/skip можно сразу запросить /api/v1/tasks/next. DarkBoost не вводит cooldown между заданиями.
DELIVERY SAFETY
Первичный /start gate
Интеграции ничего менять не нужно. Если пользователь ещё не запускал @DarkBoostsBot, ссылка спонсора сначала откроет основной бот. После /start пользователь продолжит в тот же offer по тому же session/tracking token. Для уже активировавших DarkBoost ссылка сразу ведёт в Mini App.
Важно: всегда показывайте URL из поля link. Не подменяйте его исходной ссылкой провайдера — DarkBoost сам управляет gate, tracking и продолжением сессии.
TRACKING
Почему нельзя заменять link из ответа
01Выдача
DarkBoost создаёт персональный tracking token.
02Mini App
Пользователь открывает выданный startapp=offer_….
03Провайдер
DarkBoost переводит на оригинальный offer URL без потери параметров.
04Check
Проверка идёт против того сервиса, который реально выдал оффер.
Главное: храните session_id и возвращайте пользователю именно поле link. Не собирайте ссылку вручную.
OWNER WEBHOOKS
Webhooks без сюрпризов
Включите webhook у подключённого бота и укажите HTTPS URL + secret. DarkBoost отправляет события subscription и unsubscription. Получатель должен вернуть любой HTTP 2xx.
subscription
Отправляется, когда DarkBoost подтвердил факт выполнения оффера — даже если payout ещё pending или provider не начислил вознаграждение.
unsubscription
Отправляется, когда DarkBoost получил достоверный сигнал отписки по ранее учтённой продаже. Для first-party DarkBoost также работает retention-monitor.
Test-event не означает подписку и не влияет на баланс. Если ваш обработчик принимает только два известных типа событий, добавьте ветку event === "test" и просто верните 200.
SAFE TEST ENVIRONMENT
Sandbox — тестируйте интеграцию без денег и реальных подписок
Создайте sandbox key в Control Plane у нужного подключённого бота. Ключ начинается с dbx_test_, хранится на сервере только как SHA-256 и показывается один раз.
Никакого production side effect: sandbox не вызывает TGrass/Trafsly/Flyer/PiarFlow/BotoHub, не создаёт реальные rewards и не меняет баланс.
Для проверки HMAC-доставки вызовите POST /api/v1/sandbox/webhook с sandbox key. Событие проходит через тот же durable webhook pipeline, но имеет "sandbox": true.
OPTIONAL PYTHON SDK
Официальная Python-библиотека
SDK полностью необязателен. Все старые и новые REST-интеграции продолжают работать напрямую. Библиотека — только удобная обёртка над тем же API v1.
Для каждого подключённого бота доступны Provider Health, end-to-end funnel, webhook p50/p95, delivery history + Retry, sandbox key, anti-fraud summary и marketplace ROI-рекомендации.
Администратору: дополнительно показываются NOC incidents, reconciliation findings и безопасный запуск сверки. Control Plane не подменяет ledger и не «дорисовывает» provider confirmations.
STATUS MATRIX
HTTP код и status — это не одно и то же
Сначала проверяйте HTTP-код. Затем JSON-поле status. Например, HTTP 200 + status=not_ok — это нормальный бизнес-ответ, а не ошибка API.
status / HTTP
Что означает
Что делать
ok
Успех.
Продолжить сценарий.
not_ok
Проверка выполнена, но не всё подтверждено.
Показать missing, затем повторить check.
busy
Параллельный запрос того же пользователя уже обрабатывается.
Повторить через retry_after_ms.
cooldown
Новая mandatory-сессия пока не разрешена.
Ждать reset_seconds.
no_offers
Нет подходящих офферов.
Не спамить API; повторить позднее.
expired
Assignment провайдера истёк.
Запросить новую сессию.
HTTP 401
Нет/неверный Auth.
Проверить API key.
HTTP 403
Бот выключен/заблокирован политикой.
Проверить состояние подключённого бота.
HTTP 404 check-offer
Оффер не принадлежит этой сессии.
Использовать ID/link из исходной выдачи.
TROUBLESHOOTING
Если что-то не работает
Webhook не приходит
Проверьте: webhook включён → URL начинается с HTTPS → secret задан → endpoint доступен извне → отвечает 2xx → вы проверяете RAW body HMAC → не фильтруете событие из-за rewarded:0. subscription приходит по факту confirmed, а не только по факту выплаты.
Webhook приходит, но HMAC неверный
Не используйте уже распарсенный JSON. HMAC считается по исходным байтам request body и вашему webhook secret. Сравнивайте строку с префиксом sha256=.
/check возвращает not_ok
Это HTTP 200 и нормальный ответ. Покажите пользователю missing. Для точечной проверки используйте только ID/link из этой же сессии.
Запросил 10, получил меньше
DarkBoost уже опрашивает все включённые источники и объединяет их. Меньшее число означает реальный дефицит подходящих уникальных офферов после фильтров.
Пользователь подписался, rewarded=0
Смотрите completed. Если completed>0, подписка подтверждена. Reward может быть pending, уже учтён ранее либо не начислен сторонним provider'ом.
Tasks выдаёт всегда один оффер
Это ожидаемо. Tasks mode специально выдаёт задания по одному. Список до 10 используется только в mandatory режиме.
BEFORE PRODUCTION
Checklist перед запуском
API key и webhook secret хранятся только на backend.
Пользователь получает только link из ответа DarkBoost.
session_id сохраняется до завершения проверки.
HTTP-код и JSON status обрабатываются отдельно.
busy повторяется по retry_after_ms, а не считается ошибкой.
Webhook HMAC проверяется до изменения баланса/состояния.
Webhook обработчик имеет UNIQUE по event_id.
Ваш endpoint быстро возвращает 2xx; тяжёлую работу делайте через собственную очередь.
NEW API V1 · ОТДЕЛЬНЫЙ РЕЖИМ
Умный ОП — один адрес на выдачу и проверку
По логике TGrass /offers: первый запрос выдаёт спонсоров, повторный запрос того же пользователя проверяет активную сессию. Это дополнительный режим. Ранее работающие /api/v1/sponsors, /api/v1/check, /api/v1/check-offer и /api/v1/tasks/* остаются на месте.
user_id и tg_user_id — алиасы, как language_code/lang и username/tg_login. Лимит офферов: 1–10. В запросе можно использовать max_sponsors, limit или offers_limit. Запрещено подменять Telegram user_id идентификатором группы.
Покажите каждому пользователю ровно ссылку link. Она уже указывает на нужное Telegram Mini App и содержит трекинг. Никогда не переносите пользователя на адрес самого провайдера вручную.
Если часть заданий ещё не выполнена, вернётся status=not_ok и только невыполненные элементы. Убирайте выполненные кнопки. Если всё подтверждено, вернётся status=ok — можно пропустить пользователя. Когда status=no_offers, это отсутствие новых заданий, а не доказательство подписки.
POST/api/v1/smart-op/checkEXPLICIT CHECK
Дополнительный явный адрес проверки. Тот же JSON с session_id; проверка работает через общий защищённый контур DarkBoost. Для отдельного оффера используйте существующий /api/v1/check-offer и исходный id.
Данные примеров иллюстративные. rewarded — количество фактических проводок за конкретную проверку, а не обещанная сумма. Начисления выполняются только сервером DarkBoost. Повторные проверки идемпотентны.
Статусы и поведение клиента
Статус
Когда
Что сделать
not_ok
Остались невыполненные предложения
Показать только offers; дать проверить снова
ok
Условия сессии подтверждены
Продолжить действие пользователя
no_offers
Нет доступных предложений
Повторить позднее либо применить бизнес-правило своего бота
busy
Конкурирующая проверка
Повторить после retry_after_ms
expired
Сессия истекла
Запросить новый список без старого session_id
HTTP 401 / 403
Неверный ключ / бот запрещён
Не пропускать подписку; исправить настройки
HTTP 429 / 5xx
Лимит или недоступность
Backoff с jitter, без начисления
Про папки Telegram:t.me/addlist/... может содержать до 100 ресурсов. Bot API не подтверждает импорт папки в клиент Telegram; проверяется членство во всех доступных каналах, либо результат остаётся неподтверждённым. Нельзя начислять за клик.
Python · aiogram 3 + httpx
import httpx
API = "https://darkboosts.com/api/v1/smart-op"
KEY = "YOUR_API_KEY" # Только backend/environment!
async def smart_op(user, chat_id, session_id=None):
body = {"tg_user_id":user.id,"chat_id":chat_id,
"lang":user.language_code or "ru",
"is_premium":bool(user.is_premium),
"offers_limit":5}
if session_id: body["session_id"]=session_id
async with httpx.AsyncClient(timeout=15) as client:
response=await client.post(API,json=body,headers={"Auth":KEY})
response.raise_for_status()
result=response.json()
if not result.get("ok"): raise ValueError(result.get("error","provider_error"))
return result
# При not_ok показать result["offers"]; сохранить session_id.
# По нажатию Проверить повторить smart_op(..., session_id).
# Только status == "ok" разрешает пропускать; при busy/429/5xx повторять с задержкой.
Совместимость и границы режима
Вдохновлено схемой TGrass, но не является прокси и не требует ключ TGrass. Авторизация, платёжные проводки, antifraud, сессии и ссылки — собственные DarkBoost. Дополнительные поля TGrass могут отсутствовать; используйте описанные здесь значения, не ожидайте идентичной структуры offer_id/price. Ранее созданные боты могут продолжить использовать классический двухшаговый режим без миграции.
Ничего не найдено. Попробуйте «webhook», «check», «busy» или «tasks».