SuperAPI AI 工具集

bondterminal-x402

数据与分析

查看项目

更新于 10-15 08:47

技能介绍

用途

BondTerminal x402 用于通过 x402 按次付费方式查询 BondTerminal API,主要服务于阿根廷债券数据相关查询。无需 API key,也无需订阅,每次请求在 Base 主网上支付 0.01 USDC 即可调用付费端点。

主要能力

API 基础地址为 https://bondterminal.com/api/v1,端点如下:

方法 端点 说明 认证
GET /treasury-curve 美国国债收益率曲线 免费
GET /bonds 列出所有债券(60+) x402
GET /bonds/:id 按 ISIN 或本地代码查询债券详情 x402
GET /bonds/:id/analytics 价格、YTM、久期、利差 x402
GET /bonds/:id/cashflows 现金流计划 x402
GET /bonds/:id/history 历史价格/收益率/利差 x402
POST /calculate 根据自定义价格进行债券分析 x402
GET /riesgo-pais 当前阿根廷国家风险 x402
GET /riesgo-pais/history 历史 riesgo país 序列 x402
POST /calculate/batch 批量计算 仅 Bearer

标识符格式:ISIN(如 US040114HS26),或带 D/C 后缀的本地代码(如 AL30D、GD30D)。本地代码需要 D/C 后缀:AL30D(USD)、AL30C(ARS),而非 AL30。

完整文档见 https://bondterminal.com/developers,本技能内的端点参考位于 references/endpoints.md。

x402 工作方式

  1. 无认证调用任意 x402 端点 → 服务器返回 402,并带有 PAYMENT-REQUIRED 头。
  2. 解码该头(base64 JSON)以获取支付要求(金额、资产、网络、payTo)。
  3. 通过 x402 客户端库签名 EIP-3009 transferWithAuthorization。
  4. 携带已签名的支付重试请求,使用 PAYMENT-SIGNATURE 头(v2),并以 X-PAYMENT 作为旧版回退。
  5. 服务器通过 Coinbase facilitator 验证支付,返回数据及 PAYMENT-RESPONSE 头。

使用方式

1. 安装依赖

npm install @x402/core @x402/evm viem

注意:代码示例使用 ES 模块。请使用 .mjs 文件扩展名,或在 package.json 中添加 "type": "module"。

2. 配置签名器

x402 支付流程需要一个位于 Base 主网且持有 USDC 余额的 EVM 签名器。请按 x402 EVM 文档配置签名器。签名器必须实现 { address, signTypedData } ——任何与 viem 兼容的钱包客户端均可(硬件钱包、KMS、注入式 provider 等)。完整的签名器配置示例见 references/signer-setup.md。

3. 注册 x402 客户端

import { x402Client } from '@x402/core/client';
import { x402HTTPClient } from '@x402/core/http';
import { ExactEvmScheme } from '@x402/evm'; // exact export name

// signer = { address, signTypedData } — see references/signer-setup.md
const scheme = new ExactEvmScheme(signer);
const client = new x402Client();
client.register('eip155:8453', scheme); // Base mainnet
const httpClient = new x402HTTPClient(client);

获取 Bond 数据

async function fetchBT(path) {
  const url = `https://bondterminal.com/api/v1${path}`;
  let res = await fetch(url);

  if (res.status === 402) {
    const paymentRequired = httpClient.getPaymentRequiredResponse(
      (name) => res.headers.get(name),
      await res.json()
    );
    const payload = await httpClient.createPaymentPayload(paymentRequired);

    // Preferred v2 header
    res = await fetch(url, {
      headers: httpClient.encodePaymentSignatureHeader(payload),
    });

    // Legacy fallback for servers still expecting X-PAYMENT
    if (res.status === 402) {
      const encoded = Buffer.from(JSON.stringify(payload)).toString('base64');
      res = await fetch(url, { headers: { 'X-PAYMENT': encoded } });
    }
  }

  if (!res.ok) {
    throw new Error(`BondTerminal request failed (${res.status})`);
  }

  return res.json();
}

// Examples
const bonds = await fetchBT('/bonds');
const analytics = await fetchBT('/bonds/AL30D/analytics');
const riesgo = await fetchBT('/riesgo-pais');

快速测试

验证免费与付费流程:

await fetchBT('/treasury-curve'); // free route (no payment)
await fetchBT('/riesgo-pais');    // paid route (triggers x402 flow)

钱包要求

签名钱包需要:

  • Base 上的 USDC —— 用于每次请求 0.01 USDC 的支付。
  • 无需 ETH 作为 gas —— x402 使用 EIP-3009(链下签名),不进行链上交易。

适用场景

适用于需要在阿根廷债券数据场景中查询债券列表、单只债券详情与分析指标、现金流与历史走势,以及阿根廷国家风险数据的用户。也可用于验证免费端点与 x402 付费端点两种调用流程。

限制

  • POST /calculate/batch 需要 Bearer API key 订阅,无法通过 x402 使用。
  • 本地代码必须带 D/C 后缀:AL30D(USD)、AL30C(ARS),不能写作 AL30。
  • 结算在链上进行:每次付费调用会产生可验证的交易哈希。
  • PAYMENT-RESPONSE 头包含结算元数据(付款方、交易哈希、网络)。