开放 API v1:用个人令牌调用组件世界
组件世界开放 API v1 参考:用个人 API 令牌(Bearer)更新状态、新建和修改组件、加起始页链接和主页卡片、记待办和习惯、读写我的数据;请求格式、返回格式、错误码和额度。
MCP 能做的事,开放 API 都能做,适合脚本、iOS 快捷指令、自动化工具。先在设置 → API 与 AI 连接新建一个个人 API 令牌。
基本用法
- 地址前缀:
https://widgetstore.net/widget/api/v1 - 认证:请求头
Authorization: Bearer wsp_… - 请求体:JSON(
Content-Type: application/json) - 时间:日期用
YYYY-MM-DD,按北京时间算「今天」
更新状态的例子:
curl -X PUT https://widgetstore.net/widget/api/v1/me/status \
-H "Authorization: Bearer wsp_…" \
-H "Content-Type: application/json" \
-d '{"text":"在京都度假,下周回来","emoji":"🏖"}'
成功时返回:
{
"code": 0,
"data": { … },
"summary": "Status set to \"🏖 在京都度假,下周回来\" on personal page …",
"links": { "page": "…" },
"operationId": "…"
}
summary 是一句人能看懂的说明;修改类接口带 operationId,可以用来撤销。
接口
| 方法和路径 | 做什么 | 权限 |
|---|---|---|
GET /me | 你的空间概览:组件、主页、起始页、待办、数据表 | 读取 |
PUT /me/status | 更新状态:text(≤140 字)、emoji,clear: true 清空 | 状态 |
GET /me/widgets?limit= | 你的组件列表(带嵌入链接) | 读取 |
POST /me/widgets | 新建组件:widget(组件 ID 或 slug)、values、title、lang | 组件 |
PATCH /me/widgets/{id} | 修改组件:values(只改给出的字段)、title | 组件 |
POST /me/countdowns | 新建倒计时:title、date、mode(countdown / anniversary / countup)、repeat | 组件 |
GET /widget-types?category=&type=&lang= | 组件库里的组件类型 | — |
GET /widget-types/search?q=&lang= | 按描述搜索组件,返回可填的字段 | — |
POST /me/startpages/links | 往起始页加网站:url、name,可选 startPage、page | 起始页 |
POST /me/page/cards | 往个人主页加卡片:type(link / text / title / widget)、url、title、text、size、position | 个人主页 |
POST /me/focus/todos | 加待办:title、due、estimateMinutes、priority | 专注 |
POST /me/focus/habits/{习惯名}/check-in | 习惯打卡:date、count、note | 专注 |
POST /me/focus/sessions | 记专注:minutes、task、date、mode | 专注 |
GET /me/tables | 我的数据:表列表 | 读取 |
GET /me/tables/{表名或 ID}/records?from=&to=&limit= | 查记录 | 读取 |
POST /me/tables/{表名或 ID}/records | 加记录:values、date | 我的数据 |
POST /me/operations/{operationId}/undo | 撤销一次修改 | — |
搜索和类型列表不需要额外权限,但仍然要带令牌、计入调用次数。没有删除接口。
错误
出错时 HTTP 状态码不是 200,返回 { "code": 状态码, "msg": "错误码", … }:
| 状态码 | 错误码 | 说明 |
|---|---|---|
| 400 | invalid_json / invalid_params | 请求体不是 JSON,或字段不对(errors 里有具体字段) |
| 400 | blocked_words | 公开内容没通过内容安全检查 |
| 401 | unauthorized / token_invalid / token_expired / token_revoked | 没带令牌、令牌不对、过期或已撤销 |
| 403 | insufficient_scope | 令牌没有这个权限(required 是需要的权限) |
| 403 | pro_required | 这个组件需要 Pro |
| 404 | not_found / widget_not_found / table_not_found / start_page_not_found … | 找不到对象 |
| 409 | undo_not_allowed | 不能撤销(reason:already_undone / too_old / newer_change / not_undoable) |
| 429 | rate_limited / api_daily_limit | 每分钟或每天的次数用完了(retryAfter 秒后再试) |
| 503 | api_paused | API 临时暂停(维护或站点负载过高) |
额度
免费版每天 100 次调用、其中 30 次修改、每分钟 20 次;Pro 每天 300 次、100 次、每分钟 60 次。和 MCP 共用账号额度,详见令牌与操作记录。
兼容的老接口
/api/v1/widgets/instances(创建、修改、读取组件实例)也接受个人令牌:POST 需要「组件」权限、GET 需要「读取」,同样记操作记录、计入额度。新代码建议用上面的 /me/widgets。
最后更新:2026年10月22日