接口版本 1 · 更新于 2026-09-21 · 以下数值均为示例,不是实际账号数据。
“当前已用 31%”表示截至最新同步已经使用 31%,当前还有 69% 的该项额度。
原“预计用量 31%”,现名“5H 重置前预计已用 31%”表示按当前平均消耗速度,到各自五小时窗口结束时预计累计使用 31%,届时预计剩余 69%。它不是“目前已经使用了 31%”,也不能据此断言“现在还剩 69%”。
例如:五小时窗口平均已过去一半(2.5 小时),平均当前已用 15.5%,则重置前预计已用为 15.5 ÷ 0.5 = 31%。此时当前剩余是 84.5%,预计窗口结束时剩余才是 69%。
| 指标 | 含义 | 示例 |
|---|---|---|
| 周限当前剩余 | 有周限数据的服务中账号,在各自当前七天窗口里,平均还剩多少额度。 | 69% = 当前平均剩余 69%、已用 31%。如果这里显示 31%,则表示剩余 31%、已用 69%。 |
| 5H 当前已用 | 有五小时用量数据的服务中账号,在各自当前五小时窗口里,平均已经使用多少额度。 | 31% = 当前已用 31%、剩余 69%。 |
| 5H 剩余 | 五小时窗口的当前平均剩余额度。 | 84.5% = 当前已用 15.5%。 |
| 5H 重置前预计已用 | 对用量和重置时间有效的服务中账号,按当前平均速度推算的五小时窗口结束时累计使用比例。 | 31% = 届时预计已用 31%、剩余 69%。 |
| 届时预计剩余 | 根据“重置前预计已用”推算,窗口结束时预计尚未消耗的比例。 | 预计已用 120% 时,预计剩余为 0%,提示可能提前耗尽。 |
周限与 5H 是两个独立的限制窗口,不能将两者的百分比相加或相互替代。七天窗口由每个账号的上游重置时间决定,不是固定的周一到周日;五小时窗口也不保证所有账号同时重置。
这里的百分比反映额度,不是请求数、Token 数、美元金额、费用结算比例或“调用成功概率”。周限统计中的 ≥ 90% 属于业务统计与结算口径,额度剩余仍按 100% 计算。例如已用 95% 的剩余为 5%。
“偏少”“合适”等标签只是页面对预测值的分档提示。预计值低表示以当前速度可能有较多额度在重置时未被使用;预计值高表示消耗较快。它们不改变百分比含义,也不保证每个账号均能立即调用。
GET https://lighthou.org/api/quota
无需查询参数。返回当前登录用户的汇总指标,不接受用于切换用户的 user_id 参数。使用网站现有的登录会话进行鉴权,其他用户的数据不会包含在返回值中。
浏览器已经登录时可直接访问接口。程序调用先通过 POST /api/login,JSON 请求体为 {"key":"dfk_你的密钥"},保存响应中的 lh_session Cookie,然后携带 Cookie 请求本接口。会话有效期为 7 天,过期返回 401,需重新登录。登录响应正文不返回 Token。
如已有本站会话 Token,也支持 Authorization: Bearer <lh_session 的值>。Bearer 的值是本站会话 Token,不能直接填写 dfk_ 密钥。接口不支持匿名查询,也不支持跨域浏览器直接读取;外部网站可由自己的服务端调用。
以下 Bash 示例通过隐藏输入读取密钥,不将真实密钥写进命令历史。Cookie 文件包含登录凭据,应保存在自己的私有目录。
umask 077
read -r -s -p '请输入 dfk_ 密钥: ' quota_login_key
printf '\n'
printf '%s' "$quota_login_key" |
python3 -c 'import json,sys; print(json.dumps({"key":sys.stdin.read()}))' |
curl --fail-with-body --silent --show-error \
-c ./lighthouse-cookies.txt \
-H 'Content-Type: application/json' \
--data-binary @- https://lighthou.org/api/login
unset quota_login_key
curl --fail-with-body --silent --show-error \
-b ./lighthouse-cookies.txt \
https://lighthou.org/api/quota
首次登录会启动后台同步,第一次查询可能尚无数据。可等待约一个同步周期后重试;如需主动拉取,调用 POST /api/refresh 并携带同一个 Cookie,成功后再查询。GET /api/quota 本身只读取本地快照,不触发上游同步、不改变额度或结算记录。
import getpass
import http.cookiejar
import json
import urllib.error
import urllib.request
base = 'https://lighthou.org'
client = urllib.request.build_opener(
urllib.request.HTTPCookieProcessor(http.cookiejar.CookieJar()))
login = urllib.request.Request(
base + '/api/login',
data=json.dumps({'key': getpass.getpass('dfk_ 密钥: ')}).encode(),
headers={'Content-Type': 'application/json'}, method='POST')
try:
with client.open(login, timeout=30) as response:
json.load(response)
with client.open(base + '/api/quota', timeout=30) as response:
data = json.load(response)
print('周限当前已用:', data['weekly']['current_used_pct'])
print('周限当前剩余:', data['weekly']['current_remaining_pct'])
print('5H 重置前预计已用:', data['projection']['projected_used_pct'])
print('5H 届时预计剩余:', data['projection']['projected_remaining_pct'])
print('数据是否过期或同步异常:', data['freshness']['stale'])
except urllib.error.HTTPError as error:
print('HTTP 状态:', error.code)
print(error.read().decode())
业务程序必须分别处理 null(未知)、0(确实为零)和数据过期状态,不能用 value or 0 等方式把未知当作零。建议每 60 秒查询一次;频繁读取不会让上游数据更新更快。
HTTP 200,Content-Type: application/json; charset=utf-8,Cache-Control: no-store。所有 _pct 字段的 31 都表示 31%,不是 0.31。百分比和等效账号数保留至多一位小数;网页额度卡片与接口使用相同精度。
{
"api_version": "1",
"calculated_at": "2026-09-21T05:00:00Z",
"scope": "serving_non_archived_accounts",
"serving_accounts": 2,
"weekly": {
"window_seconds": 604800,
"current_used_pct": 31.0,
"current_remaining_pct": 69.0,
"total_remaining_pct_points": 138.0,
"equivalent_full_accounts": 1.4,
"accounts_with_data": 2,
"accounts_without_data": 0
},
"five_hour": {
"window_seconds": 18000,
"current_used_pct": 15.5,
"current_remaining_pct": 84.5,
"total_remaining_pct_points": 169.0,
"equivalent_full_accounts": 1.7,
"accounts_with_data": 2,
"accounts_without_data": 0
},
"projection": {
"window_seconds": 18000,
"method": "average_used_pct / (average_elapsed_pct / 100)",
"status": "available",
"accounts_analyzed": 2,
"accounts_excluded": 0,
"current_used_pct": 15.5,
"current_remaining_pct": 84.5,
"elapsed_pct": 50.0,
"projected_used_pct": 31.0,
"projected_remaining_pct": 69.0,
"projected_exceeds_quota": false
},
"freshness": {
"snapshot_oldest_at": "2026-09-21T05:00:00Z",
"snapshot_latest_at": "2026-09-21T05:00:00Z",
"last_poll_at": "2026-09-21T05:00:00Z",
"snapshot_age_seconds": 0,
"poll_interval_seconds": 60,
"stale_after_seconds": 120,
"sync_failed": false,
"stale": false
},
"documentation_url": "/docs/quota-api"
}
| 字段 | 类型 | 说明 |
|---|---|---|
api_version | string | 接口版本,当前为 "1"。 |
calculated_at | string | 本次计算的 UTC 时间(ISO 8601)。不是用量快照的同步时间。 |
scope | string | 固定为 serving_non_archived_accounts,统计属于当前用户、状态为 serving、未最终归档的账号。 |
serving_accounts | integer | 上述范围的账号总数;包括自有和共享账号,以 serving 状态为准,不另按 paused 字段过滤。 |
documentation_url | string | 本站接口说明地址。 |
| 字段 | 类型 | 说明 |
|---|---|---|
window_seconds | integer | 周限为 604800(7 天),5H 为 18000(5 小时)。不是倒计时。 |
current_used_pct | number | null | 该窗口有数据账号的当前平均已用百分比,来自最新本地快照。 |
current_remaining_pct | number | null | 每个账号剩余比例取 max(0, 100 − 已用) 后,再求平均。 |
total_remaining_pct_points | number | null | 所有有数据账号的剩余百分比之和,单位为“百分比点·账号”,可大于 100。不能理解成单个账号剩余比例。 |
equivalent_full_accounts | number | null | 上述总剩余除以 100 后,等效的满额账号数,保留一位小数。不同账号实际额度可能不同,这不是按金额或 Token 加权的绝对容量。 |
accounts_with_data | integer | 参与该项平均值计算的账号数。 |
accounts_without_data | integer | 缺失该项用量的服务中账号数,缺失值不当作 0 或 100。 |
| 字段 | 类型 | 说明 |
|---|---|---|
window_seconds | integer | 固定 18000,本接口不提供七天窗口的结束预测。 |
method | string | 平均已用百分比 ÷ 平均时间进度比例。 |
status | string | available:能算出预测;insufficient_elapsed_time:平均时间进度不足 2%;no_valid_window:没有用量及重置时间均有效的账号。available 只表示可计算,仍需检查 freshness。 |
accounts_analyzed / accounts_excluded | integer | 参与 / 未参与预测的服务中账号数。 |
current_used_pct / current_remaining_pct | number | null | 仅参与预测账号的当前平均已用 / 剩余比例。样本范围可能小于 five_hour,所以两处当前值可能不同。 |
elapsed_pct | number | null | 参与预测账号各自五小时窗口已经过去的时间百分比的平均值。 |
projected_used_pct | number | null | 窗口结束前预计累计使用的比例。31 表示届时预计已用 31%,可超过 100,超过部分保留以表达耗尽风险。 |
projected_remaining_pct | number | null | max(0, 100 − projected_used_pct)。31% 预计已用对应 69% 预计剩余。 |
projected_exceeds_quota | boolean | null | 预测值大于 100 时为 true,等于 100 时为 false,无法预测为 null。 |
| 字段 | 类型 | 说明 |
|---|---|---|
snapshot_oldest_at / snapshot_latest_at | string | null | 当前统计范围内,最早 / 最新的账号本地同步时间。UTC 格式,无快照时为 null。 |
last_poll_at | string | null | 本用户最近一次同步尝试时间。同步失败也会更新此值,不能单独用它判断数据新鲜度。 |
snapshot_age_seconds | integer | null | 本次计算时间距最早快照时间的秒数,最小为 0;无快照为 null。 |
poll_interval_seconds | number | 用户配置的同步间隔,最小为 60 秒;后台轮询检查与网络耗时可能造成延迟。 |
stale_after_seconds | number | 数据过期阈值:max(120, 2 × 同步间隔秒数)。 |
sync_failed | boolean | 最近一次同步是否失败。 |
stale | boolean | 同步失败、无快照时间,或快照年龄超过阈值时为 true。历史数值仍返回,使用时须视为可能过期。 |
所有指标与首页共用计算逻辑。仅统计当前用户 status = serving 且没有有效最终归档记录的账号;冷却、封禁等其他状态不参与。完成周限结算但仍服务中的账号继续计入。页面“周限统计 ≥ 50% / ≥ 90%”面向当前账号列表,其范围与这里的服务中额度汇总不同。
预测假设后续平均速度不变,不考虑未来流量变化、调度策略、单个账号额度大小差异或其他窗口的限制。它是整体参考值,不保证每个账号都能撑到重置。五小时窗口与周限任何一项耗尽都可能限制调用;封禁、暂停或服务故障也可能影响可用性。
{"error":"unauthenticated"}。本地同步时间表示本站何时接收到上游返回的数据,不保证上游用量本身没有延迟。接口不会因本地时钟越过重置时间就把当前用量自动归零;要等上游新快照确认。首次登录或同步异常时,请结合时间、数据覆盖账号数和 stale 字段判断。
兼容性:原 GET /api/dashboard 保留现有字段,并新增 quota 对象;该对象与 GET /api/quota 使用相同计算逻辑。不同请求间若时间推进或发生同步,预测值可能略有变化。