Перейти до вмісту

HTTP API ​

JSON через HTTP. Коли задано ROOFTOP_PASSWORD, API власника вимагає HTTP Basic-автентифікації.

Власник ​

МетодШлях
GET/api/stateекспорти, чати, посилання для спільного доступу, відомості про LLM
POST/api/exportsmultipart-завантаження: файли папки з відносними іменами або .zip. Одразу відповідає 202 {"id"} і імпортує у фоні
POST/api/uploadsпочинає пакетне завантаження (його використовує веб-інтерфейс): {"id"}
POST/api/uploads/{id}/filesmultipart-пакет файлів із відносними іменами; повторне надсилання пакета замінює його файли: {"files", "bytes"}
POST/api/uploads/{id}/checkпісля файлів чату, перед медіа: {"bytes"} ще не надіслано → {title, messages, existing, fits, free_bytes, needed_bytes} (уже імпортовано? чи вистачає місця на диску?)
POST/api/uploads/{id}/importімпортує все, що завантажено до цього моменту: 202 {"id"} завдання імпорту
DELETE/api/uploads/{id}скасовує незавершене завантаження (покинуті видаляються через 24 год і під час перезапуску)
POST/api/local/pickлише настільний застосунок: показує системний вибір, {"kind": "folder" | "file"} → {"path"} (null, якщо скасовано)
POST/api/local/importлише настільний застосунок: імпорт із цього комп'ютера, {"paths": […]} (папка, .zip або .txt WhatsApp; файли всередині одного експорту означають його папку) → 202 {"id", "name"} завдання імпорту; джерело копіюється, ніколи не змінюється
GET/api/imports/{id}прогрес завдання імпорту, див. нижче
GET · DELETE/api/exports/{id}подробиці з медіатекою · видалення разом з чатами
POST/api/exports/{id}/describeописує медіатеку
POST/api/chats{export_id, persona, user?, title?, notes?}; без export_id — чат лише з нотаток: persona — його ім'я, user — ваше (типово Me)
GET · PATCH · DELETE/api/chats/{id}стрічка (?limit=) · назва і нотатки · видалення
POST/api/chats/{id}/messages{text?, reply_to?, quote?, sticker_id?, gif_id?}
POST/api/chats/{id}/react{message_id, emoji} ("" видаляє)
POST/api/chats/{id}/voicemultipart file (wav, ogg, mp3, m4a, webm), duration?, reply_to?
POST/api/chats/{id}/respondдозволяє персонажу діяти; повертає повідомлення та дії в порядку
POST/api/chats/{id}/regenerateвидаляє останній хід персонажа і відповідає знову
GET/api/chats/{id}/promptточний {model, messages, tools}
GET · POST/api/chats/{id}/sharesсписок · створити посилання для спільного доступу
PATCH · DELETE/api/shares/{id}змінити (pin: "" прибирає PIN, revoke_sessions) · видалити
DELETE/api/shares/{id}/sessions/{session}завершує одну розмову відвідувача
GET · PUT/api/settingsLLM, MCP і Telegram (telegram: {mode: off|shared|own, token?})
GET · POST/api/mcp · /api/mcp/reconnectстатус MCP · перепідключити
GET · POST/api/telegram · /api/telegram/linkстатус бота і групи · посилання t.me, яке додає бота до групи
GET · PUT/api/sharingспільний доступ через Wi‑Fi та інтернет {lan?, internet?, name?} (інтерфейс власника лише на localhost)
GET/api/qr?text=…QR-код (SVG)

Завдання імпорту ​

GET /api/imports/{id} повертає

json
{"id": "…", "state": "running", "stage": "parsing", "done": 37, "total": 121, "messages": 36000}
  • state: queued (виконується інший імпорт; вони йдуть по одному), running, done або failed.
  • stage: unpacking, reading, parsing (done із total сторінок), hashing і placing (файли), saving.
  • messages: повідомлення, знайдені на цей момент.
  • failed додає error, наприклад no messages.html, result.json or WhatsApp .txt found in the upload.
  • done додає created (false, якщо той самий експорт уже імпортували) і export, підсумок, який також є в /api/state.

Зберігаються останні 16 завершених завдань; невідомий ідентифікатор повертає 404.

Публічні ​

Без пароля, для відвідувачів посилань для спільного доступу:

МетодШлях
GET/s/{name}[/{token}]сторінка відвідувача
GET/api/s/{name}відомості стартової сторінки
POST/api/s/{name}/sessions{pin?, name?} → {token}
GET/api/s/{name}/c/{token}стрічка
POST/api/s/{name}/c/{token}/messages · react · voice · respond · regenerateяк для власника; regenerate і respond без нового повідомлення відвідувача («хай напише перший») — лише там, де посилання має allow_regenerate / allow_nudge (інакше 403)
GET/api/s/{name}/c/{token}/media/{path}медіа, які відвідувач може бачити

Хаб ретрансляції ​

МетодШлях
POST/relay/v1/register{name}, зайняти або перейменувати (Authorization: Bearer <секрет>)
GET/relay/v1/connectWebSocket застосунку
GET/relay/v1/infoвідомості про хаб
*/relay/v1/tg/bot<секрет>/<метод>проксі Bot API спільного бота

Поширюється за ліцензією MIT.