빠른 시작
먼저 키 없이 공개 API를 호출한 뒤, API 키로 계정과 잔고를 확인합니다. 모든 예제의 마켓·지갑·주문 ID는 설명용 값이며 실제 조회 결과로 바꿔 사용하세요.
1. 서버 시간과 마켓 확인
curl 'https://api.btxpro.co.kr/v1/time'
curl 'https://api.btxpro.co.kr/v1/markets'
curl 'https://api.btxpro.co.kr/v1/market/ticker?symbol=BTC-USDT'
성공 응답은 data, requestId, serverTime으로 구성됩니다. /health는 예외로 본문 없는 HTTP 200을 반환합니다.
2. API 키 발급
BTX 웹의 마이페이지 → API(/my-page/api)에서 발급합니다. OTP 활성화와 발급 시 OTP 확인이 필요합니다.
- 잔고·주문 조회와 개인 WS:
read - 주문 생성·취소:
trade추가 - 공개 시세·Feed와 공개 WS: API 키 불필요
Secret Key는 발급 결과에 한 번만 표시됩니다. 서버의 비밀 관리 도구에 저장하고, 브라우저 프런트엔드에 넣지 마세요. 키는 계정에서 볼 수 있는 전체 지갑에 적용되며 지갑별 제한은 제공하지 않습니다.
3. 서명된 조회 실행
키를 비밀 관리 도구 또는 현재 프로세스 환경에 주입한 상태에서 실행합니다. 문서 예제는 주문을 생성하지 않고 GET /v1/account만 호출합니다.
node signed-request.mjs
python signed_request.py
예제 다운로드와 실행 방법을 확인하세요. 자체 클라이언트를 만들 경우 HMAC 인증 규칙을 따라야 합니다.
저장소에서 기존 Go 예제 클라이언트를 사용하는 경우 backend-base에서:
go run ./cmd/etc/externalapiclient -base-url https://api.btxpro.co.kr -command verify-key
go run ./cmd/etc/externalapiclient -base-url https://api.btxpro.co.kr -command wallets
verify-key는 계정·지갑·개인 스트림의 초기 스냅샷을 확인한 뒤 종료합니다. 주문을 전송하지 않습니다.
4. 공개 WebSocket 구독
키가 필요 없는 공개 연결은 브라우저에서도 사용할 수 있습니다.
const socket = new WebSocket('wss://api-ws.btxpro.co.kr/v1/market/stream')
socket.onopen = () => socket.send(JSON.stringify({
id: 'sub-1',
op: 'subscribe',
args: [{ channel: 'ticker', symbol: 'BTC-USDT' }],
}))
socket.onmessage = ({ data }) => console.log(JSON.parse(data))
subscribed 응답 다음에 현재 캐시된 시세와 실시간 이벤트가 전달됩니다. 개인 WS는 연결 요청에 인증 헤더가 필요하므로 서버용 WS 클라이언트를 사용합니다.