name: Bankr 开发 - API 基础 description: 当用户询问“Bankr API”、“Bankr Agent API”、“Bankr 如何工作”、“Bankr 作业状态”、“Bankr 响应格式”或“基于 Bankr 构建”时,应使用此技能。提供端点文档、作业模式和 TypeScript 接口。 version: 1.0.0
Bankr 代理 API 要点
在回答关于 Bankr API 的问题时:
- 解释异步作业模式(提交-轮询-完成)
- 参考下面的端点文档和 TypeScript 示例
- 对于详细的响应结构,请查阅
references/job-response-schema.md - 引导开发者查看
examples/目录中的工作示例
Bankr 代理 API 通过简单的异步作业模式,启用对加密货币交易、市场分析和预测市场的程序化访问。
核心概念:异步作业模式
所有 Bankr 操作都遵循提交-轮询-完成模式:
- 提交 一个自然语言提示以启动作业
- 轮询 作业状态,每 2 秒一次
- 接收 结果当状态为终端时(完成/失败/取消)
此模式处理可能需要 30 秒到 2 分钟以上的操作(交易、复杂分析)。
API 端点
基础 URL
https://api.bankr.bot
认证
所有请求都需要 x-api-key 头:
x-api-key: bk_your_api_key_here
API 密钥绑定到特定用户的 Bankr 账户和钱包。
端点 1:提交提示
POST /agent/prompt
Content-Type: application/json
{
"prompt": "在 Base 上购买 50 美元的 ETH"
}
响应:
{
"success": true,
"jobId": "job_abc123",
"status": "pending"
}
代码示例:
async function submitPrompt(prompt: string): Promise<{ jobId: string }> {
const response = await fetch(`${API_URL}/agent/prompt`, {
method: "POST",
headers: {
"x-api-key": API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ prompt }),
});
const data = await response.json();
if (!data.success) throw new Error(data.error || "提交失败");
return { jobId: data.jobId };
}
端点 2:获取作业状态
GET /agent/job/{jobId}
响应:
{
"success": true,
"jobId": "job_abc123",
"status": "completed",
"prompt": "ETH 的价格是多少?",
"response": "以太坊 (ETH) 当前交易价格为 3,245.67 美元...",
"transactions": [],
"statusUpdates": [
{ "message": "正在获取价格数据...", "timestamp": "2024-01-15T10:00:02Z" }
],
"createdAt": "2024-01-15T10:00:00Z",
"completedAt": "2024-01-15T10:00:05Z",
"processingTime": 5000
}
代码示例:
async function getJobStatus(jobId: string): Promise<JobStatusResponse> {
const response = await fetch(`${API_URL}/agent/job/${jobId}`, {
headers: { "x-api-key": API_KEY },
});
return response.json();
}
有关完整的 TypeScript 接口,请参阅 references/job-response-schema.md。
端点 3:取消作业
POST /agent/job/{jobId}/cancel
Content-Type: application/json
响应:
{
"success": true,
"jobId": "job_abc123",
"status": "cancelled",
"prompt": "在 Base 上购买 50 美元的 ETH",
"cancelledAt": "2024-01-15T10:00:15Z"
}
何时取消:
- 用户请求停止长时间运行的操作
- 超时并希望干净地中止
- 检测到使作业不必要的错误条件
代码示例:
async function cancelJob(jobId: string): Promise<JobStatusResponse> {
const response = await fetch(`${API_URL}/agent/job/${jobId}/cancel`, {
method: "POST",
headers: {
"x-api-key": API_KEY,
"Content-Type": "application/json",
},
});
return response.json();
}
// 用法:如果作业耗时过长则取消
const timeout = setTimeout(async () => {
console.log("作业耗时过长,正在取消...");
await cancelJob(jobId);
}, 60000); // 60 秒后取消
作业状态
| 状态 | 含义 | 操作 |
|---|---|---|
pending |
作业已排队,未启动 | 继续轮询 |
processing |
作业运行中 | 继续轮询,检查 statusUpdates |
completed |
作业成功完成 | 阅读 response 和 transactions |
failed |
作业遇到错误 | 检查 error 字段 |
cancelled |
作业被取消 | 无进一步操作 |
您可以做什么
Bankr API 接受自然语言提示用于:
加密货币交易:
- “在 Base 上购买 50 美元的 ETH”
- “在 Solana 上卖出 100 USDC 换取 SOL”
- “将 0.1 ETH 交换为 BNKR”
价格和市场数据:
- “比特币的价格是多少?”
- “给我看 ETH 价格图表”
- “今天涨幅最大的有哪些?”
Polymarket 预测:
- “下次选举的赌率是多少?”
- “赌 10 美元老鹰队赢”
- “给我看趋势预测市场”
DeFi 操作:
- “Aave 上的 TVL 是多少?”
- “给我看 USDC 的最佳收益率”
- “检查我的投资组合余额”
轮询最佳实践
async function waitForCompletion(jobId: string): Promise<JobStatus> {
const POLL_INTERVAL = 2000; // 2 秒
const MAX_POLLS = 120; // 最多 4 分钟
for (let i = 0; i < MAX_POLLS; i++) {
const status = await getJobStatus(jobId);
// 终端状态
if (['completed', 'failed', 'cancelled'].includes(status.status)) {
return status;
}
// 记录进度更新
if (status.statusUpdates?.length) {
console.log('进度:', status.statusUpdates.at(-1)?.message);
}
await new Promise(r => setTimeout(r, POLL_INTERVAL));
}
throw new Error('作业超时');
}
关键响应字段
当作业完成时,响应包括:
response: Bankr 的文本回答transactions: 执行交易的数组,包含链/代币详情richData: 图像或图表(base64 或 URL)statusUpdates: 执行期间的进度消息processingTime: 持续时间(毫秒)
有关完整的字段文档,请参阅 references/job-response-schema.md。
错误处理
处理这些错误情况:
- 缺少 API 密钥:在发出请求前检查
BANKR_API_KEY - HTTP 错误:API 返回 4xx/5xx 并附带错误文本
- 作业失败:检查
status === 'failed'并读取error字段 - 超时:实现最大轮询次数(建议:4 分钟)
示例:完整流程
// 1. 提交提示
const { jobId } = await submitPrompt("ETH 的价格是多少?");
// 2. 轮询直到完成
const result = await waitForCompletion(jobId);
// 3. 处理结果
if (result.status === 'completed') {
console.log(result.response);
// "以太坊 (ETH) 当前交易价格为 3,245.67 美元..."
} else if (result.status === 'failed') {
console.error('错误:', result.error);
}
额外资源
参考文件
references/job-response-schema.md- 完整的 TypeScript 接口和字段文档
示例文件
examples/basic-client.ts- 简单的 API 客户端实现examples/polling-with-updates.ts- 带状态更新处理的轮询