跳转到主要内容
如果你在自己的产品中使用 querying.ai,请为每个客户创建一个子账户。子账户拥有自己的 API 密钥、上限、任务、 批次和监测器。它的积分从你的余额中扣除,用量接口会告诉你应向每个客户收取多少。

子账户如何运作

  • 独立的密钥和结果。 子账户密钥和其他密钥一样提交并读取任务、批次和监测器,但只能看到自己的工作。 用 Acme 的密钥创建的任务,对 Globex 的密钥和你自己的密钥返回 404。
  • 使用你的积分。 它的任务从你的余额中扣费。子账户没有余额,因此用子账户密钥调用 GET /v1/credits 或 GET /v1/usage 会返回 403 SUB_ACCOUNT_FORBIDDEN。
  • 使用你的容量。 你的套餐或合同并发上限同时覆盖你自己的任务和所有子账户的任务,因此子账户不会增加容量。GET /v1/async/status 用你的密钥汇总这个共享队列,用子账户密钥调用则返回 403 SUB_ACCOUNT_FORBIDDEN。
  • 使用你的监测器上限。 GET /v1/monitors/capabilities 中的 monitors 上限把你的监测器和所有子账户的监测器合并计算, prompts 和 tasksPerRun 上限对子账户的监测器和对你的监测器同样适用。
  • 独立的上限。 monthlyCreditLimit 限制它在一个 UTC 自然月内可被收取的积分。concurrencyLimit 在你的上限之内 限制它排队和运行中的任务数。两者都是可选的。
  • 只有一层。 子账户不能再拥有子账户。其监测器的提醒邮件发送给你账户的管理员。

谁可以管理子账户

请使用你自己的、没有引擎范围限制和每日积分上限的 API 密钥调用 /v1/sub-accounts 接口。其他密钥会收到 403 SUB_ACCOUNT_FORBIDDEN,否则受限的密钥就能签发不受其限制的密钥。子账户自己的密钥也会收到同样的错误。

创建子账户和密钥

响应为 201:
其他任何字段都会返回 400 VALIDATION_ERROR,因此拼错上限名称不会让客户处于无上限状态。 然后为子账户签发密钥:
key 只出现在这个响应中。请立即保存,之后不会再次显示。
密钥可使用与控制台密钥相同的可选设置:name(1–64 个字符,默认 default)、allowedTaskTypes、 dailyCreditLimit 和 expiresAt(5 分钟到 2 年之后)。不发送请求体即可签发不受限制的密钥。 每个子账户最多有 5 个有效密钥;已吊销和已过期的密钥不计入。签发第六个会返回 409 KEY_LIMIT,请先吊销一个。 客户的密钥和其他密钥一样,可用于所有接口:

管理密钥

GET /v1/sub-accounts/{id}/keys 按时间倒序列出子账户拥有过的所有密钥,包括已吊销和已过期的密钥。 查看 revokedAt 和 expiresAt 即可找出有效密钥。
DELETE /v1/sub-accounts/{id}/keys/{keyId} 吊销一个密钥,并返回 {"success": true, "data": {"revoked": "<keyId>"}}。已吊销或不属于该子账户的密钥返回 404 NOT_FOUND。

上限

只有达到自身上限的子账户会被拒绝,其他客户照常运行。提高上限后,下一个请求即生效。
retryAfterSec 是距离下一个 UTC 月开始的秒数,届时月度统计重新开始。账户级上限见 积分与限制。

查看子账户当前状态

GET /v1/sub-accounts/{id} 返回子账户及其本月用量,以及 activeTasks,即它当前排队或运行中的任务数。 与 concurrencyLimit 比较,即可了解该客户离上限还有多远。
以上数值仅为示例。在 usage 中,credits 和 tasks 是本 UTC 月已收取的部分,reservedCredits 是仍在运行的 任务所预留的积分。

用量与计费

每一笔扣费也会出现在你自己的账单明细中;以下接口按客户拆分这些扣费。失败的任务从不扣费,也不计入统计。 积分金额最多两位小数。
  • GET /v1/sub-accounts 按创建时间从早到晚列出子账户,每项附带本月 usage。用 limit(默认 100,最多 1,000) 分页,并把 nextCursor 作为 cursor 传回。
  • GET /v1/sub-accounts/usage 返回一个 UTC 日期范围内每个子账户的合计。
  • GET /v1/sub-accounts/{id}/usage 返回单个子账户按天和引擎的扣费。
两个用量接口都接受 YYYY-MM-DD 格式的 from 和 to(含首尾)。from 默认为当前 UTC 月 1 日,to 默认为今天; 范围最长 366 天。

所有子账户

例如:
子账户按金额从大到小排列。范围内没有扣费的子账户不会列出。

单个子账户

例如:
  • 顶层的 credits 和 tasks 是 days 的合计。
  • days 中每个有扣费的 UTC 日期和引擎各占一行,先按日期、再按 taskType 排序。没有扣费的日期不会出现。
  • taskType: "OTHER" 是不属于任务的扣费,例如监测器的竞品读取。它增加积分,但不增加 tasks。

暂停与恢复

  • 它的密钥会在五秒内开始返回 401。
  • 它的监测器停止运行,尚未开始的批次项以 API_KEY_INACTIVE 结束。
  • 已在排队或运行的任务会执行完毕并扣费。
发送 {"status": "active"} 可恢复它的密钥和监测器。每个监测器恢复时只运行一次,不会补跑错过的轮次。同一个 PATCH 还可修改 name、externalId、monthlyCreditLimit 和 concurrencyLimit;传 null 表示取消上限或清除 externalId。子账户不能删除,请改为暂停。

错误

接口