REST API 端点清单
全部端点位于 /api/v1/tenant 前缀下,需 JWT 登录态。以下为分组速览(:siteID 为站点 ID):
站点管理
GET/POST /sites·GET/PUT/DELETE /sites/:siteID— 站点 CRUD(PUT支持只传部分字段,含自动发布开关auto_publish)POST /sites/:siteID/clone— 一键克隆(可选携带内容)PUT /sites/:siteID/apply-template·POST /sites/:siteID/domains— 套用模板 / 绑定自定义域名
栏目与内容
GET/POST /sites/:siteID/categories·PUT/DELETE .../categories/:id— 栏目 CRUD + 排序GET/POST /sites/:siteID/contents·GET/PUT/DELETE .../contents/:id— 内容 CRUD(PUT为整体覆盖语义,详见下方说明)GET /sites/:siteID/contents?has_draft=1— 只取「有修改未上线」的内容;列表行的draft_updated_at非空即表示线上版本落后于编辑内容GET /sites/:siteID/publish-preflight— 发布前检查:返回pending_drafts(待发布修改数)、auto_publish(站点自动发布开关 1/0)与配额、待发布内容等信息POST /sites/:siteID/contents-batch— 批量创建(含 AI 批量 SEO / 批量推送变体)GET .../contents/:id/versions·POST .../contents/:id/restore/:versionID— 版本历史与恢复(按发布记录,保存不产生版本)POST /sites/:siteID/import(CSV/JSON)·POST /sites/:siteID/wp-import/upload(WordPress WXR)— 两种导入通道,均支持任务进度与批次回滚GET /sites/:siteID/tags·POST /sites/:siteID/tags/merge— 标签管理与合并
写内容的两个要点:一是
PUT .../contents/:id 是整体覆盖,请求里没带的字段(栏目、缩略图、作者等)会被置空,请先 GET 取回全量再改;二是对已上线内容的字段修改只写入「待发布修改」,线上页面不变(改变 status 上下线仍直接生效)。要把修改推上线:调 POST /editor/sites/:siteID/publish(它会先提升待发布修改再发布),或依赖站点默认开启的自动发布(停笔约 3 分钟后自动上线)。媒体库
GET/POST /sites/:siteID/media·PUT/DELETE .../media/:id— 上传 / 编辑 / 删除POST .../media/batch-ai-alt— AI 批量生成图片 alt 文本
页面与发布(编辑器域 /api/v1/editor)
GET/POST /editor/sites/:siteID/pages·PUT/DELETE .../pages/:id— 页面管理GET/PUT /editor/sites/:siteID/pages/:id/schema— 页面可视化 Schema 读写POST /editor/sites/:siteID/publish— 触发全站静态化发布,GET /editor/publish-tasks/:taskID轮询进度
AI 能力
POST /tenant/ai/generate·/ai/generate-stream— 文章生成(含 SSE 流式)POST /tenant/ai/translate·/ai/rewrite·/ai/extract-tags— 翻译 / 改写 / 提标签POST /tenant/ai/build-site— 一句话 AI 建站
运营与集成
GET/POST /sites/:siteID/forms+GET .../forms/:id/submissions— 表单与提交数据GET /sites/:siteID/comments+PUT .../comments/:id— 评论审核GET/POST /sites/:siteID/webhooks— Webhook 订阅管理(见 Webhook 文档)GET /tenant/traffic-overview·/tenant/hot-contents— 访客流量与热文榜
完整字段说明以接口实际返回为准;遇到
code != 0 时附 trace_id 联系支持可快速定位。