/aichat2/conversations) — це нове покоління інтерфейсу діалогів, яке є повністю оновленою версією AI Chat API. На основі лаконічності v1 та керованих багатораундових діалогів він розширює:
- Мультимодальні введення користувача: безпосередньо передавайте текст + зображення + блоки файлів через структуроване поле
message, без необхідності попередньо непрямо додавати їх за допомогоюreferences. - Агентні виклики інструментів: вбудований набір інструментів для онлайн-пошуку, отримання вебсторінок, читання файлів тощо, а також можливість підключати MCP-сервери, авторизовані користувачем (Google Drive, Notion, Slack, GitHub тощо); модель може в межах одного запиту автономно багаторазово викликати інструменти для виконання складних завдань.
- Структуровані потокові події: через
accept: text/event-streamабоapplication/x-ndjsonможна отримувати подіїtext_delta,tool_use,tool_result,thinking,citation,card,artifactтощо для кожного токена, що зручно для окремого рендерингу за відповідними типами на фронтенді. - Можливість переривання / відновлення: коли моделі потрібно, щоб користувач доповнив інформацію, вона надсилає подію
ask_user_questionі призупиняється; під час наступного виклику достатньо повернути відповідь черезtool_results, щоб продовжити. - Нові CRUD-дії: через поле
actionна тому самому endpoint можна виконуватиretrieve/retrieve_batch/update/delete, без потреби в додатковому API для керування діалогами. - Список моделей, що постійно оновлюється: за замовчуванням підключені сучасні моделі GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K3 тощо.
model + question (+ необов’язкові stateful / id / references / preset), щоб отримати JSON-відповідь {answer, id}, еквівалентну v1; тому для міграції з /aichat/conversations не потрібно переписувати клієнт — достатньо замінити шлях на /aichat2/conversations.
Якщо ви зараз використовуєте /aichat/conversations, старий інтерфейс і надалі буде доступний, і ви можете мігрувати у зручному для себе темпі.
Процес подання заявки
Щоб використовувати AI Chat v2 API, спершу перейдіть до консолі Ace Data Cloud, щоб отримати ваш API Token і зберегти його для подальшого використання.
Якщо ви ще не увійшли в систему або не зареєструвалися, вас буде автоматично перенаправлено на сторінку входу із запрошенням зареєструватися та увійти; після завершення ви автоматично повернетеся на поточну сторінку.
Один API Token дає змогу викликати всі сервіси платформи, не потрібно подавати окрему заявку для кожного сервісу. Під час першого отримання надається безкоштовний ліміт, що дозволяє безкоштовно ознайомитися з можливостями; якщо ліміту недостатньо, ви можете поповнити універсальний баланс у консолі.
📘 Повна документація: AI Chat v2 API →
Базове використання
Найпростіше використання повністю відповідає v1: передайтеmodel + question і отримайте {answer, id}.
Приклад CURL:
model можна безпосередньо переглянути у випадаючому списку панелі Try праворуч; поширені категорії включають:
- OpenAI:
gpt-5.4-mini,gpt-5.4-nano,gpt-5.2-pro,gpt-5.1-all,gpt-5-all,gpt-4.1,gpt-4o,gpt-4o-image,o3,o4-miniтощо - Anthropic:
claude-opus-4-8,claude-opus-4-7,claude-opus-4-6,claude-opus-4-5-20251101,claude-sonnet-4-6,claude-sonnet-4-5-20250929,claude-haiku-4-5-20251001тощо - Google:
gemini-3.1-pro-preview,gemini-3.1-pro-preview,gemini-3.1-flash-image,gemini-3.1-pro-preview,gemini-2.5-flash-liteтощо - xAI:
grok-4тощо - DeepSeek:
deepseek-v4-pro,deepseek-v4.1-flash,deepseek-v4-flash,deepseek-v3.2-exp,deepseek-r1-0528тощо - Moonshot:
kimi-k3,kimi-k2.6,kimi-k2.5тощо - Zhipu:
glm-5.3,glm-5.2,glm-5.1,glm-5,glm-5-turbo,glm-4.7,glm-4.5vтощо
Багатораундовий діалог
Як і у v1, передайтеstateful: true, щоб увімкнути збереження діалогу; API поверне id; у наступних запитах достатньо передавати цей id, щоб продовжити діалог, без необхідності самостійно підтримувати історію messages.
Перший запит:
id:
statefulза замовчуванням має значенняtrue; пропускання та явна передачаtrueє еквівалентними. Якщо ви не хочете, щоб сервер зберігав цей раунд діалогу, можна явно встановитиstateful: false.
Потокова відповідь
v2 підтримує два потокові формати, які вибираються за заголовкомaccept:
Приклад NDJSON
text_delta:
Приклад SSE
ВикористанняEventSource у браузері не підтримує власне тіло запиту, тому рекомендується використовувати fetch + ручний розбір на зрізи за \n\n:
Типи потокових подій
Для клієнтів, яких цікавить лише фінальна відповідь, об’єднання всіх
content із text_delta є еквівалентним answer у режимі application/json.
Мультимодальне введення
Якщо введення користувача містить зображення або файл, передавайтеmessage (масив) замість question. Кожен елемент масиву — це блок вмісту:
text— звичайний текст, обов’язкове полеtext.image_url— зображення, обов’язкове полеimage_url.url.file_url— файл (PDF, CSV, TXT тощо), обов’язкове полеfile_url.url.
Зв’язок із references у v1
Для сумісності зі старими клієнтами v2 і надалі розпізнає поле references: ["https://...", ...]:
- Суфікс URL —
jpg / jpeg / png / gif / bmp / webp / svg / heic / heif, автоматично перетворюється на блокimage_url; - Інші розширення перетворюються на блок
file_url; - Якщо водночас також надано
question, він додається попереду як блокtext.
/aichat2/conversations, а початковий спосіб використання references продовжить працювати як звично.
Якщо потрібен точніший контроль (наприклад, розмістити кілька зображень між текстом або якщо порядок дуже важливий), безпосередньо використовуйте масив message.
Виклики інструментів і MCP
Основне покращення v2 полягає в тому, що модель може самостійно викликати інструменти для виконання багатокрокових завдань, це увімкнено за замовчуванням, і клієнту не потрібно виконувати жодних додаткових налаштувань у запиті. Типові сценарії:- Користувач запитує: «Допоможи мені пошукати, які нові виставки нещодавно проходять у Шанхаї» → модель викликає вбудований web search → упорядковує результати у відповідь.
- Користувач запитує: «Прочитай цей PDF, а потім напиши резюме» → модель викликає file_read → пише резюме.
- Користувач уже авторизував Google Drive / GitHub / Notion тощо у Connections → модель може викликати відповідні інструменти MCP для читання та запису їхніх даних.
tool_use і tool_result, наприклад:
tool_use / tool_result / card / citation; фінальний вивід моделі все одно надходить через потік text_delta.
max_turns може обмежити максимальну кількість раундів самостійних викликів інструментів моделлю в цьому запиті, а верхня межа за замовчуванням визначається платформою. Якщо встановити мале значення (наприклад, max_turns: 1), можна примусово отримати одноразову відповідь і не дозволити жодних викликів інструментів.
Асинхронне виконання та авторизація без нагляду
Якщо ваш виклик надходить з Webhook сповіщень, CI/CD, системи моніторингу або інших фонових завдань, можна встановитиasync: true, щоб інтерфейс негайно повернув ID завдання, а виконання продовжилося у фоні:
action: retrieve + id для запиту результату розмови; також можна надати callback_url, і після завершення завдання платформа надішле { status, answer, usage, error } методом POST на вашу адресу зворотного виклику. callback_url повинен використовувати http / https, і не можна безпосередньо вказувати localhost або літеральну адресу приватного IP.
У фонових завданнях зазвичай немає людини, яка може натиснути підтвердження. Якщо ви хочете, щоб певні Skill або MCP Server виконували дії надсилання, публікації, запису тощо в режимі без нагляду, явно передайте в тілі запиту список попередньої авторизації:
allowed_skills — це slug підключених Skill; значення в allowed_mcp_servers — це slug підключених MCP Server. Skill / MCP Server, які не внесені до попередньої авторизації, у режимі без нагляду все ще можуть лише виконувати попередній перегляд, dry-run або відмовлятися від виконання операцій запису.
Якщо потрібен детальніший контроль, також можна використовувати еквівалентний об’єкт unattended_policy:
--unattended-confirm або відповідний механізм безпеки; інакше він продовжить виконувати dry-run і не виконуватиме операції запису безпосередньо.
Відновлення призупиненої розмови
Деякі інструменти змушують модель «ставити користувачу зустрічне запитання», і в цей момент модель надсилає подіюask_user_question, а розмова заморожується у стані awaiting_user_input:
id, повернувши відповідь через tool_results:
tool_use_id у тілі запиту обов’язково має повністю збігатися з tool_id під час призупинення; у разі невідповідності буде повернуто 400. Коли в запиті одночасно присутні tool_results, question / message / references усі ігноруються.
Якщо користувач вирішить відмовитися від цього питання, достатньо безпосередньо передати новий question / message, і платформа автоматично позначить призупинений виклик інструменту як «пропущений користувачем».
Керування розмовами (CRUD)
v2 на тому самому endpoint надає легковагове керування розмовами через полеaction, без потреби окремо відкривати API.
action: retrieve —— отримати розмову
messages, model, title, tools_used тощо).
action: retrieve_batch —— перелічити стислий опис розмов
{ items: [...], total }. Стислий опис не містить messages, він підходить для списку на бічній панелі; якщо користувач відкриває певну розмову, потім окремо отримайте її повні повідомлення за допомогою action: retrieve.
Необов’язкові параметри фільтрації: user_id, application_id, model_group, model.
action: update —— змінити заголовок або переписати історію
messages, але сервер виконуватиме сувору перевірку schema (має бути форма згорнутого ToolUseContent), у разі невідповідності буде повернено 400. Зазвичай рекомендується використовувати це лише для зміни title.
action: delete —— видалити одну розмову
{ id, success: true }. Після видалення відновлення неможливе, будь ласка, підтвердьте перед викликом.
Плавна міграція з v1
Якщо ви вже використовуєте/aichat/conversations, міграція на v2 майже не потребує змін у коді:
- Змініть URL з
https://api.acedata.cloud/aichat/conversationsнаhttps://api.acedata.cloud/aichat2/conversations. - Якщо раніше ви передавали назви моделей v1 (наприклад,
gpt-3.5,gpt-4-browsingтощо), під час переходу на v2 рекомендується оновитися до сучасних моделей (наприклад,gpt-5.4,claude-opus-4-8,gemini-3.1-pro-previewтощо). - Поля потоку NDJSON залишаються зворотно сумісними: кожна подія
text_deltaяк і раніше міститьdelta_answerтаid, тому клієнту, який раніше розбиравdelta_answerпостроково, не потрібно нічого змінювати.
message, SSE, виклики інструментів, action CRUD) і впроваджувати їх у зручному темпі.
Обробка помилок
Відповіді з помилками уніфіковані:400 bad_request: відсутні обов’язкові поля,tool_use_idне збігається, schemamessagesє недійсною тощо.401 invalid_token: заголовокauthorizationнеправильний.404 not_found: під часaction: retrieve / update / deleteрозмова, що відповідаєid, не існує.429 too_many_requests: спрацювало обмеження швидкості.500 chat_error: помилка висхідної LLM або в цьому раундіcompletion_tokens=0(обробляється як невикористане, плата не стягується).
{"type":"error","message":"..."}, після чого потік одразу завершується.

