Octop API 入门:5 分钟开启 /api/docs 交互文档,调通你的第一个接口

Octop API 入门:5 分钟开启 /api/docs 交互文档,调通你的第一个接口

【免费下载链接】OctopA smarter, self-hosted AI assistant — multi-user, multi-agent.项目地址: https://gitcode.com/GitHub_Trending/oct/Octop

你刚把 Octop(自托管 AI 助手)部署到内网,想用自己的脚本驱动它,却发现/api/docs交互文档页面返回 404。

开启 Octop API 文档:从 404 到拿到有效 token

交互文档默认是关闭的,访问/api/docs或/api/openapi.json都会得到 404。这么设计的原因很直接:防止公网暴露接口结构。开启有两种方式,任选其一:

{ "enable_api_docs": true }

在~/.octop/config.json中加一行,或者用环境变量(优先级高于配置文件):

export OCTOP_ENABLE_API_DOCS=1

改完重启服务。Octop 默认监听127.0.0.1:8088,浏览器访问http://127.0.0.1:8088/api/docs就能看到 Scalar 页面。

接着拿 token,用账号密码登录:

curl -s http://127.0.0.1:8088/api/auth/login \ -H 'Content-Type: application/json' \ -d '{"username":"admin","password":"your-password"}'

响应里有access_token和token_type: "Bearer"。之后每次请求带上Authorization: Bearer <access_token>请求头即可。

💡 登录返回 503 且内容为{"setup_required": true},说明初始安装向导还没走完,先完成管理员创建再回来调接口。

Octop 接口鉴权:token 过期为什么不用重登

token 是JWT(JSON Web Token),默认有效期 86400 秒,即 24 小时。关键在滑动续期机制:只要某次请求的剩余有效期低于总时长的三分之一,响应头X-Octop-Access-Token里就会附带一个新 token,客户端应当替换保存。脚本只要在每次响应里检查这个头,一次登录就能长期在线,长任务中途不会突然掉线。

除豁免清单外,所有/api/*路由都走 JWT 中间件拦截。不需要令牌的路径包括:

  • 文档与健康检查:/api/docs、/api/openapi.json、/api/health
  • 登录与 SSO:/api/auth/login、/api/auth/captcha、/api/auth/oidc/*、/api/auth/oauth/*、/api/auth/ldap/status
  • 安装向导:/api/setup/全系列
  • 邀请码:/api/auth/invite/validate与/api/auth/invite/redeem
  • 内部网关:/api/internal/mcp/*、/api/connectors/oauth/callback、/api/downloads/link/*(下载链接的 token 本身就是凭证)

Scalar 交互文档实战:逛页面、试跑与 WebSocket 特例

/api/docs的路由注册在应用工厂 src/octop/api/app.py 中,底层调用get_scalar_api_reference()渲染 OpenAPI 规范,和 FastAPI 默认的 Swagger UI 是两条渲染路径。

页面左右分栏:左边是业务标签树,右边是 "Try" 面板,填好参数点 Send,响应直接展示在页面上,所见即所得。标签共 35 组,覆盖全部核心能力,挑高频的几组看:

标签覆盖能力
setup安装向导、管理员创建
auth/users登录、当前用户、用户管理
agents/chat智能体增删改查、会话、轨迹
providers/voice模型供应商、语音识别合成
channels/cronIM 渠道桥接、定时任务
skills/subagents技能市场、子智能体
workspace工作区文件操作
admin/security/tls审计日志、安全策略、证书
browser/terminal/desktop远程浏览器、终端、桌面

聊天走 WebSocket,是最容易踩的坑

实时对话轮次不走 REST,而是走WebSocket:WS /api/agents/{agent_id}/chat/ws?token=<jwt>。

注意 token 放在查询参数里,不在请求头——这是该接口最常见的坑,缺 token 时连接会直接关闭(close code 4001)。连上后发送一帧{"type": "user_turn", "text": "你的输入"},就能收到流式回复。帧字段全集见 docs/api.md 的 "Chat (WebSocket)" 一节。

高频接口与背后的身份要求

目的接口要求身份
健康检查GET /api/healthpublic
登录POST /api/auth/loginpublic
当前用户GET /api/auth/meuser
智能体列表GET /api/agentsuser
创建智能体POST /api/agentsuser
启动/停止POST /api/agents/{id}/startowner
自定义供应商POST /api/providersuser
测试连通性POST /api/providers/{id}/testuser
定时任务POST /api/agents/{id}/cronowner

权限分四级:public(免令牌)→user(登录即可)→owner(资源属主或管理员)→admin(管理员角色)。调接口前先在 Scalar 条目头部看一眼要求身份,拿到 403 时多半是身份问题,而不是参数缺失。一个容易忽略的细节:cron 接口是严格 owner,即使管理员查看他人的任务,拿到的也是空列表。

排错与生产建议:信封、错误码与 OpenAPI 导出

所有非 2xx 的 JSON 响应都是统一结构,message会按Accept-Language请求头本地化:

{ "error": { "code": "AGENT_NOT_FOUND", "message": "...", "details": {} } }

新手最常遇到的几个错误码:

  • AUTH_FAILED/TOKEN_EXPIRED(401):令牌错误或已过期,重新登录;
  • SETUP_REQUIRED(409):初始管理员尚未创建;
  • LOGIN_LOCKED(423):登录失败次数过多,等待自动解锁或让管理员调用/api/users/{id}/unlock-login;
  • AGENT_NOT_FOUND(404):智能体不存在或属于其他用户。

完整对照表在 docs/api.md 的 "Error envelope" 部分。

安全方面:文档页本身不含任何数据,但会暴露接口结构,建议在开发或内网环境开启,公网生产保持关闭。想把文档能力集成进自己的工具链,直接请求/api/openapi.json拿到 OpenAPI 3.1 规范,导入 Postman、YApi 等工具即可离线协作。

下一步建议:通读一遍 docs/api.md 的完整接口清单,配置项疑问查 docs/configuration.md。

【免费下载链接】OctopA smarter, self-hosted AI assistant — multi-user, multi-agent.项目地址: https://gitcode.com/GitHub_Trending/oct/Octop

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

D8051/2/3/4 系列高速运算放大器

D8051/2/3/4 系列高速运算放大器

一、产品简介D8051/2/3/4 是芯谷科技&#xff08;Silicore&#xff09;推出的250MHz轨到轨输出电压反馈型CMOS运算放大器系列&#xff0c;专为高速信号处理应用设计。该系列包含单通道&#xff08;D8051/D8053&#xff09;、双通道&#xff08;D8052&#xff09;和四通道&#…

2026/10/21 1:51:34 阅读更多 →
磁集成Boost变换器Simulink建模与仿真:耦合电感参数扫描及优化

磁集成Boost变换器Simulink建模与仿真:耦合电感参数扫描及优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 1:51:34 阅读更多 →
D2940:1A低压差线性稳压器 产品简介与应用指南

D2940:1A低压差线性稳压器 产品简介与应用指南

一、产品概述D2940 是一款高性能低压差线性稳压器&#xff08;LDO&#xff09;&#xff0c;专为需要大电流输出、低功耗、高可靠性的电源应用场景而设计。该产品采用先进的BiCMOS工艺&#xff0c;在保持优异电气性能的同时&#xff0c;集成了多重保护功能&#xff0c;是工业级电…

2026/10/21 1:51:34 阅读更多 →

最新新闻

C语言基础笔记 04 指针

C语言基础笔记 04 指针

00 包 目前CLion的最新版本还不支持中文&#xff0c;需要导入#include <stdlib.h> &#xff0c;再在main函数内写system("chcp 65001");才能在代码中用中文stdlib 还可以提供动态内存分布——malloc函数01 使用原因对于函数&#xff0c;在函数外定义的变量&…

2026/10/21 2:24:52 阅读更多 →
Spring Boot个人云盘系统实战:分片上传、JWT与文件管理设计

Spring Boot个人云盘系统实战:分片上传、JWT与文件管理设计

最近做了一套基于Spring Boot的网盘类管理系统&#xff0c;核心功能就是个人云盘。像这种"Spring Boot 前端JS"的Title&#xff0c;其实是很典型的Java Web练手项目&#xff0c;网上也有各种各样的教程&#xff0c;但绝大多数都是跑通就完事&#xff0c;真正像工程一…

2026/10/21 2:24:52 阅读更多 →
29 切片的权限隔离(实战篇):Milvus + Spring AI,从 0 搭一条带权限过滤的检索链路

29 切片的权限隔离(实战篇):Milvus + Spring AI,从 0 搭一条带权限过滤的检索链路

上一篇&#xff08;#28&#xff09;把原理讲透了&#xff1a;权限要沉到切片、过滤要下推检索层、多租户要隔离、边角要想全。道理都懂&#xff0c;但面试官最爱追的一句是——"那你具体怎么落地&#xff1f;"这篇不聊理论&#xff0c;直接从 0 搭起来&#xff1a;用…

2026/10/21 2:24:52 阅读更多 →
微信小程序实验:计时器

微信小程序实验:计时器

本案例实现倒计时计时器&#xff0c;页面初始 2 秒空白后展示计时面板&#xff0c;支持开始计时、停止计时、重新计时&#xff1b;倒计时初始值 60&#xff0c;暂停后可继续计时&#xff0c;计数到 0 自动停止。拓展功能使用 CSS 伪元素在计时框增加背景文字。知识点&#xff1…

2026/10/21 2:24:52 阅读更多 →
监控Kubernetes集群的GPU资源(一)

监控Kubernetes集群的GPU资源(一)

对于SRE团队来说&#xff0c;实现监控AI、高性能计算平台上大规模GPU资源&#xff0c;至关重要。SRE团队可以通过GPU指标了解工作负载等相关性能&#xff0c;从而优化资源分配&#xff0c;提升资源利用率及异常诊断&#xff0c;以提高数据中心资源的整体效能。除了SRE及基础设施…

2026/10/21 2:24:52 阅读更多 →
算法复杂度分析笔记:主定理详解

算法复杂度分析笔记:主定理详解

文章目录&#x1f4dd; 算法复杂度分析笔记&#xff1a;主定理详解1. 题目回顾2. 核心工具&#xff1a;主定理 (Master Theorem)&#x1f511; 参数含义⚖️ 比较逻辑3. 解题步骤演示第一步&#xff1a;提取参数第二步&#xff1a;计算临界值第三步&#xff1a;比较 f(n)f(n)f(…

2026/10/21 2:23:52 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →