EGGENT docs
Reference

HTTP API reference

Every Eggent HTTP address — which are open to integrations with a token, which need a web sign-in, and what they accept and return.

Eggent has two kinds of HTTP addresses:

  • The external API (/api/external/*) — for integrations. Authorised with a token: Authorization: Bearer <token>. In detail in HTTP API for integrations.
  • The web app API — everything else. Needs a sign-in: the session cookie set by /api/auth/login. The interface itself uses these addresses; for automation, prefer the external API.

Base URL: https://name.cloud.eggent.ai in the cloud, or your server's address.

External API

Method and path What it does
POST /api/external/message Send a message, get an answer (JSON or an SSE stream)
POST /api/external/media-message The same with a file, multipart/form-data
POST /api/external/telegram/sent For a Telegram bot that sends the answers itself: {"telegramChatId","messageIds","chatId"} — which messages carried an answer from which chat, so a reply to them continues that chat
GET /api/external/token, POST /api/external/token See or issue the token (needs a sign-in)

Service

Method and path What it does
GET /api/health Health check: {"status":"ok","timestamp":"…","version":"0.2.9"}. No auth
POST /api/auth/login Sign in: {"username":"…","password":"…"} → session cookie

Projects

Method and path What it does
GET /api/projects List projects
POST /api/projects Create: {"name","description","instructions"}
GET, PUT, DELETE /api/projects/:id Read, change, delete a project
GET, PUT /api/projects/:id/context The project's context (context.md)
GET, PUT /api/projects/:id/memory The project's memory (memory.md)
GET, PUT /api/projects/:id/model The project's model (model.json)
GET, DELETE /api/projects/:id/skills The project's skills. DELETE takes {"name"} and removes that skill, with the earlier versions kept when it was replaced
POST /api/projects/:id/skills/upload Upload one skill as a file (a multipart form: file, and replace=1 to replace an installed one)
GET, PUT /api/projects/:id/mcp The project's MCP servers (.mcp.json)

For context, memory, skills and MCP, use none for :id to address the orchestrator. The orchestrator has no model of its own: it answers with the workspace model.

What the agent has learned

Method and path What it does
GET /api/learning The notes, the skills the agent wrote, and whether learning is on
POST /api/learning {"enabled":true|false}, or add or remove one note: {"action":"add","target":"user|notes","content":"…"}, {"action":"remove","target":"user|notes","text":"…"}

Chats

Method and path What it does
POST /api/chat Send a message from the interface (streaming)
GET /api/chat/history The chat list, or one chat's history
GET /api/chat/:id/stream Attach to an answer that is still being written
POST /api/chat/:id/stop Stop the work in a chat
GET, POST, DELETE /api/chat/files Chat attachments

Project files

Method and path What it does
GET /api/files Folder contents
GET /api/files/content A file's text
GET /api/files/download Download a file. With inline=1, open it in the browser, isolated
GET /api/files/zip A folder (path=) or several files (repeat path=) as one .zip; check=1 answers what it would hold. Refused with 413 above the limits
GET /api/files/stat Which of the listed paths still exist
GET, POST /api/files/telegram Whether Telegram can be reached; send one file to your own chat
POST /api/files/upload Upload files and folders, multipart/form-data
DELETE /api/files Delete a file or folder
GET, DELETE /api/files/versions A file's history (project, path), or delete it
GET /api/files/versions/content The text of version n
GET /api/files/versions/download Version n as a file
POST /api/files/versions/restore { project, path, n, force? } — restore version n as a new version
GET, POST /api/files/versions/usage How much the history takes; { "action": "clear", "olderThanDays" } clears it
GET /api/files/page-link Where a page is shown (project, path, mode=edit|print), for a while
GET /api/files/page-element The block picked on a page: label, lines, source (sha, el)
POST /api/files/page-edit { project, path, sha, edits } — words changed on a page, written where they came from
GET /api/files/page-print A file made ready to save as PDF

Upload parameters: project, path, files (repeatable), relativePaths (where each file goes, by position), directories (empty folders), conflict — skip (default), overwrite or rename. One request carries at most 100 MB, otherwise the answer is 413.

curl -X POST https://name.cloud.eggent.ai/api/files/upload \
  -b cookies.txt \
  -F "project=my-project" \
  -F "path=." \
  -F "conflict=rename" \
  -F "files=@./notes.md"

Task board

Writes need a session from the same site and a JSON body, like the terminal's routes.

Method and path What it does
GET /api/board Every card, whether the board is paused, which cards are being worked on; ?archived=1 includes cards put away
GET /api/board/summary How many cards wait for you, run and are queued
POST /api/board/cards A new card: title, body, projectId, after, review, start
GET, PATCH, DELETE /api/board/cards/:id One card; PATCH edits it or moves it with { "move": { "to": "inbox" | "queued" | "done" | "archived" | "unarchived", "position" } }
POST /api/board/cards/:id/answer { "text" } — the answer to the card's question
POST /api/board/cards/:id/stop Stop it; a queued card goes back to the Inbox
POST /api/board/start-all Every Inbox card (of projectId, when given) into the queue
POST /api/board/resume Let the board go on after the model service refused

Company

Only in a workspace that belongs to a company. Writes need a session from the same site and a JSON body.

Method and path What it does
GET /api/mail/contacts The company's people and unread messages
GET /api/mail/thread The thread with a person (with, before, limit)
POST /api/mail/send { to, text, files?, replyTo? }
POST /api/mail/read { with, upTo } — mark read
POST /api/mail/assign { messageId } — open a chat with the agent about a message
GET /api/mail/attachments/:id A file from a thread
GET /api/shares Files shared with you and files you shared
GET /api/shares/people Who a file can be shared with
GET /api/shares/file One of your files and who it is shared with (project, path)
POST /api/shares/share { project, path, people: [{ id, role }] } — the list given is everybody who has it
GET /api/shares/:id, GET /api/shares/:id/text A shared file: who has it, and what it holds
GET, POST /api/shares/:id/content The file; { baseSha, text } changes its text onto that version
POST /api/shares/:id/page-edit { sha, edits } — words changed on a shared page
GET, POST /api/shares/:id/comments Comments; { body, quote?, anchor?, replyTo? }
POST /api/shares/:id/comments/:comment/resolve, /delete Resolve ({ resolved }) or delete a comment
POST /api/shares/:id/stop Stop sharing
GET /api/approvals Approvals: box=waiting|sent|involved
GET /api/approvals/file One of your files and its approval (project, path)
POST /api/approvals/send { project, path, approvers, note? } — the version the file holds now
GET /api/approvals/:id One approval with its rounds
POST /api/approvals/:id/decide { round, decision: "approve" | "reject", comment? }
POST /api/approvals/:id/cancel Withdraw
GET /api/approvals/:id/rounds/:round/file, /text A round's version, as a file or as text

Schedules

Method and path What it does
GET /api/pi-schedules Every scheduled task across the projects and the orchestrator, with whether and why one is paused
POST /api/pi-schedules Change one task: {"action": "pause" | "resume" | "retime" | "delete", "jobId": "…"} (retime also takes schedule)