开始使用

鉴权与权限

REST API 只认一种凭证:工作区管理员在设置页签发的长期 Bearer 凭证。它代表整个工作区,权限在签发时就钉死 —— scope 决定能调哪些端点,发布落点决定内容最远能推到哪一档。

怎么带凭证

Authorization: Bearer popkit_it_••••••••

每个请求都带这个头。凭证以 popkit_it_ 开头;没带、拼错、已停用、已过期都回 401(unauthenticated),并带 WWW-Authenticate: Bearer realm="popkit-api"。不要把凭证放进前端代码、公开仓库或 URL。

OAuth 访问令牌(AI 客户端经授权页拿到的那种)在这里不能用,它们属于 MCP 端点。两条路的能力一致,只是面向的调用方不同。

签发、到期与撤销

  • 位置:popkit → 设置 → 「接入外部系统」 → 「长期凭证」。只有工作区管理员能签发;个人空间由本人签发。
  • 签发时选:名称、scope、发布落点、有效期(长期有效或 N 天)。密钥只在签发那一刻显示一次,库里只存哈希,丢了只能吊销重发。
  • 撤销 / 停用即时生效:每个请求都重新查库校验,下一次调用就 401。设了到期的凭证会在到期前 7 天 / 1 天提醒管理员。
  • 凭证归因到签发它的人:他离开工作区、被移出或被封禁,凭证随之失效(workspace_not_found)。
  • 审计:所有经凭证发生的写动作(发布、排期、改期、回复、送审)在工作区审计里记为「经外部系统 <凭证名>」,并按凭证落调用流水。

scope 与端点

凭证缺少端点要求的 scope 时回 403(forbidden,params.scope 说明缺哪个)。签发者的工作区角色同样要允许该动作 —— scope 只能收窄,不能越过角色矩阵。

scope含义端点
workspace:read工作区信息、成员数与配额余量GET /workspace
accounts:read已连接的社交账号与授权状态GET /accounts
posts:read草稿、排期与发布记录GET /posts、GET /posts/{postId}、POST /posts/precheck
posts:write创建和修改草稿、上传媒体POST /posts、PATCH /posts/{postId}、POST /posts/{postId}/reschedule、POST /posts/{postId}/cover-suggestions、POST /posts/{postId}/cover、POST /media
approvals:write把草稿提交审批POST /posts/{postId}/submit
schedule:write安排定时发布POST /posts、PATCH /posts/{postId}、POST /posts/{postId}/reschedule、POST /posts/{postId}/publish
publish:execute立即对外发布内容POST /posts、PATCH /posts/{postId}、POST /posts/{postId}/confirm、POST /posts/{postId}/publish
comments:read查看已发布内容收到的评论GET /comments
comments:write以工作区的社交账号回复评论POST /comments/{commentId}/replies
analytics:read数据指标与趋势GET /analytics/summary
ideas:read查看选题库GET /ideas
ideas:write往选题库写入选题POST /ideas、PATCH /ideas/{ideaId}

发布落点(三档)

写内容的端点用 action 决定落点:draft 存草稿、schedule 定时、publish 立即外发。凭证签发时逐档勾选,默认一档都不给;请求的档位不在白名单里回 403(params.action)。

落点需要的 scope含义与护栏
draftposts:write只落草稿,预检只提示不拦。
scheduleschedule:write到点由跑批发出;走月配额与硬预检。
publishpublish:execute立即外发;硬预检 + 频控 + 每凭证日上限(默认 20 条/天,可按凭证调)。

长期凭证默认是预授权模式(无人值守,action: "publish" 一步到位)。若凭证被设为两步确认,新建 / 修改会先落草稿并回 confirm.token,十分钟内调 确认发布 才真正外发。响应里有没有 confirm 字段就是判断依据。

安全建议

  • 一个系统一枚凭证,按最小权限勾 scope;读数据的报表脚本不要拿带发布权的钥匙。
  • 把凭证放在密钥管理 / 环境变量里,轮换时先签新的再停旧的。
  • 写操作永远带 Idempotency-Key:网络重试不会变成重复发布。
  • 看到 needs_reauth / no_account,是账号侧要人处理,不要用程序反复重试。