登录

API 概览

与 Cliqer 集成的完整 API 文档

客户端 API 即 API 附加组件:Presenter、Studio HD 和 Studio 4K 需单独购买,Studio 8K 和 Enterprise 已包含。用于无人值守、服务器到服务器访问 REST 端点的长期 API 密钥在 Studio 8K 和 Enterprise 套餐中生成,请参阅 API 密钥认证。比较套餐。

Cliqer API 的完整文档,涵盖 REST 端点和 WebSocket 实时通信。

基础 URL

https://cliqer.io/api

所有 API 端点均相对于您所连接的 Cliqer 服务器的基础 URL。

代码示例:在 curl/Python/Go 示例中,请将 $BASE_URL 替换为您的 Cliqer 实例 URL(例如 https://cliqer.io)。在 WebSocket 示例中,请将 $WS_URL 替换为 wss://cliqer.io。TypeScript 示例使用相对路径,无需修改即可使用。

认证

Cliqer 使用 httpOnly 会话 Cookie(session_token)进行认证,该 Cookie 由 POST /api/auth/login 生成。浏览器会自动发送该 Cookie;服务器到服务器的工具则将其保存在 Cookie Jar 中。Studio 8K 和 Enterprise 团队还可以生成 API 密钥,用于服务器到服务器的 REST 请求,以 Authorization: Bearer cliqer_<key> 的形式发送(密钥管理需要 Studio 8K 或 Enterprise 套餐)。WebSocket 不接受 API 密钥:请使用会话令牌进行连接。

# The session cookie is set by /api/auth/login and sent on every subsequent request
Cookie: session_token=YOUR_SESSION_TOKEN

# Or authenticate a server-to-server REST request with a team API key
Authorization: Bearer cliqer_<key>

少数端点无需会话,例如公开的 POST /api/licenses/validate。

有关登录、会话轮换和安全最佳实践,请参阅认证。

API 章节

认证

登录、会话轮换和安全最佳实践。

WebSocket 实时通信

像使用远程演示遥控器一样,通过您自己的软件控制房间:翻页、计时器、激光笔,以及向主持人发送消息。

许可证

许可证验证、激活和设备管理。

请求生命周期

错误响应

所有端点均返回标准错误响应:

状态码说明
400错误请求:缺少参数或参数无效
401未授权:没有有效的会话 Cookie
403禁止访问:权限不足或来源不被允许
404未找到:资源不存在
409冲突:例如已达到许可证激活席位上限
429请求过多:超出速率限制(参见 Retry-After)
500服务器内部错误

错误响应格式:

{
  "statusCode": 400,
  "statusMessage": "Description of the error"
}

速率限制

大多数端点按客户端 IP 进行速率限制,采用固定的 60 秒窗口,分为三个等级。当请求超出限制时,服务器会返回 429 Too Many Requests,并附带 Retry-After: 60 标头。不存在渐进式/指数式封禁,也不会返回 X-RateLimit-Remaining 标头。

标头说明
Retry-After距窗口重置的秒数(60,仅在返回 429 时发送)

速率限制等级

等级请求数 / 60 秒适用范围
严格5POST /api/licenses/validate 及登录相关端点(POST /api/auth/login、注册、密码重置、通行密钥和双重验证步骤)
标准30GET /api/licenses/status、POST /api/licenses/deactivate、GET /api/auth/me、POST /api/auth/logout
宽松60高流量读取端点

有两个端点额外施加第二道严格限制,以凭据而非 IP 为键,因此无法通过大量地址轮番冲击同一目标:POST /api/licenses/validate 以 license_key 为键,POST /api/auth/login 以电子邮件地址为键。

超出某一等级的限制后,在该 60 秒窗口的剩余时间内都将返回 429。速率限制由服务器自身强制执行,在端点处理请求之前即已生效。