공식 SDK
REST API와 WebSocket 스트림을 감싸는 Python 및 TypeScript 클라이언트로, HTTP 호출을 직접 작성할 필요가 없습니다.
공식 SDK는 이 사이트에서 문서화한 것과 동일한 REST 엔드포인트와 동일한 WebSocket 스트림을 다룹니다. 둘 다 런타임 의존성이 없는 얇은 래퍼이며, 모든 메서드는 API가 보내는 것과 동일한 JSON 형태를 그대로 반환합니다.
Python
PyPI 패키지 이름은 dino-markets입니다. Python 3.9 이상이 필요합니다.
pip install dino-markets
from dino_markets import Dino
client = Dino() # reads DINO_API_KEY, or pass api_key= directly
markets = client.markets(sport="baseball")
arbs = client.find_arbitrage(sport="baseball", limit=20)
history = client.history(markets["markets"][0]["id"])
스트리밍에는 stream extra(centrifuge-python을 함께 설치)와 Basic 또는 Pro 키가 필요합니다. Free 키에서는 소켓을 열기 전에 stream_token()이 PlanError(402)를 발생시킵니다.
pip install "dino-markets[stream]"
TypeScript
npm 패키지 이름은 dino-markets입니다. 네이티브 fetch API 위에 구축되어 있어 Node 18 이상, Deno, Bun, 그리고 번들러 폴리필 없이 브라우저에서도 동작합니다.
npm install dino-markets
import { Dino } from "dino-markets";
const dino = new Dino(); // reads DINO_API_KEY, or pass { apiKey: "..." }
const { markets } = await dino.markets({ sport: "baseball" });
const arbs = await dino.findArbitrage({ sport: "baseball", limit: 20 });
const history = await dino.history(markets[0].id);
스트리밍에는 선택적 peer dependency인 centrifuge와 Basic 또는 Pro 키가 필요합니다. Free 키에서는 streamToken() 호출이 소켓을 여는 대신 PlanError(402)를 던집니다.
npm install centrifuge
에러
두 SDK 모두 2xx가 아닌 모든 응답에 대해 타입이 지정된 에러를 발생시킵니다. 401은 AuthenticationError, 402는 PlanError, 429는 재시도 대기 시간이 담긴 RateLimitError, 5xx는 ServerError이며, 모두 공통 DinoError의 서브클래스입니다.
리소스
Python 패키지: PyPI와 GitHub 소스. TypeScript 패키지: npm와 GitHub 소스. Colab 노트북에서는 로컬 환경 설정 없이 Python SDK를 처음부터 끝까지 따라 해볼 수 있습니다.
정보 제공용 데이터입니다. 투자 자문이 아닙니다. 각자의 venue 계정으로 본인 책임 하에 거래하시기 바랍니다.