公共 API

公共 API 概述

何时应直接使用 REST API,而不是 MCP 工具。

Showly 的公共 REST API 适用于不方便使用 MCP 的场景,例如 CI 脚本、 自定义仪表盘,以及不由智能体驱动的第三方集成。

如果你正在开发智能体,请优先使用 MCP MCP 原生提供审计、带作用域的令牌和类型化工具输入。REST API 提供相同的操作,但接口更通用,主要面向由人维护的自动化。

基础 URL

https://api.showly.ai

所有请求都必须使用 TLS;纯 HTTP 请求会被拒绝。

版本控制

当前没有 /v1/ 前缀或 Api-Version 请求头,API 采用单一版本线。 破坏性变更会作为重要事件发布在公开的更新日志中, 并注明日期、受影响的路由和迁移说明。如果你维护长期运行的集成, 请关注该页面。新增可选字段、端点等向后兼容的变更会随常规版本发布。

身份验证

每个请求都需要一个 Authorization: Bearer <token> 标头。您将使用的凭据:

  • 个人访问令牌(PAT) — 前缀为 sk_live_ / sk_test_。PAT

只属于创建它的单个工作区,并包含创建时授予的作用域,适合临时 脚本和 CI。

  • MCP 令牌 — 前缀为 mcp_live_ / mcp_test_,可从

工作区设置 → MCP 客户端签发,也可通过设备授权流程获得。令牌 限定在单个工作区,既可用于 MCP,也可验证 REST 请求。

对于无法粘贴静态令牌的智能体环境,Showly 支持 RFC 8628 设备授权流程(POST /oauth/device,然后轮询 POST /oauth/token),并生成绑定到授权用户的 MCP 令牌。完整流程和令牌轮换方式见身份验证

响应结构

每个 JSON 响应都使用统一的外层结构。成功响应:

{
  "ok": true,
  "data": { ... }
}

错误:

{
  "ok": false,
  "error": { "code": "string", "message": "string" }
}

error.code 是稳定的程序契约,调用方应按它分支,不要依赖 error.message。错误码使用 kebab-case 或 snake_case 标识符,例如 rate_limitedidempotency_key_conflictnot_founderror.message 面向人类阅读,可能随版本调整。

速率限制

速率限制取决于已认证工作区当前生效的配置。无论工作区如何计费, MCP 令牌默认最多每分钟请求 60 次;高流量路由可能有更严格的单路由 限制。

触发限流后,服务器返回 HTTP 429error.code: "rate_limited", 以及以秒为单位的 Retry-After 请求头。请严格等待该时长后再重试。

幂等性

创建部署的 POST /sites/:siteId/deploy 必须携带 Idempotency-Key 请求头,否则服务器返回 428。键由调用方生成; 建议每次逻辑操作使用一个 UUID。生产发布也通过同一路由提交 environment: "production"sourceDeploymentId,因此要求相同。 其他路由目前不要求该请求头。

使用同一个键重放相同请求时,服务器会返回首次调用的缓存响应。如果 同一个键对应的请求体发生变化,服务器返回 409idempotency_key_conflict

只读 GET 请求自然是幂等的并且忽略标头。

分页

列表端点(GET /sitesGET /deployments)当前以普通数组返回工作区 的完整结果集,尚无游标或 limit 参数。未来若增加分页,会以向后兼容 的方式使用不透明游标,并在变更日志中说明。

继续阅读

  • 身份验证 — 令牌签发和轮换。
  • 站点 — 列出、创建、检查站点。
  • 部署 — 创建部署、查询状态和历史记录、流式传输管道事件。