用途
pay-for-http-request 是一个技能,用于通过 purl 向需要付费的 API 发起 HTTP 请求。purl 是一个类似 curl 的命令行工具,能够自动处理基于 x402 协议的支付,支持 EVM 和 Solana 网络。
当某个 API 返回 HTTP 402(Payment Required)并支持 x402 支付协议时,purl 可以自动协商并执行支付,从而访问该资源。
主要能力
- 自动处理 x402 支付:在请求付费 API 时自动完成支付协商与执行。
- 钱包管理:支持创建、导入、列出、查看、验证、切换和删除钱包(keystore)。
- 余额查询:可查看钱包余额,并可按网络筛选。
- 支付需求检查:可在不执行支付的情况下检查支付要求(inspect)。
- 支付控制:支持设置最大支付金额、要求支付前确认、预览支付(dry-run)、按网络筛选。
- 网络管理:可查看和管理支持的 EVM 与 Solana 网络。
- 输出控制:支持详细程度、静默、包含 HTTP 头、仅显示头、输出到文件、输出格式(auto/text/json/yaml)、颜色控制。
- HTTP 选项:支持自定义请求方法、请求头、User-Agent、跟随重定向、连接超时、最大时间、POST 数据、JSON 数据。
- 配置管理:可查看、获取和验证配置。
- 环境变量:支持通过环境变量设置默认最大金额、网络、确认行为、钱包路径和密码。
使用方式
基本用法:
purl <URL> [OPTIONS]
purl <COMMAND>
常用命令:
purl wallet:管理钱包(keystores)purl config:管理配置purl balance:检查钱包余额purl inspect:检查支付要求而不执行purl networks:管理和检查支持的网络purl version:显示版本信息purl completions:生成 shell 补全脚本purl topics:显示帮助主题(exit-codes、formatting、examples、environment)
支付选项:
--max-amount <AMOUNT>:愿意支付的最大金额(原子单位)--confirm:支付前要求确认--network <NETWORKS>:筛选特定网络(逗号分隔)--dry-run:预览支付而不执行
显示选项:
-v, --verbosity:详细程度(可多次使用:-v、-vv、-vvv)-q, --quiet/-s, --silent:不打印日志消息-i, --include:在输出中包含 HTTP 头-I, --head:仅显示 HTTP 头-o, --output <FILE>:将输出写入文件--output-format <FORMAT>:输出格式:auto、text、json、yaml(auto 检测:终端为 text,管道为 json)--color <MODE>:控制颜色输出:auto、always、never
HTTP 选项:
-X, --request <METHOD>:自定义请求方法-H, --header <HEADER>:添加自定义头-A, --user-agent <AGENT>:设置 User-Agent-L, --location:跟随重定向--connect-timeout <SECONDS>:连接超时(秒)-m, --max-time <SECONDS>:请求最大时间-d, --data <DATA>:POST 数据--json <JSON>:发送 JSON 数据并设置 Content-Type 头
钱包选项:
--wallet <PATH>:钱包文件路径--password <PASSWORD>:钱包解密密码--private-key <KEY>:原始私钥(十六进制,用于 EVM;建议使用钱包以提高安全性)
全局选项:
-C, --config <PATH>:配置文件路径
钱包命令:
purl wallet list:列出可用钱包purl wallet add:创建新钱包(交互式)purl wallet show <NAME>:显示钱包详情purl wallet verify <NAME>:验证钱包完整性purl wallet use <NAME>:将钱包设置为活动支付方式purl wallet remove <NAME>:删除钱包
钱包添加选项:
-n, --name <NAME>:钱包名称-t, --type <TYPE>:钱包类型:evm 或 solana-k, --private-key <KEY>:要导入的私钥(EVM 为十六进制,Solana 为 base58)
配置命令:
purl config:显示当前配置purl config get <KEY>:获取特定配置值(支持点表示法)purl config validate:验证配置文件
示例:
- 基本支付请求:
purl https://api.example.com/premium-data - 预览支付而不执行:
purl --dry-run https://api.example.com/data - 支付前要求确认:
purl --confirm https://api.example.com/data - 设置最大支付金额:
purl --max-amount 10000 https://api.example.com/data - 筛选特定网络:
purl --network base-sepolia https://api.example.com/data - 详细输出并包含头:
purl -vi https://api.example.com/data - 将输出保存为 JSON 文件:
purl -o output.json --output-format json https://api.example.com/data - 发送 JSON 数据的 POST 请求:
purl --json '{"key": "value"}' https://api.example.com/data - 自定义头:
purl -H "Authorization: Bearer token" https://api.example.com/data - 跟随重定向并使用自定义方法:
purl -L -X POST https://api.example.com/data - 检查钱包余额:
purl balance或purl balance --network base - 检查支付要求:
purl inspect https://api.example.com/endpoint - 钱包管理:
purl wallet add、purl wallet add --type evm、purl wallet add --type solana -k KEY、purl wallet list、purl wallet use my-wallet - 查看支持的网络:
purl networks、purl networks info base
适用场景
- 工具调用:按请求向 API 服务付费
- 付费数据源:访问实时市场数据、天气或分析数据
- 内容变现:付费访问付费墙文章或媒体
- 计算资源:按需访问计算或存储服务
限制
- 不适用于不需要支付的常规 HTTP 请求(应使用 curl)。
- 不适用于使用传统支付方式(信用卡、带计费的 API 密钥)的 API。
- 需要目标 API 支持 x402 支付协议。
前置条件
- 创建钱包:
purl wallet add - 在所需网络上设置带有资金的支付方式(钱包)
- 确保目标 API 支持 x402 支付协议
支持的网络
- EVM:ethereum、ethereum-sepolia、base、base-sepolia、avalanche、avalanche-fuji、polygon、arbitrum、optimism
- SVM:solana、solana-devnet
环境变量
PURL_MAX_AMOUNT:默认愿意支付的最大金额PURL_NETWORK:默认网络筛选PURL_CONFIRM:默认确认行为(true/false)PURL_KEYSTORE:默认钱包/keystore 路径PURL_PASSWORD:钱包密码(用于非交互式使用)