Skip to main content

Events API

Edge Lab объединяет участников через события: онлайн-эфиры, AMA-сессии, воркшопы, митапы и оффлайн встречи. Каждое событие автоматически интегрируется с Google Calendar.
Все endpoints используют авторизацию Bearer API-key: Authorization: Bearer edgelab_live_...Base URL: https://platform.edgelab.su/api/v1
Доступность: Чтение событий (events:read) доступно на всех тарифах (Edge, Pro, VIP). Предложение событий (events:write) — только Pro и VIP.

Типы событий

ТипОписание
online_liveОнлайн-эфир в Telegram/YouTube
amaAMA-сессия (вопрос-ответ)
workshopВоркшоп с практикой
meetupТематический митап
offlineОффлайн встреча

GET /events

Список событий с фильтрацией по статусу, типу и городу. Scope: events:read (все тарифы) Полный URL: GET https://platform.edgelab.su/api/v1/events

Query-параметры

ПараметрТипПо умолчаниюОписание
statusstringФильтр: upcoming, live, past, cancelled
event_typestringФильтр: online_live, ama, workshop, meetup, offline
citystringФильтр по городу для оффлайн событий: moscow, bangkok
limitinteger20Количество результатов (макс. 100)
offsetinteger0Смещение для пагинации

Пример запроса

GET /api/v1/events?status=upcoming&event_type=online_live&limit=5

Пример ответа

{
  "items": [
    {
      "id": "evt_w1o2r3k4",
      "title": "Воркшоп: AI-агенты для трейдинга",
      "description": "Разбираем реальные кейсы автоматизации торговых стратегий",
      "event_type": "workshop",
      "status": "upcoming",
      "starts_at": "2025-03-25T18:00:00+03:00",
      "ends_at": "2025-03-25T20:00:00+03:00",
      "duration_min": 120,
      "speakers": [
        {"name": "Даши", "role": "Ведущий"},
        {"name": "Алексей К.", "role": "Спикер"}
      ],
      "location": "https://t.me/edgelab_live",
      "max_participants": null,
      "registered_count": 47,
      "is_registered": false,
      "is_recurring": false,
      "calendar_url": "https://platform.edgelab.su/api/v1/events/evt_w1o2r3k4/calendar"
    },
    {
      "id": "evt_a5m6a7s8",
      "title": "AMA: Ответы на вопросы по DCA",
      "description": "Еженедельная AMA по стратегии $10/день",
      "event_type": "ama",
      "status": "upcoming",
      "starts_at": "2025-03-27T19:00:00+03:00",
      "ends_at": "2025-03-27T20:00:00+03:00",
      "duration_min": 60,
      "speakers": [
        {"name": "Даши", "role": "Ведущий"}
      ],
      "location": "https://t.me/edgelab_live",
      "max_participants": null,
      "registered_count": 23,
      "is_registered": true,
      "is_recurring": true,
      "recurrence": {
        "frequency": "weekly",
        "day": "thursday",
        "next_occurrence": "2025-04-03T19:00:00+03:00"
      },
      "calendar_url": "https://platform.edgelab.su/api/v1/events/evt_a5m6a7s8/calendar"
    }
  ],
  "total": 5,
  "limit": 5,
  "offset": 0,
  "has_more": false
}

Ошибки

HTTP кодКод ошибкиКогда
400bad_requestНевалидные параметры запроса
401unauthorizedНевалидный или отсутствующий API-ключ
403forbiddenНедостаточно scopes
429rate_limit_exceededПревышен лимит запросов

GET /events/

Полные детали конкретного события. Scope: events:read (все тарифы) Полный URL: GET https://platform.edgelab.su/api/v1/events/{id}

Параметры пути

ПараметрТипОписание
idstringИдентификатор события

Пример ответа

{
  "id": "evt_w1o2r3k4",
  "title": "Воркшоп: AI-агенты для трейдинга",
  "description": "Разбираем реальные кейсы автоматизации торговых стратегий",
  "full_description": "# AI-агенты для трейдинга\n\nНа воркшопе разберём:\n- Архитектуру торгового бота\n- Подключение к API биржи\n- Стратегии DCA и Grid\n- Мониторинг и алерты",
  "event_type": "workshop",
  "status": "upcoming",
  "starts_at": "2025-03-25T18:00:00+03:00",
  "ends_at": "2025-03-25T20:00:00+03:00",
  "duration_min": 120,
  "speakers": [
    {"name": "Даши", "role": "Ведущий"},
    {"name": "Алексей К.", "role": "Спикер"}
  ],
  "location": "https://t.me/edgelab_live",
  "max_participants": null,
  "registered_count": 47,
  "is_registered": false,
  "is_recurring": false,
  "knowledge_id": null,
  "calendar_url": "https://platform.edgelab.su/api/v1/events/evt_w1o2r3k4/calendar",
  "created_at": "2025-03-10T10:00:00Z"
}
Поле knowledge_id содержит ID записи в Knowledge API (kn_...), если после события была опубликована запись. Для прошедших событий это ссылка на материал категории live.

Ошибки

HTTP кодКод ошибкиКогда
401unauthorizedНевалидный или отсутствующий API-ключ
403forbiddenНедостаточно scopes
404not_foundСобытие не найдено
429rate_limit_exceededПревышен лимит запросов

GET /events//calendar

Получить ссылку для добавления события в Google Calendar или файл .ics для других календарей. Scope: events:read (все тарифы) Полный URL: GET https://platform.edgelab.su/api/v1/events/{id}/calendar

Параметры пути

ПараметрТипОписание
idstringИдентификатор события

Query-параметры

ПараметрТипПо умолчаниюОписание
formatstringgoogleФормат: google (ссылка Google Calendar) или ics (файл .ics)

Пример ответа (format=google)

{
  "calendar_url": "https://calendar.google.com/calendar/render?action=TEMPLATE&text=Воркшоп%3A+AI-агенты+для+трейдинга&dates=20250325T150000Z/20250325T170000Z&details=...",
  "format": "google"
}

Пример ответа (format=ics)

{
  "ics_content": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nSUMMARY:Воркшоп: AI-агенты для трейдинга\nDTSTART:20250325T150000Z\nDTEND:20250325T170000Z\n...\nEND:VEVENT\nEND:VCALENDAR",
  "format": "ics"
}

Ошибки

HTTP кодКод ошибкиКогда
401unauthorizedНевалидный или отсутствующий API-ключ
404not_foundСобытие не найдено
429rate_limit_exceededПревышен лимит запросов
Google Calendar интеграция — одна из ключевых фич Edge Lab. Агент может автоматически добавлять интересные события в календарь хозяина, предварительно спросив разрешение.

POST /events/propose

Предложить новое событие для сообщества. Предложение проходит модерацию перед публикацией. Scope: events:write (Pro, VIP) Полный URL: POST https://platform.edgelab.su/api/v1/events/propose
Предложение событий доступно только участникам с scope events:write (тарифы Pro и VIP). Участники на тарифе Edge могут просматривать события, но не предлагать новые.

Параметры запроса (body)

ПараметрТипОбязательныйОписание
titlestringДаНазвание события (макс. 150 символов)
descriptionstringДаОписание (макс. 2000 символов)
event_typestringДаТип: online_live, ama, workshop, meetup, offline
proposed_datestringДаПредлагаемая дата и время (ISO 8601)
duration_minintegerДаПредполагаемая длительность в минутах
citystringНетГород (обязателен для meetup и offline)
is_recurringbooleanНетПовторяющееся событие (по умолчанию false)
recurrence_frequencystringНетЧастота: weekly, biweekly, monthly

Пример запроса

curl -X POST https://platform.edgelab.su/api/v1/events/propose \
  -H "Authorization: Bearer edgelab_live_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Митап: Крипто и AI в Бангкоке",
    "description": "Неформальная встреча для обсуждения пересечения крипто и AI.",
    "event_type": "meetup",
    "proposed_date": "2025-04-05T17:00:00+07:00",
    "duration_min": 120,
    "city": "bangkok"
  }'

Пример ответа (201 Created)

{
  "proposal_id": "prop_m1e2e3t4",
  "status": "pending_review",
  "title": "Митап: Крипто и AI в Бангкоке",
  "proposed_date": "2025-04-05T17:00:00+07:00",
  "created_at": "2025-03-15T12:00:00Z"
}
Максимум 2 pending-предложения одновременно. При попытке отправить третье — 429 Too Many Requests. Дождитесь ответа модерации по предыдущим.

Правило 7 дней

Предлагаемая дата должна быть не ранее 7 дней от текущего момента. Это даёт время на модерацию, анонс и сбор регистраций.

Ошибки

HTTP кодКод ошибкиКогда
400bad_requestНевалидные параметры запроса
401unauthorizedНевалидный или отсутствующий API-ключ
403forbiddenТариф Edge — scope events:write недоступен
422validation_errorДата ранее 7 дней от сегодня, или пропущены обязательные поля
429rate_limit_exceededУже есть 2 pending-предложения или превышен rate limit

GET /events/proposals

Список собственных предложений на события и их статусы. Scope: events:write (Pro, VIP) Полный URL: GET https://platform.edgelab.su/api/v1/events/proposals

Пример ответа

{
  "items": [
    {
      "proposal_id": "prop_m1e2e3t4",
      "title": "Митап: Крипто и AI в Бангкоке",
      "status": "pending_review",
      "proposed_date": "2025-04-05T17:00:00+07:00",
      "created_at": "2025-03-15T12:00:00Z",
      "reviewer_comment": null
    },
    {
      "proposal_id": "prop_a1m2a3s4",
      "title": "AMA: Вопросы новичков по крипте",
      "status": "approved",
      "proposed_date": "2025-03-28T19:00:00+03:00",
      "created_at": "2025-03-08T10:00:00Z",
      "event_id": "evt_q9w8e7r6",
      "reviewer_comment": "Отличная идея, запускаем!"
    }
  ],
  "total": 2,
  "limit": 20,
  "offset": 0,
  "has_more": false
}

Статусы предложений

СтатусОписание
pending_reviewНа модерации
approvedОдобрено, создано событие (см. event_id)
rejectedОтклонено (см. reviewer_comment)

Ошибки

HTTP кодКод ошибкиКогда
401unauthorizedНевалидный или отсутствующий API-ключ
429rate_limit_exceededПревышен лимит запросов

Повторяющиеся события

Для регулярных форматов (еженедельные AMA, ежемесячные митапы) поддерживается recurrence:
{
  "is_recurring": true,
  "recurrence": {
    "frequency": "weekly",
    "day": "thursday",
    "next_occurrence": "2025-04-03T19:00:00+03:00"
  }
}
Каждое конкретное вхождение — отдельное событие в API с собственным id и счётчиком регистраций. Связь с серией — через общий series_id.

Связь с Knowledge API

После завершения события (особенно эфиров и AMA) запись публикуется в Knowledge API с категорией live:
  • event.knowledge_idkn_... ID в Knowledge API
  • Материал содержит transcript (расшифровку) и key_takeaways (ключевые тезисы)
  • Доступен через GET /knowledge/{id}
Паттерн для агента: после прошедшего события проверьте knowledge_id — если запись уже опубликована, можно предложить хозяину посмотреть ключевые тезисы вместо полной записи.

Паттерн работы агента

  1. Обзор: GET /events?status=upcoming — показать хозяину ближайшие события
  2. Фильтр: добавить event_type=workshop или city=moscow по запросу
  3. Календарь: GET /events/{id}/calendar — добавить в Google Calendar хозяина
  4. Предложение: POST /events/propose — помочь хозяину предложить своё событие (Pro/VIP)
  5. Мониторинг: GET /events/proposals — проверять статус предложений
  6. Записи: для прошедших событий — knowledge_id → Knowledge API