Справочник HTTP API
Все HTTP-адреса Eggent — какие из них открыты по токену для интеграций, какие требуют входа в веб-версию, и что они принимают и возвращают.
У Eggent два вида HTTP-адресов:
- Внешний API (
/api/external/*) — для интеграций. Авторизация токеномAuthorization: Bearer <токен>. Подробно — в «HTTP API для интеграций». - API веб-версии — всё остальное. Требует входа: cookie сессии, которую ставит
/api/auth/login. Этими адресами пользуется сам интерфейс; для автоматизации лучше внешний API.
Базовый адрес: https://имя.cloud.eggent.ai в облаке или адрес твоего сервера.
Внешний API
| Метод и адрес | Что делает |
|---|---|
POST /api/external/message |
Отправить сообщение, получить ответ (JSON или поток SSE) |
POST /api/external/media-message |
То же с файлом, multipart/form-data |
POST /api/external/telegram/sent |
Для Telegram-бота, который сам отправляет ответы: {"telegramChatId","messageIds","chatId"} — какими сообщениями ушёл ответ из какого чата, чтобы ответ на них продолжил этот чат |
GET /api/external/token, POST /api/external/token |
Посмотреть или выпустить токен (нужен вход) |
Служебное
| Метод и адрес | Что делает |
|---|---|
GET /api/health |
Проверка: {"status":"ok","timestamp":"…","version":"0.2.9"}. Без авторизации |
POST /api/auth/login |
Вход: {"username":"…","password":"…"} → cookie сессии |
Проекты
| Метод и адрес | Что делает |
|---|---|
GET /api/projects |
Список проектов |
POST /api/projects |
Создать: {"name","description","instructions"} |
GET, PUT, DELETE /api/projects/:id |
Прочитать, изменить, удалить проект |
GET, PUT /api/projects/:id/context |
Контекст проекта (context.md) |
GET, PUT /api/projects/:id/memory |
Память проекта (memory.md) |
GET, PUT /api/projects/:id/model |
Модель проекта (model.json) |
GET, DELETE /api/projects/:id/skills |
Навыки проекта. DELETE принимает {"name"} и удаляет этот навык вместе с прежними версиями, оставшимися после замены |
POST /api/projects/:id/skills/upload |
Загрузить один навык файлом (multipart-форма: file, и replace=1, чтобы заменить установленный) |
GET, PUT /api/projects/:id/mcp |
MCP-серверы проекта (.mcp.json) |
Для контекста, памяти, навыков и MCP вместо :id можно подставить none — тогда запрос относится к оркестратору. Своей модели у оркестратора нет: он отвечает моделью воркспейса.
Что агент выучил
| Метод и адрес | Что делает |
|---|---|
GET /api/learning |
Заметки, навыки, которые написал агент, и включено ли обучение |
POST /api/learning |
{"enabled":true|false}, либо добавить или убрать одну заметку: {"action":"add","target":"user|notes","content":"…"}, {"action":"remove","target":"user|notes","text":"…"} |
Чаты
| Метод и адрес | Что делает |
|---|---|
POST /api/chat |
Отправить сообщение из интерфейса (поток) |
GET /api/chat/history |
Список чатов или история одного чата |
GET /api/chat/:id/stream |
Подключиться к ответу, который ещё пишется |
POST /api/chat/:id/stop |
Остановить работу в чате |
GET, POST, DELETE /api/chat/files |
Вложения чата |
Файлы проекта
| Метод и адрес | Что делает |
|---|---|
GET /api/files |
Содержимое папки |
GET /api/files/content |
Текст файла |
GET /api/files/download |
Скачать файл. С inline=1 — открыть в браузере в изолированном режиме |
GET /api/files/zip |
Папка (path=) или несколько файлов (повтори path=) одним .zip; check=1 отвечает, что в него войдёт. Выше пределов — отказ 413 |
GET /api/files/stat |
Какие из перечисленных путей ещё существуют |
GET, POST /api/files/telegram |
Достижим ли Telegram; отправить один файл в твой чат |
POST /api/files/upload |
Загрузить файлы и папки, multipart/form-data |
DELETE /api/files |
Удалить файл или папку |
GET, DELETE /api/files/versions |
История файла (project, path) или её удаление |
GET /api/files/versions/content |
Текст версии n |
GET /api/files/versions/download |
Версия n файлом |
POST /api/files/versions/restore |
{ project, path, n, force? } — восстановить версию n новой версией |
GET, POST /api/files/versions/usage |
Сколько занимает история; { "action": "clear", "olderThanDays" } очищает её |
GET /api/files/page-link |
Где показывается страница (project, path, mode=edit|print), на время |
GET /api/files/page-element |
Выбранный на странице блок: название, строки, исходник (sha, el) |
POST /api/files/page-edit |
{ project, path, sha, edits } — слова, изменённые на странице, записываются туда, откуда пришли |
GET /api/files/page-print |
Файл, подготовленный к сохранению в PDF |
Параметры загрузки: project, path, files (можно несколько), relativePaths (куда положить каждый файл, по порядку), directories (пустые папки), conflict — skip (по умолчанию), overwrite или rename. Один запрос — не больше 100 МБ, иначе ответ 413.
curl -X POST https://имя.cloud.eggent.ai/api/files/upload \
-b cookies.txt \
-F "project=my-project" \
-F "path=." \
-F "conflict=rename" \
-F "files=@./notes.md"
Доска задач
Изменения требуют сессии с того же сайта и тела в JSON, как у маршрутов терминала.
| Метод и адрес | Что делает |
|---|---|
GET /api/board |
Все карточки, стоит ли доска, какие карточки сейчас в работе; ?archived=1 — вместе с убранными |
GET /api/board/summary |
Сколько карточек ждут тебя, работают и стоят в очереди |
POST /api/board/cards |
Новая карточка: title, body, projectId, after, review, start |
GET, PATCH, DELETE /api/board/cards/:id |
Одна карточка; PATCH правит её или перемещает: { "move": { "to": "inbox" | "queued" | "done" | "archived" | "unarchived", "position" } } |
POST /api/board/cards/:id/answer |
{ "text" } — ответ на вопрос карточки |
POST /api/board/cards/:id/stop |
Остановить; карточка из очереди возвращается во «Входящие» |
POST /api/board/start-all |
Все карточки «Входящих» (проекта projectId, если указан) — в очередь |
POST /api/board/resume |
Дать доске продолжить после отказа сервиса моделей |
Компания
Только в воркспейсе, который входит в компанию. Записи требуют сессии с того же сайта и JSON в теле.
| Метод и адрес | Что делает |
|---|---|
GET /api/mail/contacts |
Люди компании и непрочитанное |
GET /api/mail/thread |
Переписка с человеком (with, before, limit) |
POST /api/mail/send |
{ to, text, files?, replyTo? } |
POST /api/mail/read |
{ with, upTo } — отметить прочитанным |
POST /api/mail/assign |
{ messageId } — открыть чат с агентом о сообщении |
GET /api/mail/attachments/:id |
Файл из переписки |
GET /api/shares |
Файлы, открытые тебе, и файлы, которые открыл ты |
GET /api/shares/people |
Кому можно открыть файл |
GET /api/shares/file |
Твой файл и кому он открыт (project, path) |
POST /api/shares/share |
{ project, path, people: [{ id, role }] } — переданный список и есть все, кому открыт файл |
GET /api/shares/:id, GET /api/shares/:id/text |
Общий файл: кому открыт и что в нём |
GET, POST /api/shares/:id/content |
Файл; { baseSha, text } меняет его текст поверх этой версии |
POST /api/shares/:id/page-edit |
{ sha, edits } — слова, изменённые на общей странице |
GET, POST /api/shares/:id/comments |
Комментарии; { body, quote?, anchor?, replyTo? } |
POST /api/shares/:id/comments/:comment/resolve, /delete |
Отметить решённым ({ resolved }) или удалить комментарий |
POST /api/shares/:id/stop |
Закрыть доступ |
GET /api/approvals |
Согласования: box=waiting|sent|involved |
GET /api/approvals/file |
Твой файл и его согласование (project, path) |
POST /api/approvals/send |
{ project, path, approvers, note? } — версия, которая в файле сейчас |
GET /api/approvals/:id |
Одно согласование с кругами |
POST /api/approvals/:id/decide |
{ round, decision: "approve" | "reject", comment? } |
POST /api/approvals/:id/cancel |
Снять с согласования |
GET /api/approvals/:id/rounds/:round/file, /text |
Версия круга — файлом или текстом |
Расписания
| Метод и адрес | Что делает |
|---|---|
GET /api/pi-schedules |
Все задачи по расписанию во всех проектах и у оркестратора, с отметкой, на паузе ли задача и почему |
POST /api/pi-schedules |
Изменить одну задачу: {"action": "pause" | "resume" | "retime" | "delete", "jobId": "…"} (для retime ещё schedule) |