Skip to content

Flightdeck — REST API Reference ​

Auto-Generated

This file is auto-generated by scripts/generate-api-docs.mjs. Do not edit manually. Run npm run docs:generate-api to regenerate.

Base URL: http://localhost:3001/apiAuthentication: Bearer token (auto-generated on server start) Content-Type: application/json for all request bodies Timestamps: ISO 8601 throughout (e.g. 2025-03-01T10:30:00Z)

Table of Contents ​


Agent Management ​

GET /agents ​

List agents

NameInRequired
projectIdqueryno
sessionIdqueryno

POST /agents ​

Create agent

Rate limited: spawnLimiter, body validation

NameInRequired
roleIdbody—
taskbody—
modelbody—
providerbody—
sessionIdbody—

Status codes: 400 · 201


DELETE /agents/:id ​

Delete agent

NameInRequired
idpathyes

POST /agents/:id/terminate ​

terminate

NameInRequired
idpathyes

POST /agents/:id/interrupt ​

interrupt

NameInRequired
idpathyes

Status codes: 404


POST /agents/:id/restart ​

restart

NameInRequired
idpathyes

Status codes: 404 · 201


POST /agents/:id/compact ​

compact

NameInRequired
idpathyes

Status codes: 404 · 500 · 201


GET /agents/:id/plan ​

NameInRequired
idpathyes

Status codes: 404


GET /agents/:id/messages ​

NameInRequired
idpathyes
limitqueryno
includeSystemqueryno

POST /agents/:id/input ​

input

Rate limited: body validation

NameInRequired
idpathyes
textbody—

Status codes: 404


POST /agents/:id/message ​

message

Rate limited: messageLimiter, body validation

NameInRequired
idpathyes
textbody—
modebody—
attachmentsbody—

Status codes: 404


PATCH /agents/:id ​

Update agent

NameInRequired
idpathyes
modelbody—

Status codes: 404


GET /agents/:id/queue ​

NameInRequired
idpathyes

Status codes: 404


DELETE /agents/:id/queue/:index ​

Delete agent

NameInRequired
idpathyes
indexpathyes

Status codes: 404 · 400


POST /agents/:id/queue/reorder ​

reorder

NameInRequired
idpathyes
frombody—
tobody—

Status codes: 404 · 400


GET /agents/:id/focus ​

NameInRequired
idpathyes
activityLimitqueryno
outputLimitqueryno

Status codes: 404


GET /agents/:id/tasks ​

NameInRequired
idpathyes

Status codes: 500


Lead Agent ​

POST /lead/start ​

start

Rate limited: spawnLimiter

NameInRequired
taskbody—
namebody—
modelbody—
cwdbody—
sessionId:body—
projectIdbody—

Status codes: 500


GET /lead ​

List lead

NameInRequired
projectIdqueryno

GET /lead/:id ​

Get lead by ID

NameInRequired
idpathyes

Status codes: 404


POST /lead/:id/message ​

message

Rate limited: messageLimiter, body validation

NameInRequired
idpathyes
textbody—
modebody—
attachmentsbody—

Status codes: 404


PATCH /lead/:id ​

Update lead

NameInRequired
idpathyes
cwdbody—
projectNamebody—

Status codes: 404


GET /lead/:id/decisions ​

NameInRequired
idpathyes

GET /lead/:id/groups ​

NameInRequired
idpathyes

POST /lead/:id/groups ​

groups

NameInRequired
idpathyes
namebody—
memberIdsbody—

Status codes: 400 · 201


GET /lead/:id/groups/:name/messages ​

NameInRequired
idpathyes
namepathyes
limitqueryno

POST /lead/:id/groups/:name/messages ​

messages

NameInRequired
idpathyes
namepathyes
contentbody—

Status codes: 400 · 404 · 500 · 201


POST /lead/:id/groups/:name/messages/:messageId/reactions ​

reactions

NameInRequired
idpathyes
namepathyes
messageIdpathyes
emojibody—

Status codes: 400


DELETE /lead/:id/groups/:name/messages/:messageId/reactions/:emoji ​

Delete lead

NameInRequired
idpathyes
namepathyes
messageIdpathyes
emojipathyes

GET /lead/:id/delegations ​

NameInRequired
idpathyes

GET /lead/:id/dag ​

NameInRequired
idpathyes
includeArchivedqueryno

Status codes: 404


GET /costs/by-agent ​

List costs

NameInRequired
projectIdqueryno

Status codes: 500


GET /costs/by-task ​

List costs

NameInRequired
leadIdqueryno
projectIdqueryno

Status codes: 500


GET /costs/agent/:agentId ​

NameInRequired
agentIdpathyes

Status codes: 500


GET /costs/by-project ​

List costs

Status codes: 500


GET /costs/by-session ​

List costs

NameInRequired
projectIdqueryno

Status codes: 400 · 500


GET /timers ​

List timers


POST /timers ​

Create timer

NameInRequired
agentIdbody—
labelbody—
messagebody—
delaySecondsbody—
repeatbody—
projectIdbody—

Status codes: 503 · 400 · 404 · 403 · 429 · 201


DELETE /timers/:timerId ​

Delete timer

NameInRequired
timerIdpathyes

Status codes: 404 · 409 · 500


GET /lead/:id/progress ​

NameInRequired
idpathyes

Projects ​

GET /projects ​

List projects

NameInRequired
statusqueryno

GET /projects/:id ​

Get project by ID

NameInRequired
idpathyes

Status codes: 404


GET /projects/:id/sessions/detail ​

NameInRequired
idpathyes

Status codes: 404


GET /projects/:id/dag ​

NameInRequired
idpathyes
includeArchivedqueryno

PATCH /projects/:id/tasks/:taskId/status ​

Update project

NameInRequired
idpathyes
taskIdpathyes
statusbody—

Status codes: 400 · 500 · 404


PATCH /projects/:id/tasks/:taskId/priority ​

Update project

NameInRequired
idpathyes
taskIdpathyes
prioritybody—

Status codes: 400 · 500 · 404


POST /projects/:id/tasks ​

tasks

NameInRequired
idpathyes
titlebody—
descriptionbody—
rolebody—
prioritybody—
dependsOnbody—
filesbody—

Status codes: 400 · 500


GET /projects/:id/groups ​

NameInRequired
idpathyes

GET /projects/:id/groups/:name/messages ​

NameInRequired
idpathyes
namepathyes
limitqueryno

GET /projects/:id/messages ​

NameInRequired
idpathyes
limitqueryno

POST /projects ​

Create project

NameInRequired
namebody—
descriptionbody—
cwdbody—

Status codes: 500 · 400 · 201


POST /projects/import ​

import

NameInRequired
cwdbody—
namebody—

Status codes: 500 · 400 · 409


PATCH /projects/:id ​

Update project

NameInRequired
idpathyes
namebody—
descriptionbody—
cwdbody—
statusbody—
oversightLevelbody—

Status codes: 500 · 404 · 400


GET /projects/:id/briefing ​

NameInRequired
idpathyes

Status codes: 500 · 404


POST /projects/:id/resume ​

resume

Rate limited: spawnLimiter

NameInRequired
idpathyes
task:body—
modelbody—
freshStartbody—
resumeAllbody—
agents:body—
sessionId:body—

Status codes: 500 · 404 · 409


POST /projects/:id/stop ​

stop

NameInRequired
idpathyes

Status codes: 500 · 404


DELETE /projects/:id ​

Delete project

NameInRequired
idpathyes

Status codes: 500 · 404 · 400


GET /models ​

List models


GET /projects/:id/model-config ​

NameInRequired
idpathyes

Status codes: 500 · 404


PUT /projects/:id/model-config ​

Set model-config

NameInRequired
idpathyes
configbody—

Status codes: 500 · 404 · 400


GET /projects/:id/files ​

NameInRequired
idpathyes
pathqueryno

Status codes: 404 · 400 · 403


GET /projects/:id/file-contents ​

NameInRequired
idpathyes
pathqueryno

Status codes: 404 · 400 · 403 · 413


GET /projects/:id/artifacts ​

NameInRequired
idpathyes

Status codes: 404


GET /projects/:id/artifact-contents ​

NameInRequired
idpathyes
pathqueryno

Status codes: 404 · 400 · 403 · 413


GET /projects/:id/session-artifact ​

NameInRequired
idpathyes
agentIdqueryno
pathqueryno

Status codes: 404 · 400 · 403


Tasks ​

GET /tasks ​

List tasks

NameInRequired
scopequeryno
projectIdqueryno
leadIdqueryno
statusqueryno
rolequeryno
assignedAgentIdqueryno
includeArchivedqueryno
limitqueryno
offsetqueryno

Status codes: 400


PATCH /tasks/:leadId/:taskId/unarchive ​

Update task

NameInRequired
leadIdpathyes
taskIdpathyes

Status codes: 404


GET /attention ​

List attention

NameInRequired
scopequeryno
projectIdqueryno

Decisions ​

GET /decisions ​

List decisions

NameInRequired
needs_confirmationqueryno
projectIdqueryno
groupedqueryno

POST /decisions/:id/confirm ​

confirm

NameInRequired
idpathyes
reasonbody—

Status codes: 404


POST /decisions/:id/reject ​

reject

NameInRequired
idpathyes
reasonbody—

Status codes: 404


POST /decisions/:id/dismiss ​

dismiss

NameInRequired
idpathyes

Status codes: 404


POST /decisions/:id/respond ​

respond

NameInRequired
idpathyes
messagebody—

Status codes: 400 · 404


POST /decisions/:id/feedback ​

feedback

NameInRequired
idpathyes
messagebody—

Status codes: 400 · 404


POST /decisions/batch ​

batch

NameInRequired
idsbody—
actionbody—
reasonbody—

Status codes: 400


POST /decisions/pause-timer ​

pause timer

NameInRequired
pausedbody—

Status codes: 400


Coordination ​

GET /coordination/status ​

List coordination

NameInRequired
projectIdqueryno

GET /coordination/locks ​

List coordination

NameInRequired
projectIdqueryno

POST /coordination/locks ​

locks

Rate limited: body validation

NameInRequired
agentIdbody—
filePathbody—
reasonbody—

Status codes: 400 · 201 · 409


DELETE /coordination/locks/:filePath ​

Delete coordination

NameInRequired
filePathpathyes
agentIdqueryno

Status codes: 400


GET /coordination/activity ​

List coordination

NameInRequired
agentIdqueryno
typequeryno
limitqueryno
sincequeryno
projectIdqueryno

GET /coordination/summary ​

List coordination

NameInRequired
projectIdqueryno

GET /coordination/timeline ​

List coordination

NameInRequired
sincequeryno
leadIdqueryno

GET /coordination/timeline/stream ​

List coordination

NameInRequired
leadIdqueryno
lastEventIdqueryno

Status codes: 400


Crews ​

GET /crews ​

List crews

Rate limited: readLimiter (60 s, max 60)

NameInRequired
projectIdqueryno

Status codes: 503 · 500


GET /crews/summary ​

List crews

Rate limited: readLimiter (60 s, max 60)

NameInRequired
projectIdqueryno

Status codes: 503


GET /crews/:crewId ​

Get crew by ID

Rate limited: readLimiter (60 s, max 60)

NameInRequired
crewIdpathyes

Status codes: 503 · 404 · 500


GET /crews/:crewId/agents ​

Rate limited: readLimiter (60 s, max 60)

NameInRequired
crewIdpathyes
statusqueryno
projectIdqueryno

Status codes: 503 · 400


GET /crews/:crewId/agents/:agentId/profile ​

Rate limited: readLimiter (60 s, max 60)

NameInRequired
crewIdpathyes
agentIdpathyes

Status codes: 503 · 400 · 404


GET /crews/:crewId/health ​

Rate limited: readLimiter (60 s, max 60)

NameInRequired
crewIdpathyes

Status codes: 503 · 404 · 500


POST /crews/:crewId/agents/:agentId/clone ​

clone

Rate limited: writeLimiter (60 s, max 10)

NameInRequired
crewIdpathyes
agentIdpathyes

Status codes: 503 · 404 · 500 · 201


DELETE /crews/:leadId ​

Delete crew

Rate limited: writeLimiter (60 s, max 10)

NameInRequired
leadIdpathyes

Status codes: 503 · 404 · 409


DELETE /roster/:agentId ​

Delete roster

Rate limited: writeLimiter (60 s, max 10)

NameInRequired
agentIdpathyes

Status codes: 503 · 400 · 404 · 409


Knowledge ​

GET /projects/:id/knowledge ​

Rate limited: knowledgeReadLimiter (60 s, max 120)

NameInRequired
idpathyes
categoryqueryno

Status codes: 503 · 400


Rate limited: knowledgeSearchLimiter (60 s, max 60)

NameInRequired
idpathyes
qqueryno
categoryqueryno
limitqueryno

Status codes: 400 · 503


GET /projects/:id/knowledge/stats ​

Rate limited: knowledgeReadLimiter (60 s, max 120)

NameInRequired
idpathyes

Status codes: 503


GET /projects/:id/knowledge/training ​

Rate limited: knowledgeReadLimiter (60 s, max 120)

NameInRequired
idpathyes

Status codes: 503


POST /projects/:id/knowledge ​

knowledge

Rate limited: knowledgeWriteLimiter (60 s, max 30)

NameInRequired
idpathyes
categorybody—
keybody—
contentbody—
metadatabody—

Status codes: 503 · 400 · 403 · 201


DELETE /projects/:id/knowledge/:category/:key ​

Delete project

Rate limited: knowledgeWriteLimiter (60 s, max 30)

NameInRequired
idpathyes
categorypathyes
keypathyes

Status codes: 503 · 400 · 404


Communications ​

GET /comms/:leadId/flows ​

NameInRequired
leadIdpathyes
sincequeryno
typesqueryno

GET /comms/:leadId/stats ​

NameInRequired
leadIdpathyes

Analytics ​

GET /analytics ​

List analytics

NameInRequired
projectIdqueryno

Status codes: 500


GET /analytics/sessions ​

List analytics

NameInRequired
projectIdqueryno

Status codes: 500


GET /analytics/compare ​

List analytics

NameInRequired
sessionsqueryno

Status codes: 400 · 500


Configuration & System ​

GET /config ​

List config


GET /config/yaml ​

List config

Status codes: 503


PATCH /config ​

Rate limited: body validation


POST /system/pause ​

pause


POST /system/resume ​

resume


GET /system/status ​

List system


GET /budget ​

List budget

NameInRequired
projectIdqueryno

POST /budget ​

Create budget

NameInRequired
limitbody—
thresholdsbody—
projectIdbody—

Status codes: 400


POST /budget/check ​

check

NameInRequired
projectIdqueryno

Provider Settings ​

GET /settings/providers ​

List settings


GET /settings/providers/status ​

List settings

Status codes: 500


GET /settings/providers/:provider ​

NameInRequired
providerpathyes

Status codes: 404 · 500


POST /settings/providers/:provider/test ​

test

NameInRequired
providerpathyes

Status codes: 404 · 500


PUT /settings/providers/:provider ​

Set :provider

NameInRequired
providerpathyes
enabledbody—
modelPreferencesbody—

Status codes: 404 · 500


PUT /settings/provider ​

Set provider

NameInRequired
idbody—

Status codes: 400


GET /settings/provider-ranking ​

List settings


PUT /settings/provider-ranking ​

Set provider-ranking

NameInRequired
rankingbody—

Status codes: 400


Roles ​

GET /roles ​

List roles


POST /roles ​

Create role

Rate limited: body validation

Status codes: 201


DELETE /roles/:id ​

Delete role

NameInRequired
idpathyes

POST /roles/test ​

test

NameInRequired
rolebody—
messagebody—

Status codes: 400


List search

NameInRequired
qqueryno
limitqueryno

Status codes: 400


Data Management ​

GET /data/stats ​

List data

Status codes: 500


POST /data/cleanup ​

cleanup

NameInRequired
olderThanDaysbody—
dryRunbody—

Status codes: 400


Database Browser ​

GET /db/memory ​

List db


DELETE /db/memory/:id ​

Delete db

NameInRequired
idpathyes

Status codes: 400


GET /db/conversations ​

List db


GET /db/conversations/:id/messages ​

NameInRequired
idpathyes
limitqueryno

DELETE /db/conversations/:id ​

Delete db

NameInRequired
idpathyes

GET /db/decisions ​

List db


DELETE /db/decisions/:id ​

Delete db

NameInRequired
idpathyes

GET /db/activity ​

List db

NameInRequired
limitqueryno

DELETE /db/activity/:id ​

Delete db

NameInRequired
idpathyes

Status codes: 400


GET /db/stats ​

List db


Diff ​

GET /agents/:id/diff ​

NameInRequired
idpathyes
cachedqueryno

Status codes: 404 · 500


GET /agents/:id/diff/summary ​

NameInRequired
idpathyes

Status codes: 404 · 500


Integrations ​

GET /integrations/status ​

List integrations

Status codes: 500


POST /integrations/sessions ​

sessions

NameInRequired
chatIdbody—
platformbody—
projectIdbody—
boundBybody—

Status codes: 503 · 400 · 404 · 202 · 500


POST /integrations/sessions/verify ​

verify

NameInRequired
chatIdbody—
codebody—

Status codes: 503 · 400 · 403 · 201 · 429 · 500


GET /integrations/sessions ​

List integrations

Status codes: 500


POST /integrations/subscriptions ​

subscriptions

NameInRequired
chatIdbody—
projectIdbody—
categoriesbody—

Status codes: 503 · 400 · 403 · 201 · 500


DELETE /integrations/subscriptions ​

NameInRequired
chatIdbody—
projectIdbody—

Status codes: 503 · 400 · 204 · 500


GET /integrations/subscriptions ​

List integrations

Status codes: 500


POST /integrations/test-message ​

test message

NameInRequired
platformbody—
chatIdbody—
textbody—

Status codes: 503 · 400 · 403 · 404 · 500


PATCH /integrations/telegram ​

NameInRequired
enabledbody—
botTokenbody—
allowedChatIdsbody—
rateLimitPerMinutebody—
notificationsbody—

Status codes: 503 · 400 · 500


Natural Language Commands ​

GET /nl/commands ​

List nl


POST /nl/preview ​

preview

NameInRequired
commandbody—
leadIdbody—

Status codes: 400 · 404 · 500


POST /nl/execute ​

execute

NameInRequired
commandbody—
leadIdbody—

Status codes: 400 · 404 · 500


POST /nl/undo ​

undo

NameInRequired
commandIdbody—

Status codes: 400 · 500


GET /nl/suggestions ​

List nl

NameInRequired
leadIdqueryno

Status codes: 400 · 500


GET /onboarding/status ​

List onboarding

NameInRequired
userIdqueryno

Status codes: 500


POST /onboarding/progress ​

progress

Status codes: 500


Predictions ​

GET /predictions ​

List predictions


GET /predictions/history ​

List predictions


GET /predictions/accuracy ​

List predictions


GET /predictions/config ​

List predictions


PUT /predictions/config ​

Set config

Status codes: 400


POST /predictions/:id/dismiss ​

dismiss

NameInRequired
idpathyes

Status codes: 404


POST /predictions/:id/resolve ​

resolve

NameInRequired
idpathyes
outcomebody—

Status codes: 400 · 404


POST /predictions/generate ​

generate

NameInRequired
agentsbody—
budgetbody—

Status codes: 400 · 500


Session Replay ​

GET /replay/:leadId/state ​

NameInRequired
leadIdpathyes
atqueryno

Status codes: 503 · 400 · 500


GET /replay/:leadId/events ​

NameInRequired
leadIdpathyes
fromqueryno
toqueryno
limitqueryno
typesqueryno

Status codes: 503 · 400 · 500


GET /replay/:leadId/keyframes ​

NameInRequired
leadIdpathyes

Status codes: 503 · 500


POST /replay/:leadId/share ​

share

NameInRequired
leadIdpathyes
expiresInHoursbody—
labelbody—

Status codes: 201 · 500


GET /replay/:leadId/shares ​

NameInRequired
leadIdpathyes

DELETE /shared/:token ​

Delete shared

NameInRequired
tokenpathyes

Status codes: 404


GET /shared/:token ​

Get shared by ID

NameInRequired
tokenpathyes

Status codes: 404 · 503 · 500


GET /shared/:token/state ​

NameInRequired
tokenpathyes
atqueryno

Status codes: 404 · 400 · 503 · 500


Services & Coordination (extended) ​

GET /coordination/alerts ​

List coordination


GET /coordination/eager-schedule ​

List coordination


GET /coordination/capabilities ​

List coordination

NameInRequired
leadIdqueryno
filequeryno
technologyqueryno
keywordqueryno
domainqueryno
availableOnlyqueryno

Status codes: 400


GET /coordination/match-agent ​

List coordination

NameInRequired
leadIdqueryno
taskqueryno
rolequeryno
filequeryno
techqueryno
keywordqueryno
preferIdlequeryno

Status codes: 400


GET /coordination/retros/:leadId ​

NameInRequired
leadIdpathyes

POST /coordination/retros/:leadId ​

NameInRequired
leadIdpathyes

Status codes: 503


GET /export/:leadId ​

Get export by ID

NameInRequired
leadIdpathyes

Status codes: 503 · 500


GET /coordination/file-impact ​

List coordination

NameInRequired
filequeryno

Status codes: 400


GET /coordination/retries ​

List coordination


GET /coordination/crash-reports ​

List coordination

NameInRequired
agentIdqueryno

GET /webhooks ​

List webhooks


POST /webhooks ​

Create webhook

NameInRequired
urlbody—
eventsbody—
secretbody—
enabledbody—

Status codes: 503 · 400 · 201


DELETE /webhooks/:id ​

Delete webhook

NameInRequired
idpathyes

Status codes: 503


GET /webhooks/:id/deliveries ​

NameInRequired
idpathyes

GET /coordination/templates ​

List coordination


POST /coordination/decompose ​

decompose

NameInRequired
taskbody—

Status codes: 503 · 400


GET /coordination/scorecards ​

List coordination

NameInRequired
leadIdqueryno

Status codes: 400


GET /coordination/scorecards/:agentId ​

NameInRequired
agentIdpathyes

GET /coordination/leaderboard ​

List coordination

NameInRequired
leadIdqueryno

Status codes: 400


GET /search ​

List search

NameInRequired
qqueryno
typesqueryno
agentIdqueryno
leadIdqueryno
sincequeryno
limitqueryno

Status codes: 400


GET /coordination/decisions ​

List coordination

NameInRequired
statusqueryno
tagqueryno
sincequeryno

GET /coordination/decisions/tags ​

List coordination


List coordination

NameInRequired
qqueryno

Status codes: 400


GET /coordination/decisions/:id ​

NameInRequired
idpathyes

Status codes: 404


GET /coordination/coverage ​

List coordination


GET /coordination/complexity ​

List coordination


GET /coordination/dependencies ​

List coordination


GET /notifications ​

List notifications

NameInRequired
unreadOnlyqueryno
categoryqueryno
limitqueryno

PUT /notifications/read-all ​

Set read-all


PUT /notifications/:id/read ​

Set read

NameInRequired
idpathyes

Status codes: 404


GET /notifications/preferences ​

List notifications

NameInRequired
userIdqueryno

PUT /notifications/preferences ​

Set preferences

Status codes: 503


GET /coordination/escalations ​

List coordination

NameInRequired
allqueryno

PUT /coordination/escalations/:id/resolve ​

Set resolve

NameInRequired
idpathyes

Status codes: 404


GET /coordination/model-selector ​

List coordination


GET /coordination/parallel-analysis ​

List coordination


GET /reports/session ​

List reports

NameInRequired
formatqueryno
leadIdqueryno
projectIdqueryno

List coordination

NameInRequired
keywordqueryno

Status codes: 503 · 400


GET /coordination/project-templates ​

List coordination

Status codes: 503


GET /coordination/project-templates/:id ​

NameInRequired
idpathyes

Status codes: 503 · 404


List coordination

NameInRequired
qqueryno

Status codes: 503 · 400


List coordination

NameInRequired
limitqueryno

Status codes: 503


GET /coordination/knowledge ​

List coordination

NameInRequired
projectIdqueryno
categoryqueryno
tagqueryno

Status codes: 503


POST /coordination/knowledge ​

knowledge

NameInRequired
projectIdbody—
categorybody—
titlebody—
contentbody—
tagsbody—

Status codes: 503 · 400 · 201


Summary & Catch-up ​

GET /summary/:leadId/since ​

NameInRequired
leadIdpathyes
tqueryno

Status codes: 400 · 500


GET /catchup/:leadId ​

Get catchup by ID

NameInRequired
leadIdpathyes
sincequeryno
tqueryno

Status codes: 400 · 500


File Browser ​

GET /browse ​

List browse

NameInRequired
pathqueryno

Status codes: 400 · 403


219 endpoints across 25 domains. Generated from packages/server/src/routes/.

Documentation generated by AI

Documentation generated by AI