Skip to content

Bridge REST API Reference ​

The Familiars backend is a single-process FastAPI bridge, listening on 127.0.0.1:18711 (HTTPS + HTTP/2) by default. 60+ route files, 500+ endpoints. This document is organized by route file; each endpoint lists its HTTP method, path, description, request body, and response body.

Source: src/bridge/routes/ + src/api/v1/endpoints/communication.py.


0. Transport & Authentication ​

Transport ​

  • Default: HTTPS + HTTP/2 (hypercorn + self-signed cert workspace/.bridge.crt)
  • Fallback: FAMILIARS_HTTP_INSECURE=1 → plain HTTP + uvicorn
  • Port: 18711 by default. If occupied, Electron automatically picks a free port and writes it to workspace/.bridge.port

Authentication ​

  • All endpoints except /health, /api/auth/*, /api/broker_app/*, /api/demo/*, /api/chat/* require the X-Bridge-Token header
  • The token is also accepted via the ?token=... query parameter (for SSE / WebSocket / <img src> scenarios)
  • BridgeTokenMiddleware validates globally

SSE ​

  • Chat streams, status streams, reminder streams, and asset job streams return text/event-stream
  • HTTP/2 multiplexing avoids Chromium's 6-socket-per-host HTTP/1.1 limit

curl Examples ​

bash
# 获取 token
TOKEN=$(cat workspace/.bridge_token)

# 列出 agent
curl -k -H "X-Bridge-Token: $TOKEN" https://127.0.0.1:18711/api/agents

# SSE 流式对话
curl -k -N -H "X-Bridge-Token: $TOKEN" \
  "https://127.0.0.1:18711/api/chat/stream?prompt=你好&agent_id=1"

# 创建待办
curl -k -X POST -H "X-Bridge-Token: $TOKEN" -H "Content-Type: application/json" \
  -d '{"title":"买牛奶","deadline":"2026-07-05T18:00"}' \
  https://127.0.0.1:18711/api/todos

1. chat.py — Chat ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/chat/inflightGet currently in-flight streams-{slots: [{agent_id, dialogue_id, fingerprint}]}
POST/chat/sendSend a message, synchronously get the full reply{prompt, dialogue_id?, parent_id?, type?, agent_id?}{type, content, node_id, metadata}
GET/chat/streamSSE streaming replyquery: prompt, dialogue_id, parent_id, agent_id, type, model, regen_q, resume_a, call_modeSSE: progress / result / error events
GET/chat/recipe_dialogue_idLook up recipe dialogue mappingquery: recipe_id{dialogue_id}
POST/translateTranslate text (preserving code/URLs){text, target?}{translated}
GET/modelsList models available in the @-picker-[{id, name, ...}]
GET/chat/generate/streamLegacy generation SSE (Generation.generate)query: prompt, agent_idSSE stream

2. agents.py — Agent Lifecycle ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/agentsList all agents (including the manager)-[{id, name, color, avatar_url, portrait_url, ...}]
GET/agents/{agent_id}/dialogue_treeGet an agent's dialogue tree-Tree-structure JSON
POST/agentsRegister an existing agent idquery: agent_id{ok, agent_id}
POST/agents/temporaryCreate a temporary agentJSON body{agent_id}
GET/agents/create/streamAgent creation wizard SSEquery: name, identity, personality, appearance, voice, need_figure, need_audio, ...SSE progress events
DELETE/agents/{agent_id}Delete an agent-{ok}
POST/agents/{agent_id}/release-memoryRelease agent memory-{ok}
GET/agents/{agent_id}/greetingDownload the greeting video-Video file
POST/agents/{agent_id}/greeting/playedMark greeting as played-{ok}
GET/agents/{agent_id}/pending_cgPending CG-CG status
GET/agents/diagnose-dirsDiagnose orphan/duplicate agent directories-{orphan_dirs, duplicates}
GET/agents/{agent_id}/avatarGet avatar-PNG image
GET/agents/{agent_id}/portraitGet portrait-Image/video
GET/agents/{agent_id}/client_portraits/{client_name}Client-customized portrait-Image
GET/agents/{agent_id}/figure_rgbaFull-body transparent-background portrait-PNG
GET/agents/{agent_id}/bgGet background image-Image
GET/agents/{agent_id}/bust_loopBust loop animation-WebM/WebP
GET/agents/{agent_id}/bust_metaBust animation metadata-{duration, fps, ...}
GET/agents/{agent_id}/theme/{element}Theme element resourceelement: bubble/chat_bg/dock_bg/selectedPNG
GET/agents/{agent_id}/theme/metaTheme metadata-{text_color_hint, bubble_text_color_hint, ...}
GET/agents/{agent_id}/skills/{skill_id}/cgSkill CG asset-Image
GET/manager/entry-image/{key}Manager entry imagekeyImage

3. tree.py — Dialogue Tree ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/tree/{agent_id}/{dialogue_id}Serialize the whole tree-{roots, nodes}
GET/tree/{agent_id}/{dialogue_id}/querySemantic node searchquery: text, k?[{node, score}]
GET/tree/{agent_id}/{dialogue_id}/node/{node_id}Get a single node-{id, title, content, node_type, parent, children, metadata, ...}
GET/tree/{agent_id}/{dialogue_id}/path/{node_id}Path from root to node-[{id, content, node_type, ...}]
DELETE/tree/{agent_id}/{dialogue_id}/node/{node_id}Delete subtree-{ok, removed, roots, nodes}
POST/tree/{agent_id}/{dialogue_id}/moveMove subtree{node_id, new_parent_id?}{ok}
PATCH/tree/{agent_id}/{dialogue_id}/node/{node_id}Edit node text{content}{ok}

4. todo.py — Todos ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/todosList todosquery: open_only?[{id, title, content, deadline, completed, ...}]
POST/todosCreate todo{title, content?, deadline?, emergency_level?, needs_reminder?, remind_at?, frequency?}{id, ...}
DELETE/todos/{todo_id}Delete todo-{ok}
PATCH/todos/{todo_id}Update todo{title?, content?, deadline?, emergency_level?}{ok}
POST/todos/{todo_id}/completeComplete todo-{ok}
POST/todos/{todo_id}/uncompleteReopen-{ok}

5. schedule.py — Schedules ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/schedulesList schedulesquery: agent_id?[{id, title, scheduled_time, ...}]
POST/schedulesCreate schedule{title, content?, scheduled_time, emergency_level?, frequency?, kind?, needs_reminder?, remind_at?}{id, ...}
DELETE/schedules/{schedule_id}Delete schedule-{ok}
POST/schedules/{schedule_id}/completeComplete-{ok}
POST/schedules/{schedule_id}/uncompleteReopen-{ok}

6. cron.py — Cron Jobs ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/cron-jobsList cron jobsquery: agent_id?, include_system?[{name, cron, task, agent_id, ...}]
POST/cron-jobsCreate cron job{name, cron, task, agent_id, action?, recurring?}{name, ...}
PATCH/cron-jobs/{name}Update{name?, cron?, task?, action?, recurring?, agent_id?}{ok}
DELETE/cron-jobs/{name}Delete-{ok}
GET/cron-jobs/{name}/runsRecent run recordsquery: limit?[{ts, status, output}]
POST/cron-jobs/{name}/run-nowRun now-{ok}
GET/cron-jobs/{name}/diagnosticsDiagnostics-Diagnostics JSON
GET/cron/scripts/previewScript preview-Script list

7. reminders.py — Reminders ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/reminders/recentRecent reminder eventsquery: since_ts?, limit?[{kind, subject_id, ts, ...}]
GET/reminders/streamSSE reminder streamquery: start_ts?SSE event stream
POST/reminders/{kind}/{subject_id}/snoozeSnooze{minutes?}{ok}
POST/reminders/{kind}/{subject_id}/dismissDismiss-{ok}

8. settings.py — Settings ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/settingsGet global settings-Settings JSON
PUT/settingsUpdate global settingsPartial settings JSON{ok}
GET/agents/{agent_id}/settingsAgent settings-Settings JSON
PUT/agents/{agent_id}/settingsUpdate agent settingsPartial settings JSON{ok}
GET/dialogues/{agent_id}/{dialogue_id}/settingsDialogue settings-Settings JSON
PUT/dialogues/{agent_id}/{dialogue_id}/settingsUpdate dialogue settingsPartial settings JSON{ok}
GET/settings/llmLLM connection info (key masked)-{base_url, api_key: "***", default_model, ...}
GET/settings/update-configUpdate config-Config JSON
PUT/settings/llmUpdate LLM connection{base_url?, api_key?, default_model?, transport_mode?, auto_fallback?}{ok}
GET/settings/modelsList saved models-[{name, url, ...}]
POST/settings/modelsAdd model{name, url, api_key?, ...}{ok}
DELETE/settings/models/{name}Delete model-{ok}
POST/settings/models/{name}/pingTest model connectivity-{ok, latency_ms}

9. auth.py — Authentication ​

Prefix: /api

MethodPathDescriptionRequestResponse
POST/auth/registerRegister local identity{nickname?}{token, ...}
POST/auth/loginLogin (device fingerprint)-{token, ...}

10. user.py — User Profile ​

Prefix: /api/user

MethodPathDescriptionRequestResponse
GET/profileGet profile-{nickname, ...}
PUT/profileUpdate profilePartial profile JSON{ok}
GET/avatarGet avatar-Image file
POST/avatarUpload avatarmultipart: file{ok, url}
POST/introMerge self-introduction into USER.md{text}{ok}

11. background.py — Background Mode ​

Prefix: /api/background

MethodPathDescriptionRequestResponse
GET/stateBackground state-{enabled, autorun_installed}
POST/enableEnable background + install autorun-{ok}
POST/disableDisable background + uninstall autorun-{ok}
POST/quitGracefully stop the bridge-{ok}

12. status.py — Runtime Status ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/statusStatus snapshot-{states: {...}}
GET/status/streamSSE status delta stream-SSE
POST/status/debugManually set a status key{key, label, detail?, level?, clear?}{ok}

13. usage.py — LLM Usage ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/usage/summaryAggregated usagequery: model?{total_tokens, cost, per_model: {...}}

14. memory.py / memory_status.py — Memory ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/memoryMemory/VRAM observability-{rss_gb, vram_gb, dialogues_loaded, ...}
GET/memory/writer-statusMemory writer diagnosticsquery: recent?, agent_id?{status, records: [...]}

15. monitor.py — Message Monitoring ​

Prefix: /api/monitor

MethodPathDescriptionRequestResponse
GET/List listener statuses-[{id, status, ...}]
GET/settingsMonitor settings-Settings JSON
PUT/settingsUpdate monitor settingsSettings JSON{ok}
GET/file-rootsFile root resolution snapshot-{wechat: [...], qq: [...]}
POST/file-roots/refreshForce re-resolution{source, allow_ui_probe?}{ok}
GET/_diagDiagnostics snapshot-{preflight, vram_residents}
POST/{monitor_id}/startStart listener-{ok}
POST/{monitor_id}/stopStop listener-{ok}

16. skills.py — Skills ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/skillsGlobal skill list-[{id, name, ...}]
GET/skills/{skill_id}/sourceGet SKILL.md source-{source}
PUT/skills/{skill_id}/sourceUpdate SKILL.md{source}{ok}
POST/skills/{skill_id}/validateValidate SKILL.md-{ok, errors?}
PATCH/skills/{skill_id}/metaUpdate skill metadata{name?, description?, ...}{ok}
DELETE/skills/{skill_id}Delete skill-{ok}
POST/skills/runs/{run_id}/cancelCancel run-{ok}
POST/agents/{agent_id}/skills/{skill_id}/unscheduleUnschedule-{ok}
GET/skills/runs/activeActive runs-[{run_id, skill_id, ...}]
GET/skills/runs/{run_id}/streamSSE run progress-SSE
GET/agents/{agent_id}/skillsAgent-available skills-[{id, name, ...}]
GET/recipes/{recipe_id}/skillsRecipe-linked skills-[{id, ...}]
GET/recipe_skills/allAll recipe skills-[{...}]
GET/skills/{skill_id}/docRaw SKILL.md-Text
GET/agents/{agent_id}/knowledge-basesAgent knowledge bases-[{id, name, ...}]
POST/agents/{agent_id}/knowledge-basesCreate knowledge base{name, ...}{id}
POST/agents/{agent_id}/knowledge-bases/uploadUpload KB filemultipart{ok}
DELETE/agents/{agent_id}/knowledge-bases/{kb_id}Delete knowledge base-{ok}
GET/agents/{agent_id}/skills/{skill_id}/cg_metaCG metadata-{...}
POST/agents/{agent_id}/skills/{skill_id}/runRun skill (background)-{run_id}
POST/agents/{agent_id}/skills/{skill_id}/run_in_dialogueRun in dialogue{dialogue_id, parent_id?, initial_inputs?}{run_id}
POST/skills/import/folderImport from folderJSON body{ok}
POST/skills/import/zipImport from zipmultipart{ok}
POST/skills/import/textImport from text{text, skill_id?}{ok}

17. skill_forge.py — Skill Forge ​

Prefix: /api/skills/forge

MethodPathDescriptionRequestResponse
POST/from-dialogue/derive_ioDerive I/O from dialogueJSON body{inputs, outputs}
POST/from-dialogue/proposePropose skill from dialogueJSON body (heavy){skill_md, ...}
POST/from-dialogue/reproposeRepropose with locked I/OJSON body{skill_md, ...}
POST/summarySkill summaryJSON body{summary}
POST/from-dialogue/build_and_previewBuild and previewJSON body{skill_md}
POST/previewPreview SKILL.mdJSON body{skill_md}
GET/revise/terminal/{skill_id}Revision terminal state-{status}
GET/revise/inflightIn-flight revisions-{...}
POST/reviseApply user-guided revision{skill_md, user_guidance, skill_id}{skill_md}
POST/commitCommit to registry{skill_id, skill_md, scope, agent_id?, overwrite?}{ok}

18. skill_proposals.py — Skill Proposal Approval ​

Prefix: /api/skill_proposals

MethodPathDescriptionRequestResponse
GET/List proposals-[{id, ...}]
GET/countPending approval count-{count}
GET/{pid}Proposal details-{...}
POST/{pid}/approveApprove-{ok}
POST/{pid}/rejectReject{reason?}{ok}

19. skill_workshop.py — Skill Studio ​

Prefix: /api/skill_workshop

MethodPathDescriptionRequestResponse
GET/skillsList registered skills-[{id, name, ...}]
POST/uploadUpload assetmultipart: file{asset_id, url}
GET/assetGet assetquery: asset_idFile stream
POST/rewriteRewrite storyboardJSON body{storyboard}
POST/runStart runJSON body{run_id}
GET/run/{run_id}/statusRun status-{status, progress, ...}
GET/run/{run_id}/imagesGenerated images-[{idx, url, ...}]
POST/run/{run_id}/regenerate_imageRegenerate imageJSON body{ok}
POST/run/{run_id}/approve_imagesApprove imagesJSON body{ok}
GET/run/{run_id}/clipsClip list-[{idx, ...}]
POST/run/{run_id}/clips/{idx}/generateGenerate clipJSON body{ok}
POST/run/{run_id}/concat_finalConcatenate final videoJSON body{video_url}
GET/draftGet draft-{...}
POST/draftSave draftJSON body{ok}
GET/history/{skill_id}Run history-[{run_id, ts, ...}]
GET/history/{skill_id}/{run_id}Historical run details-{...}

20. asr.py — Speech Recognition ​

Prefix: /api

MethodPathDescriptionRequestResponse
POST/asr/transcribeUpload audio and transcribemultipart: audio, form: language?{text, segments}
POST/asr/prewarmPrewarm ASR model-{ok}
POST/call/prewarmPrewarm all call-mode modelsquery: agent_id?{ok}
POST/focus/{mode}User attention signalmode: dialog/call/idle, query: agent_id?, dialogue_id?{ok}
POST/dialog/prewarmPrewarm dialogue-mode models-{ok}
GET/gpu_tierGPU tier + features-{tier, features: {...}}
POST/model_choicePersist missing-model decisionquery: model_id, choice{ok}

21. digital_human.py — Digital Human ​

Prefix: /api/digital_human

MethodPathDescriptionRequestResponse
GET/{agent_id}/statusAsset inventory + backend recommendation-{assets, backend, ...}
POST/{agent_id}/prewarmBackground preload-{ok}
POST/{agent_id}/unloadRelease cached session-{ok}
POST/{agent_id}/regenerate_voiceRegenerate voice.wav-{ok}

22. agent_workshop.py — External Agent Import ​

Prefix: /api/agent_workshop

MethodPathDescriptionRequestResponse
GET/kindsImportable agent kinds-["openclaw", "hermes", ...]
GET/scan/{kind}Scan install state-{installed, ...}
POST/import/{kind}/startStart import session{need_digital_human?, display_name?, model?}{session_id}
POST/import/cancelCancel import{session_id}{ok}
GET/import/{kind}/streamSSE import progressquery: session_id, approved_steps?SSE
POST/customCustom agent{display_name, repo_url?, cli_command, description?, need_digital_human?}{agent_id}

23. agent_assets.py — Agent Asset Management ​

Prefix: /api

MethodPathDescriptionRequestResponse
POST/agents/upload_stagingStage to staging areamultipart: file, form: kind(figure/voice){staging_id}
POST/agents/{agent_id}/asset_job/figureStart portrait replacement jobmultipart: file{job_id}
GET/agents/{agent_id}/asset_jobJob status-{status, stage, ...}
GET/agents/{agent_id}/asset_job/streamSSE job stream-SSE
POST/agents/{agent_id}/asset_job/retryRetry a single stage{stage}{ok}
DELETE/agents/{agent_id}/asset_jobDiscard job-{ok}
POST/agents/{agent_id}/asset_job/upload_stageSideload stage deliverymultipart: file, form: stage{ok}
POST/agents/{agent_id}/voice/replaceReplace voicemultipart: file, form: transcript?{ok}
POST/agents/{agent_id}/theme/{element}/replaceReplace theme elementmultipart: file{ok}
POST/agents/{agent_id}/greeting/regenerateRe-render greeting video-{ok}

24. agent_activity.py — Agent Activity ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/agents/activityAgent activity list-[{agent_id, activity, ts}]
GET/agents/activity/streamSSE activity stream-SSE

25. agent_recipes.py — Recipe CRUD ​

Prefix: /api/recipes

This is the largest route file, with 56 endpoints. The core endpoints are listed below.

MethodPathDescription
GET/catalogWireable module catalog
GET/_meta/protocolFolder protocol spec
GET/{recipe_id}/docsRecipe doc list
GET/{recipe_id}/docs/{name}Get doc
PUT/{recipe_id}/docs/{name}Update doc
DELETE/{recipe_id}/docs/{name}Delete doc
GET/{recipe_id}/utilsUtils file list
GET/{recipe_id}/utils/{name}Get utils file
PUT/{recipe_id}/utils/{name}Update utils file
DELETE/{recipe_id}/utils/{name}Delete utils file
POST/{recipe_id}/utils/uploadUpload utils file
GET/List all recipes
GET/{recipe_id}Get recipe details
POST/{recipe_id}/duplicateDuplicate recipe
GET/{recipe_id}/renderersCustom renderer list
GET/{recipe_id}/renderers/{name}Get renderer source
GET/{recipe_id}/export_zipExport zip
POST/import_zipImport from zip
POST/preview_zipPreview zip contents
POST/import_folderImport from folder
POST/installInstall recipe
POST/{recipe_id}/create_agentCreate agent from recipe
POST/Create recipe
PUT/{recipe_id}Update recipe
POST/_meta/validate_chain_stepsValidate chain steps
DELETE/{recipe_id}Delete recipe
POST/{recipe_id}/unbind_all_and_deleteUnbind all agents then delete
GET/_state/defaultGet default recipe state
DELETE/_state/defaultClear default
POST/{recipe_id}/set_defaultSet as default
POST/{recipe_id}/bind/{agent_id}Bind to agent
POST/{recipe_id}/unbind/{agent_id}Unbind from agent
POST/{recipe_id}/validateValidate recipe
GET/chain_source/{slot}Chain slot implementation enumeration
GET/_meta/reasoning_templatesReasoning template list
GET/{recipe_id}/resolved_toolsResolved tools
GET/{recipe_id}/tool_catalogTool catalog
GET/{recipe_id}/skill_statusSkill status
GET/{recipe_id}/knowledge_fileKnowledge file
GET/{recipe_id}/digital_human_slotsDigital human slots
GET/{recipe_id}/asset_fileAsset file
GET/libraryMarketplace library list
POST/library/installInstall from marketplace library
POST/library/publishPublish to marketplace library
GET/{recipe_id}/capabilities/status/{agent_id}Capability approval status
POST/{recipe_id}/capabilities/approve/{agent_id}Approve capability
DELETE/{recipe_id}/capabilities/approve/{agent_id}Revoke approval
POST/eval/compareEvaluation comparison
POST/{recipe_id}/evalRun evaluation
GET/{recipe_id}/graphGet graph definition
PUT/{recipe_id}/graphUpdate graph definition
DELETE/{recipe_id}/graphDelete graph
POST/{recipe_id}/graph/testTest graph

26. recipe_dev.py — Recipe Development Tools ​

Prefix: /api/recipe_dev

MethodPathDescriptionRequestResponse
POST/compileCompile recipeJSON body{ok, errors?}
POST/dryrunDry runJSON body{outcome, units}
POST/e2e_testEnd-to-end testJSON body{pass, details}
POST/publish_relayPublish to relayJSON body{ok}
GET/review_statusReview status-{status}

27. flow_templates.py — Flow Templates ​

Prefix: /api/flow-templates

MethodPathDescriptionRequestResponse
GET/List templates-[{id, name, ...}]
POST/Create templateJSON body{id}
GET/{template_id}Get template-{id, template, layout, ...}
PUT/{template_id}Update templateJSON body{ok}
DELETE/{template_id}Delete template-{ok}
POST/{template_id}/validateValidate template-{ok, errors?}
POST/{template_id}/duplicateDuplicate template-{new_id}
GET/{template_id}/docsDoc list-[{name}]
GET/{template_id}/docs/{name}Get doc-{content}
PUT/{template_id}/docs/{name}Update doc{content}{ok}
DELETE/{template_id}/docs/{name}Delete doc-{ok}
GET/{template_id}/exportExport-JSON
POST/importImportJSON body{id}
POST/preview_bundlePreview bundleJSON body{preview}
POST/import_bundleImport bundlemultipart{id}
GET/{template_id}/export_bundleExport bundle-zip file
GET/{template_id}/renderersCustom field renderer list-[{name}]
GET/{template_id}/renderers/{name}Get renderer-{source}
POST/{template_id}/renderers/{name}Create/update renderer{source}{ok}
DELETE/{template_id}/renderers/{name}Delete renderer-{ok}

28. flows.py — Flow Instances ​

Prefix: /api/flows

MethodPathDescriptionRequestResponse
GET/List instancesquery: status?, template_id?, limit?[{instance_id, template_id, status, ...}]
GET/{instance_id}Get instancequery: trace_tail?{instance_id, status, trace_tail: [...]}
GET/{instance_id}/traceFull tracequery: limit?[{ts, event, ...}]
POST/{instance_id}/cancelForce stop-{ok}

29. flow_dev.py — Flow Development Tools ​

Prefix: /api/flow_dev

MethodPathDescriptionRequestResponse
POST/publish_relayPublish to relayJSON body{ok}
GET/review_statusReview status-{status}

30. comm (communication.py) — Communication Hub ​

Prefix: /api/communication

MethodPathDescriptionRequestResponse
GET/messagesMessage listquery: agent_id?, since?, direction?[{id, agent_id, content, ts, direction}]
POST/messagesUser sends message to agentJSON body{id}
POST/sendAgent pushes to userJSON body{ok}
GET/approvals/pendingPending approval listquery: agent_id?[{request_id, tool, args, ...}]
POST/approvals/requestCreate approval requestJSON body{request_id}
POST/approvals/respondRespond to approval{request_id, approved, reason?, scope?, choices?}{ok}
GET/approvals/{request_id}Approval status-{request_id, status, ...}
POST/interruptInterrupt agent{agent_id, reason?}{ok}

31. broker.py — Broker Core ​

Prefix: /api/broker

MethodPathDescription
GET/brokersList brokers
POST/brokers/{broker_id}/registerRegister broker
POST/brokers/{broker_id}/deregisterDeregister broker
POST/brokers/{broker_id}/scopesSet scopes
GET/brokers/{broker_id}/cardGet card
POST/brokers/{broker_id}/actions/{action}Execute action
POST/brokers/{broker_id}/deals/{deal_id}/transitionDeal state transition
GET/brokers/{broker_id}/dealsDeal list
GET/brokers/{broker_id}/ledgerLedger
POST/federation/receiveFederation receive
GET/federation/statusFederation status
POST/federation/rooms/{broker_id}/{room_id}/federateFederate room
POST/federation/threads/{broker_id}/{thread_id}/federateFederate thread
POST/federation/tasks/{broker_id}/{task_id}/federateFederate task
GET/federation/rooms/{broker_id}Federated room list

32. broker_workshop.py — Broker Workshop ​

Prefix: /api/broker_workshop

The largest route file, with 90+ endpoints. Covers: instance management, marketplace index, covers, consent, capability approvals, CRL/trust, rooms/threads/messages/permissions/reputation/triggers/approvals.

Core endpoints:

MethodPathDescription
GET/instancesList installed instances
GET/instances/{broker_id}Instance details
POST/instances/install_from_urlInstall from URL
GET/marketplace/indexMarketplace index
GET/marketplace/recipes/indexRecipe marketplace index
GET/marketplace/flows/indexFlow marketplace index
POST/marketplace/{kind}/likeLike
POST/marketplace/{kind}/coinCoin
GET/marketplace/coin/balanceCoin balance
POST/marketplace/coin/claimClaim coins
POST/marketplace/{kind}/viewMark viewed
POST/marketplace/reportReport
POST/marketplace/banBan
POST/marketplace/unbanUnban
POST/GET/marketplace/moderators/*Moderator management
POST/marketplace/cover/uploadUpload cover
POST/marketplace/cover/generateAI-generate cover
GET/instances/{broker_id}/roomsRoom list
POST/instances/{broker_id}/roomsCreate room
GET/PATCH/DELETE/instances/{broker_id}/rooms/{room_id}Room CRUD
GET/instances/{broker_id}/rooms/{room_id}/threadsThread list
POST/instances/{broker_id}/rooms/{room_id}/threadsCreate thread
POST/GET/instances/{broker_id}/messages*Message CRUD + reactions + search
GET/instances/{broker_id}/reputation/{cluster_id}Reputation
POST/instances/{broker_id}/reputation/rateRate
GET/POST/DELETE/instances/{broker_id}/triggers*Trigger management
GET/POST/DELETE/instances/{broker_id}/capabilities/*Capability management
POST/GET/instances/{broker_id}/approvals*Vote approvals
POST/GET/instances/crl/*CRL management
POST/GET/instances/trust/*Trust management
GET/POST/instances/{broker_id}/permissions/*Permission management
GET/POST/instances/{broker_id}/member_caps*Member capabilities

33. broker_app.py — Broker App Static Assets ​

Prefix: /api/broker_app

MethodPathDescription
GET/{broker_id}/ui/{rel:path}UI static assets (script/link/img)
GET/{broker_id}/coverCover image
GET/{broker_id}/sdk.jsBroker SDK
GET/_meta/sdk.jsSDK metadata

34. broker_assets.py — Broker Assets ​

Prefix: /api/broker_workshop

MethodPathDescription
POST/instances/{broker_id}/assetsUpload asset
GET/instances/{broker_id}/assets/{asset_id}Get asset
GET/instances/{broker_id}/assetsAsset list
DELETE/instances/{broker_id}/assets/{asset_id}Delete asset
GET/instances/{broker_id}/capabilitiesCapability list
POST/instances/{broker_id}/capabilities/grantGrant capability
POST/instances/{broker_id}/capabilities/revokeRevoke capability

35. guild.py — Guild System (Ventaris) ​

Prefix: /api/guild

The Ventaris guild subsystem. Tasks/wallets/medals/inbox/recipe runs. 80+ endpoints.

Core endpoints:

MethodPathDescription
GET/PUT/instances/{broker_id}/rooms/{room_id}/configRoom config
POST/instances/{broker_id}/tasksCreate task
GET/instances/{broker_id}/tasksTask list
GET/instances/{broker_id}/tasks/calendarTask calendar
GET/PUT/instances/{broker_id}/tasks/{task_id}Task CRUD
POST/instances/{broker_id}/tasks/{task_id}/reassignReassign
POST/instances/{broker_id}/tasks/{task_id}/publishPublish task
POST/instances/{broker_id}/tasks/{task_id}/acceptAccept task
POST/instances/{broker_id}/tasks/{task_id}/contract/*Contract management
POST/instances/{broker_id}/tasks/{task_id}/startStart task
POST/instances/{broker_id}/tasks/{task_id}/completeComplete task
POST/instances/{broker_id}/tasks/{task_id}/cancelCancel task
POST/instances/{broker_id}/tasks/{task_id}/deliveriesSubmit delivery
POST/instances/{broker_id}/deliveries/{delivery_id}/verdictDelivery verdict
POST/GET/instances/{broker_id}/tasks/{task_id}/subtasks*Subtasks
POST/GET/instances/{broker_id}/tasks/{task_id}/merge_requests*Merge requests
GET/instances/{broker_id}/walletsWallet list
GET/instances/{broker_id}/balance/{cluster_id}Balance
POST/instances/{broker_id}/tokens/moveTransfer tokens
GET/instances/{broker_id}/ledgerLedger
POST/GET/instances/{broker_id}/medals*Medal management
GET/instances/{broker_id}/archiveArchive
GET/instances/{broker_id}/inboxInbox
POST/instances/{broker_id}/inbox/*Inbox operations
POST/instances/{broker_id}/recipe/runRun recipe
POST/GET/instances/{broker_id}/tasks/{task_id}/modifications*Modification requests

36. xun_da.py — Xun Da (Social Collaboration) ​

Prefix: /api/xun_da

Social collaboration subsystem. Tags/recipes/rooms/threads/payments/albums/reputation/medals/user profiles. 80+ endpoints.

Core endpoints:

MethodPathDescription
GET/tagsTag list
POST/recipe/rebuildRebuild recipe
GET/recipe/meMy recipes
POST/GET/rooms/*Room management (create/discover/join/close/invite)
POST/GET/threads/*Thread management (create/join/leave/messages/attachments/payments/settlement/albums)
GET/reputation/me/pendingPending reputation
GET/badges/meMy medals
POST/cron/tickCron tick
GET/PUT/user_profile/meMy profile
POST/user_profile/me/avatarUpload avatar

37. cg.py — CG Cutscenes ​

Prefix: /api

MethodPathDescription
GET/agents/manager/cg/listCG status list
POST/agents/manager/cg/runRender CG
GET/agents/manager/cg/reference/{agent_id}CG reference
DELETE/agents/{agent_id}/skills/{skill_id}/cgDelete CG
GET/skill_stateCurrently active skill
POST/agents/{agent_id}/skills/{skill_id}/cg/previewCG preview
GET/agents/manager/cg/stepsCG steps
POST/agents/manager/cg/step_imageStep image
POST/agents/manager/cg/step_image/uploadUpload step image
POST/agents/{agent_id}/skills/{skill_id}/steps/{step_index}/dh_composeDigital human composition
DELETE/agents/{agent_id}/skills/{skill_id}/steps/{step_index}/imageDelete step image
GET/agents/{agent_id}/skills/{skill_id}/steps/{step_index}/imageGet step image

38. gift.py — Gifts ​

Prefix: /api/gift

MethodPathDescriptionRequestResponse
GET/video/{decision_id}Gift video-Video file
POST/swapSwap candidate / re-search{agent_id, dialogue_id, node_id, candidate_index?, keyword?}{ok}
POST/openMark opened{agent_id, dialogue_id, node_id}{ok}
POST/purchaseConfirm purchase{agent_id, dialogue_id, node_id}{ok}

39. reports.py — Reports ​

Prefix: /api

MethodPathDescription
GET/manager/reportsFlattened report list
GET/manager/reports/by-agentGrouped by agent
GET/manager/reports/metaManager meta-report
GET/manager/reports/contentRaw report markdown (query: path)
POST/manager/reports/roll-upTrigger manager_meta_review
POST/manager/reportLegacy stub

40. feedback.py — Feedback ​

Prefix: /api/feedback

MethodPathDescriptionRequestResponse
POST/proactiveProactive message rating{agent_id, rating(0/1), decision_id?, fired_at?, signal_summary?, action_category?, act_score?}{ok}
GET/proactive/statsFeedback statsquery: agent_id?{stats}

41. draft.py — Drafts ​

Prefix: /api/draft

MethodPathDescriptionRequestResponse
POST/from_textAuto-classify{text, agent_id?}{kind, draft}
POST/schedule_from_textExtract schedule{text, agent_id?}{draft}
POST/todo_from_textExtract todo{text, agent_id?}{draft}
POST/cron_from_textExtract cron job{text, agent_id?}{draft}

42. quick_inputs.py — Quick Inputs ​

Prefix: /api

MethodPathDescriptionRequestResponse
GET/quick-inputsList quick inputs-[{qid, text, ...}]
POST/quick-inputsAdd{text}{qid}
POST/quick-inputs/{qid}/useMark used-{ok}
DELETE/quick-inputs/{qid}Delete-{ok}

43. quick_ask.py — Quick Q&A ​

Prefix: /api/quick_ask

MethodPathDescriptionRequestResponse
POST/dialogueCreate temporary dialogue{quoted_text?}{dialogue_id}
POST/dialogue/{dialogue_id}/archiveArchive-{ok}

44. responses.py — OpenAI Responses API Proxy ​

Path: /v1/responses

MethodPathDescriptionRequestResponse
POST/v1/responsesProxy the Responses APIOpenAI Responses API bodyOpenAI Responses API response (streaming supported)

45. learn.py — Framework Docs ​

Prefix: /api/learn

MethodPathDescription
GET/docsDoc key list
GET/docs/{doc_key}Get doc (plain-text markdown)

46. feishu.py — Feishu ​

Prefix: /api/feishu

MethodPathDescriptionRequestResponse
POST/webhookFeishu event deliveryFeishu event JSON{ok}

47. phone_call.py — Phone Calls ​

Path: /api/phone_call

MethodPathDescription
GET/api/phone_call/{agent_id}/statusVirtual cable detection + audio devices

48. broadcast.py — Broadcast ​

Prefix: /api

MethodPathDescription
GET/broadcast/streamSSE broadcast stream

49. demo.py — Demo ​

Prefix: /api/demo

MethodPathDescription
GET/statusDemo status
POST/tokenGet demo token
POST/feedbackDemo feedback

50. desktop_notify.py — Desktop Notifications ​

Prefix: /api

MethodPathDescriptionRequestResponse
POST/desktop-notify/nativeSend native desktop notification{title, body, urgency?}{ok}

51. dev.py — Development Endpoints ​

Prefix: /api/dev

MethodPathDescription
GET/framework-docsFramework doc list
GET/framework-docs/{name}Get framework doc
GET/llm_gatesLLM gate status
POST/fake_giftFake gift
POST/gift_demoGift demo
GET/poolsConnection pool status
POST/thread_dumpThread dump

52. setup.py — Setup Wizard ​

Prefix: /api/setup

MethodPathDescription
GET/seethroughSee-through render state
POST/seethrough/backendSet see-through backend
POST/seethrough/check-loginCheck see-through login
GET/statusSetup status
GET/llm_presetsLLM preset list
POST/chromeInstall Chrome
GET/chrome/install/streamChrome install SSE
GET/tutorial_media/{step_id}/{filename}Tutorial media asset
GET/extensionsExtension list
POST/extensions/selectSelect extension
POST/completeComplete setup
GET/deps/install/streamDependency install SSE
GET/deps/install/stream/{mirror}Mirrored dependency install SSE
GET/models/offerModel offers
POST/models/downloadDownload model

53. onboarding.py — Onboarding ​

Prefix: /api/onboarding

MethodPathDescription
POST/probe_mediaProbe media capabilities
GET/mediaMedia capability list
POST/media/{capability}Enable capability
DELETE/media/{capability}Disable capability
GET/probe_envEnvironment probe
GET/stateOnboarding state
PUT/stateSet onboarding state
GET/tutorial_stateTutorial state
PUT/tutorial_stateSet tutorial state

54. user_profile.py — Broker User Profile ​

Prefix: /api/broker_user

MethodPathDescription
GET/profileCurrent user profile
PUT/profileUpdate profile
GET/profile/{cluster_id}Other user's profile
GET/profile/searchSearch users
POST/profile/import_from_agentImport from agent
POST/profile/import_from_userImport from desktop user
POST/profile/ai_inferAI infer
POST/assetsUpload asset
GET/assets/{asset_id}Get asset

55. tool_skills.py — Tool-Level Skills ​

Prefix: /api

MethodPathDescription
POST/tool_skills/import/folderImport from folder
POST/tool_skills/import/zipImport from zip
POST/tool_skills/import/textImport from text
GET/tool_skillsList
DELETE/tool_skills/{skill_id}Delete
GET/tool_skills/_meta/clientsClient metadata

56. tools_catalog.py / tools_source.py — Tool Catalog ​

Prefix: /api/tools

MethodPathDescription
GET/catalogTool catalog
GET/{name}Tool details
GET/{name}/sourceTool source

57. marketplace_artifacts.py — Marketplace Artifacts ​

Prefix: /api

MethodPathDescription
GET/marketplace/artifact_updatesArtifact updates
POST/marketplace/artifacts/installInstall artifact

58. vram.py — VRAM ​

Prefix: /api/vram

MethodPathDescription
POST/yieldYield VRAM

59. broker_dev.py — Broker Development Tools ​

Prefix: /api/broker_dev

MethodPathDescription
GET/guideDevelopment guide
GET/keysKey list
POST/keysGenerate key
POST/packPack
POST/signSign
POST/verifyVerify
POST/publishPublish
POST/publish_relayPublish to relay
GET/review_statusReview status

Introspection tool: src/models/RAG/bridge_api_reflected.py automatically diffs the "hand-written catalog vs the actual FastAPI routes" so the documentation stays honest as routes are added or removed. The CLI covers every REST endpoint except WebSocket-only streams.

Familiars · 多 Agent AI 桌面应用