본문으로 건너뛰기

마켓

마켓 목록 조회

필터링 옵션이 포함된 페이지네이션된 마켓 목록을 조회합니다.

OpenAPI xmarket-openapi

마켓 상세 조회

마켓 ID를 통해 특정 마켓의 상세 정보를 조회합니다.

OpenAPI xmarket-openapi

마켓 상태

마켓은 다음과 같은 상태를 가질 수 있습니다:

상태설명
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;
}

// Example usage
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;
}

// Get all resolved markets
const resolvedMarkets = await getMarketsByStatus('resolved');

// Get markets in dispute
const disputingMarkets = await getMarketsByStatus('disputing');

모범 사례

  1. 캐싱: 메타데이터는 자주 변경되지 않으므로 마켓 데이터를 적절히 캐싱하세요
  2. 페이지네이션: 대량의 결과 집합에는 페이지네이션을 사용하여 성능을 개선하세요
  3. 에러 처리: 일시적인 네트워크 오류에 대한 재시도 로직을 구현하세요
  4. 요청 제한: API 요청 제한을 준수하세요 (100 req/min, 20 req/sec burst)
  5. 데이터 검증: 마켓 및 결과 ID를 사용하기 전에 항상 유효성을 검증하세요

관련 문서