Claude Code Hub 提供两条无需认证的公开状态接口:
GET /api/public-statusGET /api/public-site-meta
这两条接口只返回公开安全字段,用于 /status 页面、外部状态看板和轻量监控集成。它们不会暴露内部 provider 名称、endpoint 地址、原始错误细节或任何管理员专用配置。
OpenAPI 与在线文档入口:
- 原始 OpenAPI JSON:
/api/actions/openapi.json - Swagger UI:
/api/actions/docs - Scalar UI:
/api/v1/scalar
返回公开状态投影,支持窗口参数、分组过滤、模型过滤、状态过滤、文本搜索和字段裁剪。
无需认证,不需要 Cookie,也不需要 Bearer Token。
interval- 允许整数分钟,或兼容旧格式的
Xm - 允许窗口:
5、15、30、60 - 数值超出允许集合时,会夹取到最近值;若距离相同,取更大的窗口
- 非数字语法返回
400
- 允许整数分钟,或兼容旧格式的
rangeHours- 允许整数小时
- 缺省使用 projection 默认值
- 最终夹取到
[1, 168] - 非数字语法返回
400
groupSlug- 单个公开分组 slug 精确过滤
groupSlugs- 逗号分隔的多个公开分组 slug
model- 单个公开模型标识或展示名精确过滤
models- 逗号分隔的多个公开模型标识或展示名
status- 逗号分隔
- 允许值:
operational、degraded、failed、no_data
q- 文本搜索
- 搜索范围:公开分组名称、slug、模型展示名、模型标识
include- 逗号分隔
- 允许值:
meta、defaults、groups、timeline - 缺省返回全部公开字段
generatedAtfreshUntilstatusreadystalerebuildingno_snapshotno_data
rebuildStatestatehasSnapshotreason
defaultsresolvedQuerymetagroups
- projection 有数据时,返回
200 - 正在重建但当前没有可服务快照时,仍返回
200,并通过status="no_snapshot"与rebuildState.hasSnapshot=false明确表达 - Redis 或投影读取不可用且无法退化为 projection-missing 语义时,返回
503 - 查询参数不合法时,返回
400
curl "http://localhost:23000/api/public-status?groupSlug=anthropic&status=failed&include=meta,defaults,groups,timeline"{
"generatedAt": "2026-04-23T04:00:00.000Z",
"freshUntil": "2026-04-23T04:05:00.000Z",
"status": "ready",
"rebuildState": {
"state": "fresh",
"hasSnapshot": true,
"reason": null
},
"defaults": {
"intervalMinutes": 5,
"rangeHours": 24
},
"resolvedQuery": {
"intervalMinutes": 5,
"rangeHours": 24,
"groupSlugs": [
"anthropic"
],
"models": [],
"statuses": [
"failed"
],
"q": null,
"include": [
"meta",
"defaults",
"groups",
"timeline"
]
},
"meta": {
"siteTitle": "Claude Code Hub",
"siteDescription": "Claude Code Hub public status",
"timeZone": "UTC"
},
"groups": []
}{
"generatedAt": null,
"freshUntil": null,
"status": "no_snapshot",
"rebuildState": {
"state": "rebuilding",
"hasSnapshot": false,
"reason": null
},
"defaults": {
"intervalMinutes": 5,
"rangeHours": 24
},
"resolvedQuery": {
"intervalMinutes": 5,
"rangeHours": 24,
"groupSlugs": [],
"models": [],
"statuses": [],
"q": null,
"include": [
"meta",
"defaults",
"groups",
"timeline"
]
},
"meta": null,
"groups": []
}curl "http://localhost:23000/api/public-status?status=unknown"{
"error": "Invalid public status query parameters",
"details": [
{
"field": "status",
"code": "invalid_enum",
"message": "status must be one of: operational, degraded, failed, no_data",
"value": "unknown"
}
]
}返回公开站点标题、描述与时区,只读取 public-status projection。
无需认证。
availablesiteTitlesiteDescriptiontimeZonesourcereason- 仅在 projection 缺失时出现
curl "http://localhost:23000/api/public-site-meta"{
"available": true,
"siteTitle": "Claude Code Hub",
"siteDescription": "Claude Code Hub public status",
"timeZone": "UTC",
"source": "projection"
}{
"available": false,
"siteTitle": null,
"siteDescription": null,
"timeZone": null,
"source": "projection",
"reason": "projection_missing"
}公开状态接口只消费 public-status projection 及其对应的公开配置,不在运行时回退到默认 helper 或数据库读取。
投影内容覆盖以下公开来源:
message_requestprovider_groups.descriptionmodel_pricessystem_settings
这些来源在投影生成阶段会被裁剪成公开安全字段;运行时 public API 只读投影,不再直接访问这些表。