EventsLocationsSpacesSolutionsPricingIntegrationsAPIBlogHelp
EventsLocationsSpacesSolutionsPricingIntegrationsAPIBlogHelp
© 2026 AOA
Getting startedArtistsFor artistsOrganizersVenuesPast eventsCareersPartnersBubble avatarBento pageGitHub
AboutWhat is AOAPrivacySecurityTermsMerchantCookies
Тарифи
UAEN
ТарифиПідтримка
ДЛЯ ЛЮДЕЙ
Люди поручЯк це працюєAOA Connect7 або 30 днів кавиПідвішена кава
ДЛЯ БІЗНЕСУ
ЗакладамОрганізаторамВласникам просторівАртистам і гуртам
Рішення
Check-in на подіюНетворкінг на подіяхTelegram-ботBento-сторінкаПрограма лояльностіПідвішена каваNFC-мітки для закладу
Розширюйте можливості
ІнтеграціїAPI & SDK
ДовідкаДокументаціяБлогПро AOAКонтакти

API Reference

  • Вступ
  • Автентифікація
  • Пісочниця
  • Ліміти запитів
  • Помилки
  • Версіонування
  • Події
  • Резервування
  • Оплата

Webhooks

  • Вступ
  • Типи подій
  • Перевірка підпису
  • Make, Zapier, n8n

API Reference

Події

Чотири ендпоінти подій AOA: список із фільтрами за містом і категорією, деталі, типи квитків із цінами й поточна доступність місць. Ключ не обовʼязковий.

Чотири ендпоінти для читання. Ключ не обовʼязковий, але з ним ліміт вищий. Показуються лише опубліковані публічні події, які ще не завершились.

Список подій

GET/events

cURL
curl "https://aoa.com.ua/api/v1/events?city=Київ&category=workshop&limit=20" \
  -H "Authorization: Bearer aoa_live_…"

Параметри

ПараметрТипОпис
citystringНазва міста. Порівняння точне, без урахування регістру: «Київ» спрацює, «Киев» чи «Ки» — ні.
categorystringКатегорія події. Невідоме значення дає 400 зі списком у повідомленні.
limitintegerСкільки подій повернути. За замовчуванням 50, максимум 100.

Пагінації немає

За один запит можна отримати щонайбільше 100 подій, зсуву чи курсора поки не передбачено. Якщо вам потрібен повний каталог більшого обсягу — напишіть нам.

Категорії

dj-set, live-music, party, book-event, performance, art-exhibition, market, workshop, lecture, networking, open-space, movie-screening, other

Відповідь

JSON
{
  "data": [
    {
      "id": "a1b2c3",
      "url": "https://aoa.com.ua/events/a1b2c3",
      "title": "Джаз-вечір",
      "startAt": "2026-08-15T18:00:00.000Z",
      "endAt": "2026-08-15T22:00:00.000Z",
      "imageUrl": "https://aoa.com.ua/uploads/events/cover.jpg",
      "eventType": "live_music",
      "status": "published",
      "city": "Київ",
      "venue": "Coffee Lab"
    }
  ],
  "meta": { "count": 1, "total": 1, "limit": 20 }
}

meta.total — скільки подій підійшло під фільтри, meta.count — скільки повернули з урахуванням ліміту. Усі поля, крім id, url і title, можуть бути null. Події відсортовані за датою початку.

Деталі події

GET/events/{eventId}

Замість eventId підійде як короткий ідентифікатор із посилання, так і повний внутрішній.

JSON
{
  "data": {
    "id": "a1b2c3",
    "url": "https://aoa.com.ua/events/a1b2c3",
    "title": "Джаз-вечір",
    "description": "Живий джаз у затишному просторі",
    "imageUrl": "https://aoa.com.ua/uploads/events/cover.jpg",
    "startAt": "2026-08-15T18:00:00.000Z",
    "endAt": "2026-08-15T22:00:00.000Z",
    "allDay": false,
    "eventType": "live_music",
    "status": "published",
    "attendanceMode": "offline",
    "capacity": 120,
    "location": {
      "name": "Coffee Lab",
      "address": "вул. Хрещатик, 1",
      "city": "Київ"
    },
    "organizer": {
      "name": "Coffee Lab",
      "url": "https://aoa.com.ua/o/coffee-lab"
    },
    "refundPolicy": {
      "refundsEnabled": true,
      "refundDeadlineHours": 24
    },
    "ticketTypes": [ … ]
  }
}

Кілька особливостей, які варто врахувати:

  • organizer присутній завжди. Якщо подію створено не від імені організації, там буде AOA.
  • location може бути null — наприклад, коли адресу ще не вказали.
  • ticketTypes дублює вміст окремого ендпоінта: якщо потрібні лише квитки, беріть його — відповідь менша.
  • Видалена подія дає 410, а неопублікована — 404.

Типи квитків

GET/events/{eventId}/ticket-types

JSON
{
  "data": [
    {
      "id": "clx9ticket001",
      "name": "Standard",
      "priceMinor": 45000,
      "priceDecimal": "450.00",
      "currency": "UAH",
      "isFree": false,
      "capacity": 100,
      "sold": 37,
      "remaining": 63,
      "salesStart": "2026-07-01T00:00:00.000Z",
      "salesEnd": "2026-08-15T17:00:00.000Z",
      "status": "on_sale"
    }
  ],
  "meta": { "count": 1 }
}

Ціни

Рахуйте на priceMinor — це копійки цілим числом. priceDecimal дано лише для показу. Поле isFree істинне і для нульової ціни, і для типу без ціни.

Наявність

capacity: null означає тип без обмеження місць — тоді remaining теж null, і це не помилка.

statusЗначення
on_saleПродається зараз
sold_outМісць не лишилось
sales_not_startedПродаж ще не почався
sales_endedПродаж завершено

Типи, приховані організатором на сторінці події, через API не віддаються.

Поточна доступність

GET/events/{eventId}/availability

Найсвіжіші залишки. На відміну від ticket-types, тут враховані активні резерви й незавершені оплати — тобто число показує, скільки квитків справді можна купити цієї миті.

JSON
{
  "data": {
    "eventId": "a1b2c3",
    "ticketTypes": {
      "clx9ticket001": 63,
      "clx9ticket002": 0
    },
    "checkedAt": "2026-07-30T12:34:56.789Z"
  }
}

ticketTypes — це обʼєкт, де ключ це ідентифікатор типу, а значення — залишок. Типи без обмеження місць у ньому відсутні.

Порожня відповідь неоднозначна

Порожній ticketTypes: {} означає або що в події немає типів з обмеженням місць, або що сервіс залишків тимчасово недоступний. Розрізнити ці випадки з відповіді не можна, тому не трактуйте порожній обʼєкт як «все розпродано» — звіряйтесь із ticket-types.

Це найдешевший спосіб оновлювати залишки: одна відповідь покриває всі типи квитків події.

НазадВерсіонуванняДаліРезервування