Indigo Earn API

Подтверждение заданий «запустить бота»

Как это работает

  1. Создайте задание «Запуск бота» в @IndigoEarnBot и получите API-ключ.
  2. Исполнитель открывает ваш бот по ссылке t.me/вашбот?start=tsk_ТОКЕН.
  3. Ваш бот отправляет токен и id пользователя на POST /api/v1/confirm. Награда начисляется сразу.
  4. Перед запуском задания наш служебный аккаунт один раз откроет ваш бот с проверочным токеном — бот должен подтвердить его тем же запросом. Так мы убеждаемся, что бот ваш, и никто не может гнать трафик на чужие боты.

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

Проверяет ключ и показывает статус задания.

Правила