Skip to content

공식 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가 아닌 모든 응답에 대해 타입이 지정된 에러를 발생시킵니다. 401AuthenticationError, 402PlanError, 429는 재시도 대기 시간이 담긴 RateLimitError, 5xxServerError이며, 모두 공통 DinoError의 서브클래스입니다.

리소스

Python 패키지: PyPIGitHub 소스. TypeScript 패키지: npmGitHub 소스. Colab 노트북에서는 로컬 환경 설정 없이 Python SDK를 처음부터 끝까지 따라 해볼 수 있습니다.

정보 제공용 데이터입니다. 투자 자문이 아닙니다. 각자의 venue 계정으로 본인 책임 하에 거래하시기 바랍니다.