本页记录的是
@squarecloud/api v6,这是 SDK 的一次重写。正从 v5 升级?请阅读 v5 → v6 迁移指南。要求
- Node.js 22 或更新版本、Deno、Bun 或边缘运行时。SDK 只需要
fetch、FormData、Blob和 Web Streams。 - 一个 API 密钥(参见 API 密钥与作用域)。
@squarecloud/api-types。
安装
- npm
- pnpm
- yarn
- bun
- deno
API 密钥与作用域
在 squarecloud.app/account/security 创建密钥。SDK 会将其原样放入Authorization 请求头发送(不带 Bearer 前缀)。
密钥可以限制为特定的作用域(apps:read、apps:deploy、apps:control、ai:chat……)以及特定的应用或数据库:
- 超出这些限制的调用会抛出
SquareCloudAPIError,状态为 403,代码为MISSING_SCOPE或RESOURCE_NOT_ALLOWED。 - 列表方法(
account.me()、apps.statusAll()……)只返回该密钥可见的资源。 - 未知、已撤销或已过期的密钥会返回 401
ACCESS_DENIED。
SQUARECLOUD_API_KEY 读取密钥。请在运行示例的终端中设置它:
- macOS / Linux
- Windows (PowerShell)
创建客户端
- TypeScript / ESM
- CommonJS
TypeError,早于任何请求。
选项
模块
仅有的运行时导出是
SquareCloudAPI、SquareCloudAPIError 和 BASE_URL。其他所有导出(App、RuntimeStats、ErrorCode……)都是类型:
约定
ID 在前,返回纯数据
每个方法都以资源 ID 作为第一个参数,并返回纯数据(没有类,没有缓存)。字段名与 API 自身一致(created_at、version_id、lastModified、joinedAt、netIO……),因此 API 参考可直接适用。
- 变更操作解析为
void,除非 API 返回数据(envs.*、deploys.setWebhook、deploys.linkGithubApp、databases.resetCredentials以及各create方法)。 - 字符串结果绝不会是
undefined:当 API 未返回时为""。 - 列表一次调用即完整返回:没有分页。
Workspace 应用
每个appId 也接受组合形式 <appId>-<workspaceId>,用于操作通过 workspace 与你共享的应用。workspaces.get() 和 workspaces.list() 返回原始 ID;组合 ID 需要你自行构建:
ID 会被编码
URL 路径中的 ID 会进行百分号编码。空的、. 或 .. 的 ID 会到达不同的路由,因此会在发送任何内容之前于本地以 INVALID_ID(状态 0)失败。Workspace 路由则将 ID 放在请求体中发送:在那里,INVALID_ID(400)来自服务器。
日期
start 和 end 参数(参见网络)接受 ISO 8601 字符串或 Date。响应中的日期保持 API 发送时的原样(ISO 字符串,或在 API 使用时为 Unix 毫秒)。
超时
timeoutMs 为 0 或更小、Infinity 或 >= 2^31 时,会禁用所有超时,包括 120 秒的下限。
只有五个方法接受 AbortSignal:apps.create、apps.commit、files.write、apps.realtime 和 downloadSnapshot。
reason 拒绝,而不是 SquareCloudAPIError。被中止的 realtime() 循环会直接结束。
账户
api.account.me() 返回已认证的用户,以及该密钥可见的应用和数据库。
api.account.snapshots({ scope }) 列出账户的所有 snapshot:参见 Snapshots。
平台状态
api.service.status() 返回公开的平台状态。该路由不需要有效密钥,但客户端仍要求提供一个非空密钥。
unknown 表示检查本身无法运行:这并不代表发生了故障。
后续步骤
管理应用
状态、生命周期、日志和指标。
错误
错误类、重试和速率限制。
API 简介
基础 URL、身份验证和第一个请求。
CLI 快速开始
在终端中部署和管理应用。

