获取用量分析
curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/consumption \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/consumption"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://server.codeium.com/api/v2alpha/analytics/consumption', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.codeium.com/api/v2alpha/analytics/consumption",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://server.codeium.com/api/v2alpha/analytics/consumption"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://server.codeium.com/api/v2alpha/analytics/consumption")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/consumption")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"timestamp": "2026-01-15T00:00:00.000Z",
"user_id": "user_abc123",
"user_email": "alice@example.com",
"consumption": {
"prompt_credits": 1250,
"flex_credits": 340,
"message_count": 87
}
},
{
"timestamp": "2026-01-15T00:00:00.000Z",
"user_id": "user_def456",
"user_email": "bob@example.com",
"consumption": {
"prompt_credits": 980,
"flex_credits": 150,
"message_count": 52
}
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"billing_strategy": "CREDITS",
"data_freshness": "2026-01-16T03:00:00.000Z",
"query_time_ms": 1423,
"team_id": "team_abc123"
}
}分析 API
获取用量
查询积分或 ACU 用量数据,支持灵活的筛选、分组和分页。
GET
/
api
/
v2alpha
/
analytics
/
consumption
获取用量分析
curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/consumption \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/consumption"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://server.codeium.com/api/v2alpha/analytics/consumption', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.codeium.com/api/v2alpha/analytics/consumption",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://server.codeium.com/api/v2alpha/analytics/consumption"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://server.codeium.com/api/v2alpha/analytics/consumption")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/consumption")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"timestamp": "2026-01-15T00:00:00.000Z",
"user_id": "user_abc123",
"user_email": "alice@example.com",
"consumption": {
"prompt_credits": 1250,
"flex_credits": 340,
"message_count": 87
}
},
{
"timestamp": "2026-01-15T00:00:00.000Z",
"user_id": "user_def456",
"user_email": "bob@example.com",
"consumption": {
"prompt_credits": 980,
"flex_credits": 150,
"message_count": 52
}
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"billing_strategy": "CREDITS",
"data_freshness": "2026-01-16T03:00:00.000Z",
"query_time_ms": 1423,
"team_id": "team_abc123"
}
}这是一个v2 端点,使用 Bearer 令牌身份验证和查询参数;不同于 v1 分析 API,后者在请求体中使用服务密钥。请参阅下方的身份验证。
此端点不适用于实时用量监控。数据按小时聚合,且
速率限制较低 (每个团队每小时 10 个请求) 。请将其用于定期报告和批量导出。
身份验证
Authorization 标头中添加你的令牌:
Authorization: Bearer <your_token>
计费策略
| 策略 | 已填充字段 | 描述 |
|---|---|---|
CREDITS | prompt_credits, flex_credits | 标准版 Enterprise SaaS 团队 |
ACU | billed_acus | 按 ACU 计费的团队 |
message_count 字段 (位于 consumption 内) 都会返回。
分组与粒度
granularity 和 group_by 控制返回数据的结构:
- 无粒度或分组 — 在整个日期范围内返回一条聚合结果
granularity=daily— 每一行都包含一个格式为YYYY-MM-DD的timestampgranularity=monthly— 每一行都包含一个格式为YYYY-MM的timestampgroup_by=user— 每一行都包含user_id和user_emailgroup_by=user,model_uid— 每一行都包含user_id、user_email和model_uidgroup_by=ide— 每一行都包含一个idegroup_by=ide,ide_version— 每一行都包含ide和ide_version(按ide_version分组时,也必须同时包含ide)group_by=os— 每一行都包含一个os,例如darwin(macOS)、windows或linux
分页
pagination 对象中包含一个 next_page_cursor。将其作为 page_cursor 查询
参数传入,以获取下一页。
页面游标会在 24 小时后过期。后续的分页请求不会作为新的查询计入你的速率限制。
缓存
ETag 标头。为避免重复传输数据,请在请求中包含上一次返回的 ETag 值作为 If-None-Match 标头
——如果数据未发生变化,服务器将返回 304 Not Modified。
速率限制
429 Too Many Requests,并附带 Retry-After 标头。
对先前的查询结果进行分页 (即沿用 next_page_cursor) 不会计入此限制——
只有每份报告的首次查询才会计入。较低的限制说明,此端点用于
定期生成报告,而非实时用量监控。授权
请求头
来自上一个响应的 ETag 值。如果数据未发生变化,服务器将返回 304 Not Modified。
查询参数
日期范围的开始日期(含),格式为 YYYY-MM-DD。
日期范围的结束日期(含),格式为 YYYY-MM-DD。范围不得超过 90 天。
要查询用量的产品。
可用选项:
agent 用于对结果分组的时间粒度。指定后,每一行都包含 timestamp 字段。
如果省略,结果会在整个日期范围内聚合。
可用选项:
daily, monthly 用于对结果进行分组的维度列表,以逗号分隔。支持的维度:
user— 每行包含user_id和user_emailmodel_uid— 每行包含model_uidide— 每行包含ideide_version— 每行包含ide_version;同时还必须包含ideos— 每行包含os
用于筛选结果的模型 UID 列表,以逗号分隔。
将结果筛选为特定组中的用户。服务密钥必须具有对此组的访问权限。
将结果筛选为特定用户(auth UID)。
每页返回的最大行数。
必填范围:
1 <= x <= 10000来自上一个响应中 pagination.next_page_cursor 的不透明游标,用于获取下一页。

