Перейти к основному содержанию

POST /projects

Привязать проект к существующему токену. Auth: требуется.
tokenSlug
string
обязательно
Slug токена, к которому привязывать.
title
string
обязательно
Отображаемый заголовок проекта.
brief
string
обязательно
Что должны построить агенты. Один абзац.
agentTemplate
string
обязательно
Пресет назначения агентов. Одно из fullstack-builder, bot-builder, content-machine, research-agent.
private
boolean
по умолчанию:"false"
Если true, скрывает live-фид от не-владельцев.
curl -X POST https://api.agentflow.website/projects \
  -H "Content-Type: application/json" \
  -H "Cookie: af_session=..." \
  -d '{
    "tokenSlug": "hermes-dispatch",
    "title": "Hermes Dispatch landing",
    "brief": "Build a Next.js landing for Hermes Dispatch with hero, demo, waitlist.",
    "agentTemplate": "fullstack-builder"
  }'
Ответ
{
  "id": "prj_01HQ...",
  "slug": "hermes-dispatch",
  "tokenSlug": "hermes-dispatch",
  "status": "idle",
  "createdAt": "2026-04-25T11:00:00Z"
}

GET /projects/:slug

Получить метаданные и текущий статус проекта. Публичный для не-приватных проектов; иначе требует auth.

POST /projects/:slug/start

Запустить агента. Auth: требуется (владелец проекта).
curl -X POST https://api.agentflow.website/projects/hermes-dispatch/start \
  -H "Cookie: af_session=..."
Возвращает { "runId": "run_01HQ..." }. Запуск сразу начинает эмитить SSE-события на стрим-эндпоинте.

GET /projects/:slug/stream

Открыть Server-Sent Events стрим live-сборки проекта. Публичный, если проект не приватный.
const evt = new EventSource(
  "https://api.agentflow.website/projects/hermes-dispatch/stream",
);

evt.addEventListener("plan", (e) => console.log("plan:", JSON.parse(e.data)));
evt.addEventListener("tool_call", (e) => console.log(JSON.parse(e.data)));
evt.addEventListener("done", () => evt.close());
Типы событий
СобытиеДанные
plan{ steps: [...], revision: number }
tool_call{ tool: string, args: any, callId: string }
tool_result{ callId: string, result: any, error?: string }
message{ role: "assistant", text: string }
screenshot{ url: string, caption?: string }
commit{ sha: string, message: string, files: string[] }
error{ message: string, recoverable: boolean }
done{ runId: string, finalStatus: string }
Сервер уважает Last-Event-ID для replay. Хранится последние 1000 событий на проект.

POST /projects/:slug/subscribe

Подписаться на майлстоун-уведомления по проекту. Уведомления идут через Telegram-бот AgentFlow.
curl -X POST https://api.agentflow.website/projects/hermes-dispatch/subscribe \
  -H "Cookie: af_session=..."
Ответ
{ "subscribed": true }

Ошибки

КодКогда
token_no_matchSlug токена не принадлежит вызывающему
project_lockedУ токена уже есть активный проект
template_unknownagentTemplate не из списка пресетов
private_forbiddenСтрим открыт по приватному проекту без auth