Skip to content

Public API

前缀:/apis/api.ai-suite.halo.run/v1alpha1
认证:匿名,仅限 RoleTemplate 放行范围

路由表

方法路径说明
POST/chat/streamSSE 访客问答
POST/chat非流式访客问答
POST/chat/feedback提交点赞/点踩
GET/chat/feedback旧前端反馈兼容
GET/widget-config读取访客浮窗配置
GET/search/halo-results插件 Lucene 关键词结果
POST/search/answerSSE AI 搜索回答
GET/mindmap读取文章脑图缓存

POST /chat/stream

json
{
  "message": "站内有哪些 AI 文章?",
  "history": [
    { "role": "user", "content": "上一轮问题" },
    { "role": "assistant", "content": "上一轮回答" }
  ]
}

限制:message 4000 字符,历史最多 20 项,每项内容 4000 字符。响应见 SSE 协议。后台关闭访客使用时会发送 event:error[DONE]

POST /chat

请求体与流式接口相同。成功响应为 JSON,包含回答文本和引用;具体字段可能随 v1alpha1 演进,调用方应容忍新增字段。

/chat/feedback

参数通过查询字符串传递:

参数必填说明
logId流式聊天返回的日志 ID,最多 80 字符
typelikedislike
comment反馈补充,最多 200 字符
bash
curl -X POST \
  'https://YOUR_DOMAIN/apis/api.ai-suite.halo.run/v1alpha1/chat/feedback?logId=LOG_ID&type=dislike&comment=引用不正确'

新客户端使用 POST;GET 仅用于旧前端兼容。

GET /widget-config

返回访客端可公开读取的聊天、搜索和外观配置。响应不包含 API Key。前端应为缺失字段提供兼容默认值。

GET /search/halo-results

查询参数:keyword。返回:

json
{
  "total": 1,
  "articles": [
    {
      "postId": "post-name",
      "title": "文章标题",
      "url": "/archives/example",
      "snippet": "包含 <mark>关键词</mark> 的摘要",
      "score": 1.23
    }
  ],
  "source": "lucene"
}

snippet 只允许受控的 <mark> 高亮;外部调用方仍应按自身渲染策略清洗 HTML。

POST /search/answer

json
{ "keyword": "Halo 插件开发" }

关键词最多 500 字符。响应为 citations、JSON token 和 [DONE],不发送 logId

GET /mindmap

查询参数:postName。返回已生成的脑图 Markdown/缓存信息;没有缓存、功能关闭或参数缺失时按 HTTP 状态与错误体处理。该接口不触发实时模型生成。

权限验证

公开接口不应需要管理员 Cookie;未列出的 Console API 也不应被匿名访问。RoleTemplate 同时使用资源授权和精确 non-resource URL 授权 POST SSE 路由。

基于 GPL-3.0 许可发布