API Аси
Один адрес для интеграции: получи ключ, отправляй запросы, читай, что возвращает Ася. Базовый адрес — https://api.ася.online (рабочий: https://api.xn--80a8a2b.online).
Возможности
Ася работает с разными типами контента. Выбери тип — увидишь, что именно она умеет и каким эндпоинтом. Контекст проекта (документы) живёт на стороне Аси.
/generate/generate/generate/summary/ask/moderateскороcurl -X POST https://api.xn--80a8a2b.online/generate \
-H "Authorization: Bearer $ASYA_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"Ответь одним словом: привет?","json":false}'Сценарии
Из этих возможностей собираются готовые продукты. Частые сценарии, что строят на Асе:
Ключи и вход
Войди по номеру телефона и создай свой ключ — здесь же им управляешь (показать, скопировать, выключить, отозвать). Один ключ = один проект.
Ключ передаётся любым способом: Authorization: Bearer <ключ> (рекомендуется), заголовок x-api-key или ?key= в URL (для тестов). Вызывай API сервер-к-серверу.
Плейграунд
Вставь ключ, выбери эндпоинт и тело запроса — и посмотри ответ Аси прямо здесь, без curl.
Запрос уходит из браузера — удобно для теста. В проде дёргай API сервер-к-серверу, чтобы ключ не светился.
/generateуниверсальный вызов с контекстом проектаСистемный контекст = документы проекта. Пользовательскую часть шлёшь в input или в OpenAI-стиле messages. При json:true Ася возвращает строго один JSON — он приходит распарсенным в поле json.
input | string | пользовательская часть (или messages) |
messages | [{role,content}] | OpenAI-стиль, вместо input |
json | boolean | true — вернуть распарсенный JSON |
system | string | доп. системная приписка (необязательно) |
maxTokens | number | по умолчанию 1500 |
Ответ (при json:true) — схема Аси, не OpenAI: текст в output, разобранный объект в json.
{ "ok": true, "project": "content-box",
"json": { "version": "3.10.4", "tags": ["feature"], "title": "…", "changes": ["…"] },
"output": "<сырой текст модели>" }const r = await fetch("https://api.xn--80a8a2b.online/generate", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.ASYA_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ input: commitsText, json: true }),
});
const data = await r.json();
if (!data.ok) throw new Error(data.error);
if (data.json.skip) return; // день пропущен
const release = data.json; // {version, tags, title, changes, mkt?}/summaryтранскрипт → краткое содержаниеBody: transcript (мин. 30 симв.), необязательно title, source, lang, refresh. Кэш по хэшу. Ответ: { ok, tldr, points[], summary }.
/feedbackобучение на правках редактораBody: after (правильный текст), необязательно before, title, source, kind. Правки подмешиваются в будущие саммари этого проекта.
/knowledge/videoпополнить знание по видеоBody: source (id видео), необязательно title, url, summary, chapters.
/askвопрос по знанию проектаBody: q. Ответ Аси со ссылкой на видео и тайм-код.
Ошибки
Все ответы — JSON с полем ok. При ok:false есть error (код) и часто text (пояснение по-русски). Коды: unauthorized (нет/битый ключ), forbidden (ключ без доступа), bad_json, empty, transcript_too_short.