RicePanel API 是一个专为 Typecho 开发的插件,旨在为您自己的移动端提供一套简单、高效、RESTful 风格的数据管理 API。
- 将本目录重命名为
RicePanel,然后放入 Typecho 的usr/plugins/目录下。 注意RicePanel的大小写一定要正确 - 登录 Typecho 后台,在“控制台 -> 插件”中启用
RicePanel。 - 启用后,左侧导航栏会出现 RicePanel 菜单。点击 API Key 管理。
- 设置一个复杂的 API Key。系统将使用 BCRYPT 算法进行单向加盐哈希存储,确保数据库安全。
- 接口基址 (Base URL):
http://your-typecho-domain.com/index.php/action/ricepanel - 鉴权方式:所有的 API 请求都必须在 URL 或 POST 表单中携带
key参数。安全提示:服务端仅存储密钥的哈希值。每次请求时,系统会实时校验您提供的明文
key。建议在生产环境使用 HTTPS 协议传输。 - 返回格式:所有接口统一返回 JSON 格式:
{ "code": 200, // 200 表示成功,非 200 表示错误(400 参数错误,401 鉴权失败,404 不存在,500 服务端错误等) "msg": "success", // 状态描述或错误详情信息 "data": {} // 具体的数据负载(可能为 null、数组或对象) }
获取博客的基础统计数据(文章总数、评论总数等)。
- URL:
?do=stat - Method:
GET - 参数:
key(必需): API Key
- 返回示例:
"data": { "publishedPostsNum": 97, "publishedCommentsNum": 377, "categoriesNum": 4, "publishedPagesNum": 4 }
分页获取博客文章摘要列表。
- URL:
?do=posts - Method:
GET - 参数:
key(必需): API Keypage(可选): 页码,默认为 1pageSize(可选): 每页条数,默认为 10status(可选): 筛选状态。默认为publish(公开)。- 在 Typecho 1.2+ 中,传
draft将匹配post_draft类型; - 传
all将匹配post和post_draft类型。
- 在 Typecho 1.2+ 中,传
- 返回: 文章摘要列表。
"data": { "posts": [ { "cid": 1406, "title": "测试文章标题", "created": 1766842020, "author": "admin", "status": "publish", "tags": ["API", "测试"], "commentsNum": 4 } ], "page": 1, "pageSize": "10", "total": 97 }
- URL:
?do=post - Method:
GET - 参数:
key(必需): API Keycid(必需): 文章的 CID
- 返回示例:
"data": { "cid": 1406, "title": "测试文章标题", "slug": "slug-test-post", "created": 1766842020, "modified": 1766842050, "text": "这是一篇**Markdown**格式的文章...", "author": "admin", "status": "publish", "allowComment": "1", "allowPing": "1", "allowFeed": "1", "tags": ["API", "测试"], "commentsNum": 4 }
- URL:
?do=postBasic - Method:
GET - 说明: 传入任意文章或页面的 CID,返回其标题、状态和类型。若查询的是文章,则额外返回其绑定的分类和标签数组。
- 参数:
key(必需): API Keycid(必需): 内容的 CID
- 返回示例 (文章):
"data": { "cid": 1406, "title": "测试文章标题", "slug": "slug-test-post", "type": "post", "status": "publish", "tags": ["API", "测试"], "categories": ["默认分类"] }
- 返回示例 (页面):
"data": { "cid": 20, "title": "关于我们", "slug": "about-us", "type": "page", "status": "publish" }
新建一篇 Markdown 格式的文章,或者更新现有文章。
- URL:
?do=savePost - Method:
POST - 参数:
key(必需): API Keycid(可选): 文章 ID。若传入此参数则为更新现有文章,否则为创建新文章。title(必需): 文章标题text(必需): 文章 Markdown 源内容。系统将自动识别 HTML 渲染。tags(可选): 文章标签。多个标签之间用逗号,或者,隔开status(可选): 文章状态:publish(公开,默认),hidden(隐藏),waiting(待审核)allowComment(可选): 允许评论 (1 允许, 0 禁止,默认 1)allowPing(可选): 允许 Ping (1 允许, 0 禁止,默认 1)allowFeed(可选): 出现在聚合中 (1 允许, 0 禁止,默认 1)category(可选): 文章分类。支持传入分类名称或 mid,多个以英文逗号,分隔。若名称不存在则会自动创建分类。isDraft(可选): 是否为草稿 (1 是, 0 否,默认 0)。启用后在 Typecho 1.2+ 中type会设置为post_draft。slug(可选): 文章固定链接别名(Permalink Slug)。若不传入,系统将自动使用cid作为默认 slug,保证伪静态链接可访问。若传入值与已有内容冲突,将自动追加-cid后缀。
- 返回示例:
"data": { "cid": 1421 }
永久删除指定文章。
- URL:
?do=deletePost - Method:
POST - 参数:
key(必需): API Keycid(必需): 需要删除的文章 ID
- 返回: 成功状态码 200。
分页获取符合特定状态的评论列表。
- URL:
?do=comments - Method:
GET - 参数:
key(必需): API Keypage(可选): 页码,默认为 1pageSize(可选): 每页条数,默认为 10status(可选): 评论状态。可选值:approved(通过,默认),waiting(待审核),spam(垃圾评论)
- 返回示例 (含最新补充的用户邮件及网址信息):
"data": { "comments": [ { "coid": 527, "cid": 1385, "author": "访客昵称", "mail": "example@foxmail.com", "url": "https://example.com", "text": "这是一条评论的内容", "created": 1769520506, "status": "approved" } ], "page": 1, "pageSize": "10", "total": 377 }
快速通过、拒绝、标记垃圾或永久删除某条评论。
- URL:
?do=manageComment - Method:
POST - 参数:
key(必需): API Keycoid(必需): 目标评论的 IDaction(必需): 执行的操作。有效值:approved(通过),waiting(移入待审核),spam(标记为垃圾),delete(永久删除)
- 返回: 成功状态码 200。
以管理员身份(自动使用管理账号的用户名/邮箱信息)回复指定的访客评论。
- URL:
?do=replyComment - Method:
POST - 参数:
key(必需): API KeyparentCoid(必需): 要回复的父级评论 IDtext(必需): 回复的具体内容文本
- 返回示例 (返回新生成的回复评论 ID):
"data": { "coid": 536 }
分页获取独立页面摘要列表。
- URL:
?do=pages - Method:
GET - 参数:
key(必需): API Keypage(可选): 页码,默认为 1pageSize(可选): 每页条数,默认为 10status(可选): 筛选状态。默认为publish(公开)。- 在 Typecho 1.2+ 中,传
draft将匹配page_draft类型; - 传
all将匹配page和page_draft类型。
- 在 Typecho 1.2+ 中,传
- 返回: 页面摘要列表。数据结构与 Posts 一致 (同样会在其字典项中增加返回
status字段)。
- URL:
?do=page - Method:
GET - 参数:
key(必需): API Keycid(必需): 页面的 CID
- 返回示例:
"data": { "cid": 20, "title": "关于我们", "slug": "about-us", "created": 1645000000, "modified": 1645000050, "text": "这是单页面的**Markdown**原文内容...", "author": "admin", "status": "publish", "allowComment": "1", "allowPing": "1", "allowFeed": "1", "tags": [], "commentsNum": 0 }
新建或编辑一个独立页面。
- URL:
?do=savePage - Method:
POST - 参数:
key(必需): API Keycid(可选): 页面 ID。传此参数为更新,否则为创建。title(必需): 页面标题text(必需): 页面 Markdown 源内容。系统将自动识别 HTML 渲染。status(可选):publish或hidden等isDraft(可选): 是否为草稿 (1 是, 0 否,默认 0)。启用后在 Typecho 1.2+ 中type会设置为page_draft。slug(可选): 页面固定链接别名。若不传入,系统将自动使用cid作为默认 slug。若传入值冲突,将自动追加-cid后缀。allowComment(可选): 允许评论 (1 允许, 0 禁止,默认 1)allowPing(可选): 允许 Ping (1 允许, 0 禁止,默认 1)allowFeed(可选): 出现在聚合中 (1 允许, 0 禁止,默认 1)
- 返回示例:
"data": { "cid": 1425 }
永久删除指定页面。
- URL:
?do=deletePage - Method:
POST - 参数:
key(必需): API Keycid(必需): 需要删除的页面 ID
- 返回: 成功状态码 200。
无视审核状态,基于降序创建时间直接提供最新互动数据的全景概览。
- URL:
?do=recentComments - Method:
GET - 参数:
key(必需): API KeypageSize(可选): 提取指定数量的最新评论,默认为 5 篇。
依托系统原生上传处理能力,直接将客户端附件推入 Typecho usr/uploads 生命周期循环并获取公开地址。
- URL:
?do=upload - Method:
POST(需由客户端使用multipart/form-data协议发送) - 表单数据:
file(必需): 具体提交上传的文件资料块。
- URL 查询参数:
key(必需): API 密钥cid(可选): 提供此参数时,上传完成后将形成依附关联挂载到此父级文档内。
- 返回示例: 给出该文件最终生成的资源 CID,大小与外部可以直接访问引用的 URL。
"data": { "cid": 1457, "name": "test_upload.gif", "size": 43, "url": "http://mytestblog.local/usr/uploads/2026/02/3417602817.gif" }
仅针对 post 类型的文章进行标题和正文的关键字匹配。
- URL:
?do=searchPosts - Method:
GET - 参数:
key(必需): API Keykeyword(必需): 搜索关键词page(可选): 页码,默认为 1pageSize(可选): 每页条数,默认为 10status(可选): 筛选状态。默认为publish。- 在 Typecho 1.2+ 中,传
draft将匹配post_draft类型; - 传
all将匹配post和post_draft类型。
- 在 Typecho 1.2+ 中,传
- 返回: 分页的文章摘要列表。
- URL:
?do=categories - Method:
GET - 参数:
key(必需): API Key
- 返回示例:
"data": { "categories": [ { "mid": 2, "name": "默认分类", "slug": "default", "description": "", "count": 10, "parent": 0 } ] }
支持分类的新建、重命名和删除。
- URL:
?do=manageCategory - Method:
POST - 参数:
key(必需): API Keyaction: 操作类型。支持create(新建),rename(重命名),delete(删除)name: 分类名称 (用于 create 和 rename)slug: 分类缩略名 (可选,用于 create)mid: 分类 ID (用于 rename 和 delete)description: 描述 (用于 create)parent: 父级 ID (用于 create)
- 返回: 成功状态码 200。