跳到主要内容

市场

获取市场列表

检索带筛选选项的分页市场列表。

端点: GET /api/v1/markets

查询参数:

参数类型描述
statusstring按市场状态筛选(live, active, closed, disputing, resolved, resolution_proposed)
pagenumber分页页码
pageSizenumber每页结果数量

获取市场详情

通过 ID 检索特定市场的详细信息。

端点: GET /api/v1/markets/{marketId}

路径参数:

参数类型描述
marketIdstring唯一市场标识符

市场状态

市场可以有以下状态:

状态描述
live市场开放交易中
active市场活跃但可能有交易限制
closed市场已关闭交易
disputing市场结果处理正在争议中
resolved市场已完成结果处理
resolution_proposed结果处理已提议,等待确认

代码示例

获取活跃市场

const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://engine.xmarket.app/api/v1';

async function getActiveMarkets() {
const response = await fetch(
`${BASE_URL}/markets?status=live&pageSize=50`,
{
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/json'
}
}
);

const data = await response.json();
return data.items;
}

获取市场详情

async function getMarketDetail(marketId) {
const response = await fetch(
`${BASE_URL}/markets/${marketId}`,
{
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/json'
}
}
);

if (!response.ok) {
throw new Error(`Market not found: ${response.status}`);
}

const market = await response.json();
console.log(`Market: ${market.name}`);
console.log(`Status: ${market.status}`);
console.log(`Outcomes: ${market.outcomes.length}`);
return market;
}

// 示例用法
const market = await getMarketDetail('market-uuid-here');

按状态筛选市场

async function getMarketsByStatus(status) {
const response = await fetch(
`${BASE_URL}/markets?status=${status}&page=1&pageSize=100`,
{
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/json'
}
}
);

const data = await response.json();
console.log(`Found ${data.total} ${status} markets`);
return data.items;
}

// 获取所有已完成结果处理的市场
const resolvedMarkets = await getMarketsByStatus('resolved');

// 获取争议中的市场
const disputingMarkets = await getMarketsByStatus('disputing');

最佳实践

  1. 缓存:适当缓存市场数据,因为元数据不会频繁变化
  2. 分页:对大型结果集使用分页以提高性能
  3. 错误处理:为暂时性网络错误实现重试逻辑
  4. 速率限制:遵守 API 速率限制(100 请求/分钟,20 请求/秒突发)
  5. 数据验证:在使用前始终验证市场和结果 ID

相关文档