Skip to main content
通用约定

认证

使用个人访问令牌(PAT)或服务账号令牌(SAT)认证 Qoder Cloud Agents API 请求。

Qoder Cloud Agents API 支持两种 Bearer 令牌:PAT(Personal Access Token,个人访问令牌)SAT(Service Account Token,服务账号令牌)。每个 API 请求都必须在 Authorization 头中携带其中一种有效令牌。
令牌适用场景获取方式
PAT用户身份调用,适合个人开发和调试在 Qoder 控制台中创建
SATService Account 身份调用,适合服务端集成和自动化使用 Service Account API Key(SA Key)置换短期 JWT
SA Key 是用于置换 SAT 的长期凭据,不应直接用于调用 Cloud Agents 业务接口。

选择服务区域

置换 SAT 和调用业务 API 必须使用同一区域的地址。请设置以下服务地址:
export QODER_OPENAPI_BASE_URL="https://openapi.qoder.sh"
export QODER_API_BASE_URL="https://api.qoder.com"

方式一:使用 PAT

获取 PAT

  1. 登录 Qoder 控制台
  2. 进入 设置 → 个人访问令牌
  3. 点击 创建令牌,设置名称、权限范围和有效期
  4. 复制生成的 PAT,并设置环境变量:
export QODER_PAT="pt-your-token-here"
PAT 以 pt- 前缀开头,完整值仅在创建时显示一次。请勿将令牌提交到代码仓库或分享给他人。

方式二:使用 Service Account 和 SAT

获取并设置 SA Key

  1. 使用组织管理员账号登录 Qoder 控制台
  2. 在组织管理中创建或选择 Service Account
  3. 在 Service Account 详情页创建 API Key。创建时无需选择 scope;所需 scope 在后续置换 SAT 时指定
  4. 复制 SA Key,并设置环境变量:
export QODER_SA_KEY="sa-key"
SA Key 的完整值仅在创建时显示一次。请将它保存在密钥管理系统中,不要写入代码或日志。

置换 SAT(JWT)

调用 Service Token Exchange 接口,使用 SA Key 置换 SAT:
SAT_RESPONSE=$(curl --silent --show-error --location "$QODER_OPENAPI_BASE_URL/api/v1/serviceToken/exchange" \
  --header "Authorization: Bearer $QODER_SA_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "grant_type": "client_credentials",
    "audience": "qoder",
    "scope": "qca.access",
    "ttl_seconds": 43200
  }')

export QODER_SAT="$(printf '%s' "$SAT_RESPONSE" | jq -r '.access_token')"
字段说明
grant_type固定为 client_credentials
audience固定为 qoder
scope在置换请求中指定:仅调用 Managed API 时使用 qca.access;同时调用 Forward 和 Managed API 时使用 qca.access forward.access。不能超出 SA Key 已配置的权限
ttl_secondsSAT 有效期,单位为秒;最大为 43200(12 小时)
响应中的 access_token 即 SAT。SAT 过期后不能刷新,需要使用 SA Key 重新调用上述置换接口。

使用同一个 SAT 调用 Forward 和 Managed API

如果服务端集成需要使用同一个 SAT 调用 Forward(/api/v1/forward/*)和 Managed(/api/v1/cloud/*)API,请在置换时同时传入 qca.accessforward.access
SAT_RESPONSE=$(curl --silent --show-error --location "$QODER_OPENAPI_BASE_URL/api/v1/serviceToken/exchange" \
  -H "Authorization: Bearer $QODER_SA_KEY" \
  -H 'Content-Type: application/json' \
  --data '{
    "grant_type": "client_credentials",
    "audience": "qoder",
    "scope": "qca.access forward.access",
    "ttl_seconds": 3600
  }')

export QODER_SAT="$(printf '%s' "$SAT_RESPONSE" | jq -r '.access_token')"
同时包含 qca.accessforward.access 的 SAT 在 Forward 中具有当前 Service Account 所属账号下的管理员权限,可管理该账号下的 Forward 资源。仅应在受信任的服务端使用;请勿提供给终端用户或不受信任的客户端,并建议按环境隔离 SA Key、使用满足业务需要的最短有效期。
同一个 SAT 可分别调用两类 API:
# Forward API
curl -s "$QODER_API_BASE_URL/api/v1/forward/templates?limit=1" \
  -H "Authorization: Bearer $QODER_SAT"

# Managed API
curl -s "$QODER_API_BASE_URL/api/v1/cloud/agents?limit=1" \
  -H "Authorization: Bearer $QODER_SAT"

兼容现有接入方式

  • 仅调用 Managed API 的现有集成可继续只申请和传入 qca.access
  • PAT 的获取和使用方式不变。
  • 仅调用 Forward API,或需要精确吊销绑定单个 Identity时,仍可通过 Forward Token 接口签发 SAT。
接口详情见 ServiceAccountTokens 接口文档

Bearer 头格式

使用 PAT 或 SAT 调用 Cloud Agents API 时,统一通过 Bearer 方式传递:
Authorization: Bearer <PAT 或 SAT>
建议将当前选用的令牌设置为统一环境变量:
# 个人用户
export QODER_ACCESS_TOKEN="$QODER_PAT"

# 或 Service Account
export QODER_ACCESS_TOKEN="$QODER_SAT"
完整请求示例:
curl -s "$QODER_API_BASE_URL/api/v1/cloud/agents" \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN"

安全建议

  • 为不同环境(开发/测试/生产)创建独立 PAT 或 SA Key
  • 将 PAT 和 SA Key 存储在密钥管理系统中,不要硬编码
  • 置换 SAT 时仅申请集成所需的最小 scope
  • 在 SAT 过期前重新置换,并安全替换运行中的令牌
  • 发现 PAT 或 SA Key 泄漏时,立即在控制台撤销或轮换