Документация разработчика
API платформы Axionna позволяет владельцам Telegram-ботов и каналов монетизировать аудиторию через подписки на задания спонсоров и выдачу рекламных показов с автоматической защитой от фрода.
Возвращает список доступных для выполнения заданий (подписки на каналы, боты, переходы) с учётом антифрод-фильтрации и таргетинга.
| Поле | Тип | Статус | Описание |
|---|---|---|---|
| user_id | integer | обязательное | Telegram ID пользователя, для которого запрашиваются задания. |
| chat_id | integer | опционально | ID чата-источника. Для личного бота можно не передавать: по умолчанию используется user_id. Для групп и кампаний передавайте явно. |
| max_sponsors | integer | опционально | Максимальное количество заданий в ответе (от 1 до 20). По умолчанию: 5. |
curl -X POST https://axionna.org/api/sponsors \
-H "Authorization: Bearer AX-example-api-key" \
-H "Content-Type: application/json" \
-d '{
"user_id": 987654321,
"max_sponsors": 3
}'
Проверяет факт выполнения выданных заданий конкретным пользователем и возвращает индивидуальный статус подписки и вознаграждения.
| Поле | Тип | Статус | Описание |
|---|---|---|---|
| user_id | integer | обязательное | Telegram ID пользователя. |
| task_ids | string[] | обязательное | Массив ID заданий из /api/sponsors для проверки. |
curl -X POST https://axionna.org/api/check \
-H "Authorization: Bearer AX-example-api-key" \
-H "Content-Type: application/json" \
-d '{
"user_id": 987654321,
"task_ids": ["task_101", "task_102"]
}'
status в результатах проверки (results[].status)is_fake=true или offer_expired. Axionna снимает задание с выдачи без выплаты. В /api/check вернётся not_allowed с subscribed=false; интеграции не должны выдавать за него награду.
Сервер Axionna самостоятельно отправляет рекламный пост напрямую в диалог с пользователем от имени вашего подключенного бота через Telegram Bot API. Разработчик передаёт только API-ключ своего бота и chat_id — показ физически отправляется именно из подключенного бота, его невозможно перехватить или перенаправить на сторонние площадки.
| Поле | Тип | Статус | Описание |
|---|---|---|---|
| chat_id | integer | обязательное | Telegram ID чата или пользователя, которому показывается реклама. |
| greeting | boolean | опционально | true для показа приветственного рекламного сообщения при старте бота. |
| impression_id | string | опционально | Уникальный ключ идемпотентности показа для защиты от дублирования. |
curl -X POST https://axionna.org/api/views \
-H "Authorization: Bearer AX-example-api-key" \
-H "Content-Type: application/json" \
-d '{
"chat_id": 987654321,
"greeting": false
}'
result в показах рекламы (result)Возвращает текущий баланс владельца, заработанные и потраченные средства, а также список подключенных ботов.
Запрос не требует параметров в теле (передаётся пустой JSON {}). Авторизация выполняется по токену владельца или привязанного бота.
curl -X POST https://axionna.org/api/balance \
-H "Authorization: Bearer AX-example-api-key" \
-H "Content-Type: application/json" \
-d '{}'
Axionna отправляет автоматический POST-запрос на ваш HTTPS endpoint, когда пользователь отписывается от канала спонсора раньше гарантированного срока.
Проверьте секрет из заголовка X-Axionna-Webhook-Secret и обработайте одинаковый Idempotency-Key только один раз.
| Поле | Тип | Описание |
|---|---|---|
| event | string | Всегда subscriber.unsubscribed. |
| tg_user_id | integer | Telegram ID отписавшегося пользователя. |
| chat_id | integer | ID канала, от которого произошла отписка. |
from fastapi import FastAPI, Request
app = FastAPI()
@app.post("/webhook/axionna")
WEBHOOK_SECRET = "сохранённый_секрет"
@app.post("/webhook/axionna")
async def handle_unsub(req: Request):
if req.headers.get("X-Axionna-Webhook-Secret") != WEBHOOK_SECRET:
return {"ok": False}
data = await req.json()
if data.get("event") == "subscriber.unsubscribed":
user_id = data["tg_user_id"]
# Списание внутренней награды за досрочную отписку
deduct_user_balance(user_id)
return {"ok": True}