跳转到主要内容
支出控制

您的代理无法超出您设定的支出。

在仪表板中为每个代理设置每个周期的限额和每笔交易的上限。后端在每次外发支付时强制执行 - 代理的代码无法绕过它。

仪表板视图:每个代理的支出权限 - 允许额、每笔交易上限、周期

自主代理会犯错误。它们会重试。它们会循环。它们会被提示注入。它们偶尔会试图花费您未授权的资金。

Blockchain0x 支出权限在仪表板中由所有者设置,并由后端强制执行,而不是由代理的代码执行。每笔出站付款在 API 接受之前都会检查与活动权限,因此即使代理的逻辑尝试,代理也无法超过限制。您的代码可以通过 API 读取权限以显示或围绕它进行规划,但无法提高权限。

支出权限包含的内容

四个维度。设置一次。到处强制执行。

每周期津贴

allowance_wei 是代理在一个 period_seconds 窗口中可以发送的总 USDC(基本单位)。该周期为一天(86400),一周(604800)或 30 天(2592000)。

每笔交易上限

per_tx_wei 是允许的最大单笔出站支付。它阻止一次错误调用移动超过您所期望的金额,与期间限额无关。

有效性窗口

start_at 和 end_at 在权限生效时绑定。在窗口外,它不授权支出,因此您可以预先设置预算或让其自行到期。

撤销

revoked_at 记录何时从仪表板关闭权限。撤销立即将限额降至零,适用于其后评估的任何支付。

仪表板管理,通过 API 只读

代理的密钥无法提高其自身限制。

您可以在仪表板中创建、修改和撤销支出权限。API 以只读方式公开它们 - 没有端点,也没有 SDK 方法可以更改权限。这就是重点:如果代理被注入提示或陷入循环,它无法扩大自己的津贴,因为它持有的凭证从未被授予该权限。

当支付超过活动权限时,后端在任何操作触及链之前拒绝它。没有资金移动。您的代理像处理其他失败调用一样处理该拒绝,您可以在仪表板中看到该尝试,以便在其合法时扩大权限。

通过 API 阅读

获取当前权限以显示或围绕它进行计划。

GET /v1/agents/{id}/spend-permissions返回实时值。使用它在您的UI中显示预算,或让代理检查在尝试支付之前剩余多少空间。

读取 (CURL)
curl https://api.blockchain0x.com/v1/agents/agt_123/spend-permissions \
  -H "Authorization: Bearer $BLOCKCHAIN0X_API_KEY"
响应
{
  "allowance_wei": "5000000",
  "per_tx_wei": "1000000",
  "period_seconds": 86400,
  "start_at": "2026-05-15T00:00:00Z",
  "end_at": null,
  "revoked_at": null
}
allowance_wei

Total spend allowed per period, in USDC base units (6 decimals). "5000000" is 5 USDC.

per_tx_wei

Largest single payment allowed, in base units. "1000000" is 1 USDC. A payment over this is rejected even if the period allowance has room.

period_seconds

津贴适用的窗口:86400(天)、604800(周)或 2592000(30 天)。

start_at / end_at

当权限处于活动状态时。end_at 对于开放式权限为 null。

revoked_at

在活动时为Null;从仪表板撤销后为时间戳。被撤销的权限不授权任何内容。

周期

天、周或 30 天。

period_seconds 取三个值之一。当周期滚动时,限额重置;per_tx_wei 适用于每一笔支付,无论周期如何。

86400

1 天

604800

1 周

2592000

30天

支出权限是一个硬限制,一次设置,在任何地方强制执行 - 不是每笔付款的批准工作流,也不是人类确认。如果您需要批准或多重签名,那是一个单独的、更复杂的模式;权限是始终存在的底线。

常见问题

操作员提出的五个支出权限问题。

我可以通过 API 设置或更改支出权限吗?

不。支出权限在API上是只读的。你在Blockchain0x仪表板中创建、修改和撤销它们,GET /v1/agents/{id}/spend-permissions允许你的代码读取当前值以显示或检查它们。这是故意的:代理自己的API密钥无法放宽自己的限制,这正是你希望的属性,如果代理曾经被注入提示或循环。要提高津贴,你需要仪表板。

当支付超过权限时会发生什么?

后端在任何东西接触链之前拒绝它 - 没有资金移动。执行在后端进行,而不是在代理的代码中,因此即使其逻辑尝试,代理也无法绕过它。使用 GET 路由读取权限,以向您的代理显示剩余的空间,并以您处理任何其他失败调用的方式处理 payments.create 的拒绝。

为什么金额以 wei 而不是美元计?

Consistency with the rest of the API: every amount is a base-unit string. USDC has 6 decimals, so allowance_wei "5000000" is 5 USDC and per_tx_wei "1000000" is 1 USDC. Strings, not floats - large integers lose precision as JSON numbers, and a base-unit string is unambiguous across languages.

支出权限是否限制入站支付?

不。权限仅管理钱包中离开的资金。进入的USDC从不被阻止 - 任何人都可以随时支付给你的代理。将权限视为对外支出的单向阀;入境结算由payment.received webhook单独确认。

如果出现问题,我如何快速撤销支出?

在仪表板中撤销权限 - 这会设置 revoked_at 并将任何后续评估的付款的限额设置为零。为了更严格的停止,您还可以旋转或撤销代理的 API 密钥 (apiKeys.rotate / apiKeys.revoke),这会完全切断凭据。两者都是立即生效的;权限撤销是外科手术式的,密钥撤销是切断开关。

在限额内消费,而不是意外支出。

在仪表板中设置限额和每笔交易的上限。后端会处理其余部分。