Indigo Earn API
Подтверждение заданий «запустить бота»
Как это работает
- Создайте задание «Запуск бота» в @IndigoEarnBot и получите API-ключ.
- Исполнитель открывает ваш бот по ссылке
t.me/вашбот?start=tsk_ТОКЕН. - Ваш бот отправляет токен и id пользователя на
POST /api/v1/confirm. Награда начисляется сразу. - Перед запуском задания наш служебный аккаунт один раз откроет ваш бот с проверочным токеном — бот должен подтвердить его тем же запросом. Так мы убеждаемся, что бот ваш, и никто не может гнать трафик на чужие боты.
POST /api/v1/confirm
POST https://earn.gramia.org/api/v1/confirm
Authorization: Bearer ВАШ_API_КЛЮЧ
Content-Type: application/json
{"token": "ТОКЕН_ИЗ_START", "user_id": 123456789}
Ответы: confirmed, already_confirmed, verified (проверка бота пройдена);
ошибки: not_found (404), user_mismatch (400), expired (410),
bot_not_verified (403), rate_limited (429).
Пример · aiogram 3
@dp.message(CommandStart(deep_link=True))
async def start(m: Message, command: CommandObject):
if command.args and command.args.startswith("tsk_"):
async with aiohttp.ClientSession() as s:
await s.post("https://earn.gramia.org/api/v1/confirm",
json={"token": command.args[4:], "user_id": m.from_user.id},
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"})
# ... ваша обычная логика /startПример · Node.js (grammY)
bot.command("start", async (ctx) => {
const p = ctx.match;
if (p?.startsWith("tsk_")) {
await fetch("https://earn.gramia.org/api/v1/confirm", {
method: "POST",
headers: { "Authorization": "Bearer ВАШ_API_КЛЮЧ", "Content-Type": "application/json" },
body: JSON.stringify({ token: p.slice(4), user_id: ctx.from.id }),
});
}
});GET /api/v1/ping
curl -H "Authorization: Bearer ВАШ_API_КЛЮЧ" https://earn.gramia.org/api/v1/ping
Проверяет ключ и показывает статус задания.
Правила
- Подтверждайте только реальные запуски — токен одноразовый и привязан к пользователю.
- Не больше 30 запросов в секунду на ключ.
- Если бот перестаёт подтверждать запуски, задание автоматически ставится на паузу.