API приёма аккаунтов

Через этот API вы отправляете аккаунты — куки или auth_token — с привязкой к Telegram-ID продавца. Мы автоматически проверяем их и оформляем заявку, как при ручной загрузке боту.

Обзор

Один запрос — один или несколько аккаунтов одного продавца. Мы извлекаем auth_token из присланных данных, проверяем живость и подписчиков, отсекаем дубли и создаём заявку на указанный tg_id. Проверка идёт в фоне — запрос возвращается сразу.

Базовый адрес

https://twitswag.sbs

Авторизация

Каждый запрос должен содержать API-ключ в заголовке. Ключ выдаётся отдельно.

X-Api-Key: ВАШ_КЛЮЧ

Альтернатива: Authorization: Bearer ВАШ_КЛЮЧ или параметр ?key=ВАШ_КЛЮЧ в URL. Без ключа или с неверным — 401 unauthorized.

Проверка доступности

GET/api/health

Проверка, что сервис жив. Ключ не требуется.

# ответ
{ "ok": true, "service": "buyer-intake" }

Приём аккаунтов

POST/api/intake

Тело — JSON. Заголовки: Content-Type: application/json и X-Api-Key.

Поля запроса

ПолеТипОписание
tg_idчислообязательно Telegram-ID продавца, которому засчитать аккаунты
cookiesстрока / списокодно из Куки аккаунта(ов). auth_token (40 hex-символов) вытаскивается из строки любого формата
tokensстрока / списокодно из Альтернатива cookies: сразу auth_token — один или списком
nameстрокаопционально Метка продавца (например @nickname), если его ещё нет в базе

Нужно передать хотя бы одно поле с токенами. Также принимаются cookie, token, text, dataauth_token находится автоматически, лишние куки (ct0 и прочие) игнорируются.

Пример: один аккаунт

curl -X POST https://twitswag.sbs/api/intake \
  -H "X-Api-Key: ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
        "tg_id": 123456789,
        "name": "@seller",
        "cookies": "auth_token=abcdef0123456789abcdef0123456789abcdef01; ct0=..."
      }'

Пример: несколько аккаунтов одного продавца

curl -X POST https://twitswag.sbs/api/intake \
  -H "X-Api-Key: ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
        "tg_id": 123456789,
        "tokens": [
          "abcdef0123456789abcdef0123456789abcdef01",
          "1234567890abcdef1234567890abcdef12345678"
        ]
      }'

Пример на Python

import requests

requests.post(
    "https://twitswag.sbs/api/intake",
    headers={"X-Api-Key": "ВАШ_КЛЮЧ"},
    json={
        "tg_id": 123456789,
        "name": "@seller",
        "cookies": "auth_token=abcdef0123456789abcdef0123456789abcdef01; ct0=...",
    },
    timeout=15,
)

Ответы

Успех — 202 Accepted.

{ "ok": true, "accepted": 2, "tg_id": 123456789, "submission_id": 19 }
  • accepted — сколько уникальных auth_token извлечено из запроса.
  • submission_idномер заявки. Все куки одного tg_id за один день копятся в одну заявку, поэтому при отправке по одной куке номер весь день один и тот же. По нему смотри статус.

Статус заявок и баланс

GET/api/status?tg_id=123456789

Возвращает заявки поставщика и его баланс. Требует X-Api-Key.

{
  "ok": true, "tg_id": "123456789", "currency": "$",
  "balance": 12.5, "wallet": "0x…",
  "submissions": [
    { "id": 19, "day": "2026-09-20", "status": "pending",
      "total": 240, "alive": 0, "dead": 0, "estimate": 0, "quote": null }
  ]
}

Статусы: pending (принята, ждёт проверки) → checked (проверена) → credited (зачислено на баланс) → paid (выплачено).

Экспорт по дате

GET/api/export?tg_id=123456789&day=2026-09-20

Отдаёт auth_token принятых аккаунтов (статус checked/credited/paid) с фильтром по дате. tg_id необязателен. Можно диапазон:

GET /api/export?from=2026-09-18&to=2026-09-20
{ "ok": true, "count": 2,
  "submissions": [{ "id": 19, "day": "2026-09-20", "status": "paid", "count": 2 }],
  "tokens": ["<40hex>", "<40hex>"] }

Даты в формате YYYY-MM-DD (UTC), диапазон включительно.

Коды ошибок

КодerrorПричина
400missing_tg_idнет или некорректный tg_id
400no_tokensв запросе не найдено ни одного auth_token
400bad_jsonтело не разобралось как JSON
401unauthorizedнет или неверный API-ключ
413bad_lengthтело больше 8 МБ

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

  • Один продавец — один tg_id. Аккаунты засчитываются на баланс именно этого Telegram-ID.
  • Пачки склеиваются. Много запросов подряд по одному tg_id объединяются в одну заявку и проверяются разом — можно слать по одному аккаунту.
  • Антидубль. Ранее присланный auth_token или тот же аккаунт по @handle повторно не оплачивается — дубли просто отсекаются.
  • 202 не значит «оплачено». Это «принято в проверку». Живость и подписчиков проверяем мы, цену выставляет админ. Итог продавец видит в боте.
Формат токена. auth_token — это 40 hex-символов. Присылайте в любом виде: строкой куков, чистым токеном или списком — парсер найдёт сам.