Skip to content
登录 注册

用量与配额 API

这些端点返回的带宽数据与控制面板仪表盘上显示的完全一致:本计费周期内您已使用了多少套餐流量,以及还剩多少。对于 Residential Proxies,它们还会告诉您配额用完后会发生什么。

此外还有一个用量历史端点,用于查询任意时间窗口内的消耗量,而不是当前周期的用量。

这三个端点均使用 api_token 查询参数进行身份验证。请在控制面板Account → API Tokens 中生成令牌。

?api_token=YOUR_API_TOKEN

账户端点和套餐端点的速率限制为每分钟 60 次请求,历史端点为每分钟 30 次。

GET https://shifter.io/api/v1/user/usage

为每个有效套餐返回一个条目,并返回所有计量套餐的合计值。

令牌属于您本人,而不属于某一个工作区,因此返回结果既包含您自己的套餐,包含您受邀加入的任何工作区中的套餐。响应会先列出这些工作区,并为每个套餐标注其所属的工作区;传入 workspace 可将结果限定为单个工作区。

参数位置必填说明
api_tokenqueryyes您的账户 API 令牌
workspacequeryno工作区 ID,仅返回该工作区的套餐

示例:

Terminal window
curl "https://shifter.io/api/v1/user/usage?api_token=YOUR_API_TOKEN"

响应:

{
"error": null,
"code": 200,
"data": {
"totals": {
"quota_bytes": 25000000000,
"used_bytes": 12300000000,
"remaining_bytes": 12700000000,
"overage_bytes": 0,
"quota_gb": 25,
"used_gb": 12.3,
"remaining_gb": 12.7,
"overage_gb": 0,
"used_percent": 49.2
},
"workspaces": [
{ "id": "qbz6", "name": "Personal", "role": "owner", "personal": true, "wallet_balance": 25.00 },
{ "id": "7dLm", "name": "Acme Inc", "role": "viewer", "personal": false, "wallet_balance": 0 }
],
"memberships": [
{
"id": "aB3xY9",
"plan": "Residential Proxies 25 GB",
"service": "backconnect",
"status": "Active",
"metered": true,
"quota_bytes": 25000000000,
"used_bytes": 12300000000,
"remaining_bytes": 12700000000,
"overage_bytes": 0,
"quota_gb": 25,
"used_gb": 12.3,
"remaining_gb": 12.7,
"overage_gb": 0,
"used_percent": 49.2,
"resets_at": "2026-08-14T09:31:00+00:00",
"overage_billed": true,
"overage_rate_per_gb": 0.4,
"wallet_balance": 25.00,
"wallet_covers_gb": 62.5,
"workspace": {
"id": "qbz6",
"name": "Personal",
"role": "owner",
"personal": true
}
},
{
"id": "kM7pQ2",
"plan": "ISP Proxies 10 IPs",
"service": "static-residential-proxies",
"status": "Active",
"metered": false,
"quota_bytes": null,
"used_bytes": null,
"remaining_bytes": null,
"overage_bytes": null,
"quota_gb": null,
"used_gb": null,
"remaining_gb": null,
"overage_gb": null,
"used_percent": null,
"resets_at": null,
"overage_billed": false,
"overage_rate_per_gb": null,
"wallet_balance": 0,
"wallet_covers_gb": null,
"workspace": {
"id": "7dLm",
"name": "Acme Inc",
"role": "viewer",
"personal": false
}
}
]
}
}

如果您受邀加入了他人的工作区,他们的套餐会与您自己的套餐一起显示在这里。workspaces 数组列出您的个人工作区以及您作为成员加入的每一个工作区,每个套餐的 workspace 字段下也带有相同的对象:

字段说明
id工作区 ID,即 workspace 查询参数接受的值
name工作区名称,您自己的工作区为 Personal
role您在该工作区中的角色:owneradminbillingviewer
personal您自己的工作区为 true
wallet_balance该工作区钱包中的资金,以美元计

所有角色都可以读取用量,就像所有角色都可以在控制面板中查看套餐一样。

即使您进行了筛选,workspaces 也始终是完整列表,因此只需一次调用即可获知所有 ID:

Terminal window
curl "https://shifter.io/api/v1/user/usage?workspace=7dLm&api_token=YOUR_API_TOKEN"
GET https://shifter.io/api/v1/memberships/{membership}/usage

返回单个套餐的用量,即上文 memberships 数组中出现的同一对象,但不含 workspace 块。

{membership} 路径参数接受套餐标识符的两种形式:控制面板套餐页面上显示的 Membership ID(例如 68057),或套餐 URL 中的短代码,也就是这些响应中的 id 字段(例如 Rxqk)。两者指向同一个套餐。

此端点适用于您可以访问的任何套餐:您自己的套餐,以及您所属工作区中的任何套餐。

参数位置必填说明
membershippathyesMembership ID 或短代码
api_tokenqueryyes您的账户 API 令牌

示例:

Terminal window
curl "https://shifter.io/api/v1/memberships/68057/usage?api_token=YOUR_API_TOKEN"

响应:

{
"error": null,
"code": 200,
"data": {
"id": "aB3xY9",
"plan": "Residential Proxies 25 GB",
"service": "backconnect",
"status": "Active",
"metered": true,
"quota_bytes": 25000000000,
"used_bytes": 12300000000,
"remaining_bytes": 12700000000,
"overage_bytes": 0,
"quota_gb": 25,
"used_gb": 12.3,
"remaining_gb": 12.7,
"overage_gb": 0,
"used_percent": 49.2,
"resets_at": "2026-08-14T09:31:00+00:00",
"overage_billed": true,
"overage_rate_per_gb": 0.4,
"wallet_balance": 25.00,
"wallet_covers_gb": 62.5
}
}
GET https://shifter.io/api/v1/memberships/{membership}/usage/history

上面两个端点回答的是“本计费周期的使用情况如何”。而这个端点回答的是“在这两个时间点之间我用了多少”,这是另一个问题:周期数据会在续订时重置,因此无法告诉您上周二或上个月的情况。

参数位置必填说明
membershippathyesMembership ID 或短代码
api_tokenqueryyes您的账户 API 令牌
startqueryyes时间窗口的起点(包含)
endqueryyes时间窗口的终点(不包含)

startend 接受日期(2026-08-16)或完整的时间戳(2026-08-16T09:00:00)。仅有日期时表示当天零点,因此单独一天写作 start=2026-08-16&end=2026-08-17。时间窗口最短可为一小时,最长为 366 天。

示例:

Terminal window
curl "https://shifter.io/api/v1/memberships/68057/usage/history?start=2026-08-16&end=2026-08-17&api_token=YOUR_API_TOKEN"

响应:

{
"error": null,
"code": 200,
"data": {
"id": "aB3xY9",
"start": "2026-08-16T00:00:00",
"end": "2026-08-17T00:00:00",
"bytes": 184699800000,
"gb": 184.7,
"upload_bytes": 8146690000,
"download_bytes": 176553110000,
"requests": 3775940
}
}

如需按天绘制用量图表,请每天调用一次,并将每一天作为独立的时间窗口。合计值可以精确相加,因此一周的每日调用之和与一次跨越整周的调用得到的数字相同。

此端点的速率限制为每分钟 30 次请求,而不是另外两个端点的 60 次。

状态码含义
400startend 缺失、无法解析、顺序颠倒,或相隔超过 366 天
503用量历史暂时不可用,请退避重试
字段说明
id套餐的短代码,可与数字形式的 Membership ID 一样用于路径中
plan产品名称,与控制面板中显示的一致
service产品系列,例如 backconnectstatic-residential-proxiesscraping
status套餐状态,例如 ActiveActive TrialOverdue
metered该套餐是否设有带宽配额
quota_bytes / quota_gb当前计费周期可用的带宽:套餐包含的额度,加上您为该套餐购买的所有流量充值
used_bytes / used_gb当前计费周期内截至目前已消耗的带宽
remaining_bytes / remaining_gb配额减去用量,最低为零
overage_bytes / overage_gb超出所含配额的用量,仍在配额内时为零
used_percent用量占配额的百分比。出现超额用量时会超过 100
resets_atISO 8601 时间戳,表示周期更替、用量归零的时间
overage_billed该套餐超出配额后是否从钱包扣费
overage_rate_per_gb超出配额后每 GB 的费用,以美元计。不对超额用量计费的套餐为 null
wallet_balance工作区钱包中的资金,以美元计
wallet_covers_gb按该费率计算,余额大约可支付超出配额的多少 GB

ISP Proxies 和 Sneaker Proxies 不限流量,而 Web Scraping API 和 SERP API 套餐按请求数而非带宽计价。这些套餐会返回 "metered": false,各项数值为 null,而不是一个容易被理解为“已无剩余”的零。它们仍会被列出,因此账户响应能完整反映您拥有的全部套餐。

Residential Proxies 不会在达到上限时停止:超出部分的用量会按每 GB 费率从您的工作区钱包扣费,因此只要钱包中有资金,套餐就会继续工作。overage_rate_per_gb 就是该费率,wallet_covers_gb 则是当前余额按该费率大约还能支撑多少流量,是在 remaining_gb 之外的一个粗略续航估算。

该费率是您的实际费率:套餐价格除以套餐配额,并已计入您享有的任何优惠券或折扣。它与控制面板套餐页面上 Overage rate 下显示的数字相同,也是计费任务扣费时使用的费率。

有几点值得了解:

  • 钱包是按工作区设置的,而不是按套餐。如果您运行多个 Residential 套餐,每个套餐上的 wallet_covers_gb 都假设全部余额用于该套餐,它们都是基于同一笔资金计算的。
  • 在试用期间,overage_billedfalse。试用在达到额度时会暂停而不是计费,因此没有可覆盖流量的数值。费率仍会给出,因为这是试用转为正式套餐后的费用。
  • 在其他所有产品上,overage_rate_per_gbnull:这些套餐会在达到上限时停止,而不会对超出部分计费。
  • 当余额降至零且配额用尽时,服务会暂停,直到您充值或周期续订。

用量是在当前计费周期内累计的,而不是滚动的 30 天窗口。它会在 resets_at,即套餐续订时归零。

状态码含义
401api_token 缺失或无效
403该套餐位于您不属于的工作区中
404未找到套餐
429一分钟内超过 60 次请求,请退避重试