用量 API

更新时间:
复制 MD 格式

成员与组织维度的 Credits 用量事件、汇总,以及共享资源包、席位·月余额批次与指定周期席位·月消耗查询说明。

文档说明

本文说明如何按成员或组织维度查询 Credits 用量事件与汇总,以及如何查询组织的共享资源包、席位·月余额批次明细与指定周期席位·月消耗(仅三方渠道购买组织适用)。调用前请完成 获取 API Key,并阅读 约定与规范

权限要求

  • 使用有效的 API Key。

  • API Key 须关联到目标组织。

概述

用量查询 API 提供成员级别的 Credits 用量明细和汇总查询,支持按日期、来源、操作和模型等级过滤;同时提供组织维度的共享资源包、席位·月余额批次与指定周期席位·月消耗查询,支持按状态、周期过滤和分页。

主要功能

  • 用量事件列表: 分页查询成员的聚合 Credits 用量记录

  • 用量汇总: 按维度(来源或操作)汇总成员在指定时间范围内的 Credits 消耗

  • 组织资源包列表: 分页查询组织名下所有共享资源包的明细,包括激活时间、有效期、初始/已用/剩余额度与状态

  • 席位·月余额批次列表: 分页查询组织名下所有席位·月余额批次的明细,包括来源渠道、剩余数量、生效/到期时间与状态

  • 指定周期席位·月消耗列表: 分页查询组织成员在指定周期内的席位·月消耗情况

API 列表

1. 列出用量事件

GET /v1/organizations/{organization_id}/members/{member_id}/usage-events

分页获取指定成员的聚合 Credits 用量记录。

路径参数

参数

类型

必填

说明

organization_id

string

组织 ID

member_id

string

成员 ID

查询参数

参数

类型

必填

说明

startDate

string

开始时间,支持 RFC 3339 格式或 Unix 毫秒时间戳

endDate

string

结束时间,支持 RFC 3339 格式或 Unix 毫秒时间戳

sources

string

按来源过滤,逗号分隔。可选值:IDECLIJetBrains PluginWebQoderWork

operations

string

按操作过滤,逗号分隔。可选值:Inline ChatAskAgentRepo WikiQuestPlan ModeCode ReviewOptimize InputVoice InputExpertsImage

modelTiers

string

按模型等级过滤,逗号分隔

maxResults

integer

每页数量(默认 20,最大 100)

nextToken

string

分页游标

成功响应 (200 OK)

{
  "usages": [
    {
      "timestamp": 1719849600000,
      "userId": "user_abc123",
      "userEmail": "user@example.com",
      "source": "IDE",
      "operation": "Agent",
      "modelTier": "Ultimate",
      "credits": 0.35,
      "cost": 0.35
    },
    {
      "timestamp": 1719849500000,
      "userId": "user_abc123",
      "source": "CLI",
      "operation": "Completion",
      "credits": 0.02,
      "cost": 0.02
    }
  ],
  "maxResults": 20,
  "nextToken": "eyJwYWdlIjogMn0="
}

部分记录可能不返回 userEmailmodelTier,集成时请按可选字段处理。

响应字段说明

字段

类型

说明

usages

array

用量记录列表

usages[].timestamp

int64

开始时间(Unix 毫秒时间戳)

usages[].userId

string

用户 ID

usages[].userEmail

string

用户邮箱(可能为空)

usages[].source

string

来源

usages[].operation

string

操作

usages[].modelTier

string

模型等级(可能为空)

usages[].credits

float64

消耗 Credits(保留两位小数)

usages[].cost

float64

账单折算后的成本(保留两位小数)

maxResults

int32

本次请求的每页数量

nextToken

string

下一页游标,为空表示最后一页

2. 获取用量汇总

GET /v1/organizations/{organization_id}/members/{member_id}/usage-summary

按指定维度汇总成员在给定时间范围内的 Credits 消耗。时间范围不得超过 7 天。

查询参数

参数

类型

必填

说明

startDate

string

开始时间

endDate

string

结束时间

groupBy

string

分组维度:source(按来源)或 operation(按操作)

成功响应 (200 OK)

按来源汇总:

{
  "summary": {
    "IDE": 12.50,
    "CLI": 3.25
  }
}

按操作汇总:

{
  "summary": {
    "Agent": 8.40,
    "Completion": 5.10,
    "Inline Chat": 2.25
  }
}

响应字段说明

字段

类型

说明

summary

object

汇总结果,key 为分组名称,value 为总 Credits

summary.{key}

float64

该分组的总 Credits 消耗(保留两位小数)

3. 列出组织用量事件

GET /v1/organizations/{organization_id}/usage-events

分页获取指定组织下所有成员的聚合 Token 用量记录。返回结构与成员用量事件接口一致。

路径参数

参数

类型

必填

说明

organization_id

string

组织 ID

查询参数与「列出用量事件」一致。响应字段定义与「1. 列出成员用量事件」完全一致。

4. 列出组织共享资源包

GET /v1/organizations/{organization_id}/resource-packages

按组织维度分页返回所有共享资源包明细。

查询参数

参数

类型

必填

说明

status

string

按状态过滤:activeexhaustedexpiredsuspended

orderBy

string

排序字段:expiresAt(默认)、activatedAtremainingValue

order

string

排序方向:asc(默认)、desc

maxResults

integer

每页数量(默认 20,最大 100)

nextToken

string

分页游标

成功响应 (200 OK)

{
  "resourcePackages": [
    {
      "id": "pkg-001",
      "name": "Enterprise Annual Pack",
      "source": "purchased",
      "status": "active",
      "activatedAt": "2025-01-01T00:00:00Z",
      "expiresAt": "2026-01-01T00:00:00Z",
      "limitValue": 3000.0,
      "usedValue": 800.0,
      "remainingValue": 2200.0,
      "unit": "credits"
    }
  ],
  "maxResults": 20,
  "nextToken": "eyJwYWdlIjogMn0="
}

响应字段说明

字段

类型

说明

resourcePackages

array

资源包列表

resourcePackages[].id

string

资源包唯一 ID

resourcePackages[].name

string

资源包名称

resourcePackages[].source

string

来源:purchasedbonustrialcarryOverrefunddevsales

resourcePackages[].status

string

状态:activeexhaustedexpiredsuspended

resourcePackages[].activatedAt

string

激活时间(可能为空)

resourcePackages[].expiresAt

string

到期时间

resourcePackages[].limitValue

float64

初始总额度

resourcePackages[].usedValue

float64

已消耗额度

resourcePackages[].remainingValue

float64

剩余额度

resourcePackages[].unit

string

额度单位

状态说明

状态

说明

进入条件

active

生效中,可消费

资源包激活后默认进入

exhausted

已用尽

剩余额度归零

expired

已过期

系统定时任务翻转

suspended

已暂停

管理端手动操作

如需做精确的「真实可用」判定,建议在客户端结合 statusexpiresAt 联合判断:真实可用 = status == "active" AND expiresAt > now

5. 列出组织席位·月余额批次

注意: 本接口仅适用于通过三方渠道(如云市场兑换码)购买的组织。

GET /v1/organizations/{organization_id}/seat-month-batches

按组织维度分页返回席位·月余额批次明细。

查询参数

参数

类型

必填

说明

status

string

按状态过滤:activeexhaustedexpiredrefunded

pageSize

integer

每页数量(默认 100,最大 500)

pageToken

string

页码游标

成功响应 (200 OK)

{
  "seatMonthBatches": [
    {
      "id": "batch-001",
      "redemptionCodeId": "rc-001",
      "status": "active",
      "sourceChannel": "REDEMPTION_CODE",
      "thirdPartyInstanceId": "inst_xxx",
      "productCode": "qoder_team_seat_month",
      "reportRequired": true,
      "totalSeatMonths": 120.0,
      "usedSeatMonths": 30.0,
      "remainingSeatMonths": 90.0,
      "effectiveAt": "2026-06-01T00:00:00Z",
      "expiresAt": "2026-09-01T00:00:00Z",
      "createdAt": "2026-06-01T00:00:00Z",
      "updatedAt": "2026-06-10T00:00:00Z"
    }
  ],
  "pageSize": 100,
  "nextToken": "2"
}

如何计算当前可用席位·月余额

接口不直接返回总余额。可以按以下条件筛选批次再汇总 remainingSeatMonths

可用批次 = status == "active"
        AND effectiveAt <= now
        AND expiresAt > now
        AND remainingSeatMonths > 0

6. 查询指定周期席位·月消耗

注意: 本接口仅适用于通过三方渠道(如云市场兑换码)购买的组织。

GET /v1/organizations/{organization_id}/seat-month-usages

按组织维度分页返回指定周期范围内的成员席位·月消耗。

计算口径

netSeatMonths = max(consumedSeatMonths - refundedSeatMonths, 0)

查询参数

参数

类型

必填

说明

periodStart

string

周期范围开始时间,RFC 3339 格式

periodEnd

string

周期范围结束时间,RFC 3339 格式

memberId

string

按组织成员 ID 过滤

userId

string

按用户 ID 过滤

pageSize

integer

每页数量(默认 100,最大 500)

pageToken

string

页码游标

成功响应 (200 OK)

{
  "seatMonthUsages": [
    {
      "memberId": "member_abc123",
      "userId": "user_abc123",
      "periodStart": "2026-06-01T00:00:00Z",
      "periodEnd": "2026-07-01T00:00:00Z",
      "consumedSeatMonths": 20.0,
      "refundedSeatMonths": 5.0,
      "netSeatMonths": 15.0
    }
  ],
  "pageSize": 100,
  "nextToken": "2"
}

响应字段说明

字段

类型

说明

seatMonthUsages[].memberId

string

组织成员 ID

seatMonthUsages[].userId

string

用户 ID

seatMonthUsages[].periodStart

string

计费周期开始时间

seatMonthUsages[].periodEnd

string

计费周期结束时间

seatMonthUsages[].consumedSeatMonths

float64

原始消耗的席位·月

seatMonthUsages[].refundedSeatMonths

float64

已返还的席位·月

seatMonthUsages[].netSeatMonths

float64

实际净消耗的席位·月

使用示例

列出成员用量事件

curl -X GET "https://api.qoder.com.cn/v1/organizations/org_xxx/members/member_abc123/usage-events?maxResults=20" \
  -H "Authorization: Bearer <api_key>"

按日期范围过滤

curl -X GET "https://api.qoder.com.cn/v1/organizations/org_xxx/members/member_abc123/usage-events?startDate=2025-06-01T00:00:00Z&endDate=2025-06-30T23:59:59Z" \
  -H "Authorization: Bearer <api_key>"

列出组织用量事件

curl -X GET "https://api.qoder.com.cn/v1/organizations/org_xxx/usage-events?maxResults=20" \
  -H "Authorization: Bearer <api_key>"

按来源汇总用量

curl -X GET "https://api.qoder.com.cn/v1/organizations/org_xxx/members/member_abc123/usage-summary?startDate=2026-03-13T00:00:00Z&endDate=2026-03-20T00:00:00Z&groupBy=source" \
  -H "Authorization: Bearer <api_key>"

列出组织资源包

curl -X GET "https://api.qoder.com.cn/v1/organizations/org_xxx/resource-packages?status=active&orderBy=expiresAt&order=asc&maxResults=20" \
  -H "Authorization: Bearer <api_key>"

列出组织席位·月余额批次

curl -X GET "https://api.qoder.com.cn/v1/organizations/org_xxx/seat-month-batches?pageSize=100" \
  -H "Authorization: Bearer <api_key>"

查询指定周期内的席位·月消耗

curl -X GET "https://api.qoder.com.cn/v1/organizations/org_xxx/seat-month-usages?periodStart=2026-06-01T00:00:00Z&periodEnd=2026-07-01T00:00:00Z&pageSize=100" \
  -H "Authorization: Bearer <api_key>"

错误码

错误码

HTTP 状态码

说明

BadRequest

400

请求参数无效

Unauthorized

401

API Key 缺失或无效

Forbidden

403

无权限访问该组织

NotFound

404

资源不存在

InternalError

500

服务器内部错误

错误响应结构见 约定与规范 中的「错误响应」一节。