SDK와 실행 예제
예제의 기본 REST 주소는 https://api.btxpro.co.kr입니다. 외부 WS 주소는 wss://api-ws.btxpro.co.kr이며, 현재 Go SDK는 운영 REST 주소에서 두 WS 경로를 자동으로 선택합니다.
Go SDK
현재 SDK는 BTX 저장소의 backend-base/sdk/btx 패키지로 제공됩니다. 별도 공개 모듈로 배포된 상태는 아니므로 저장소 접근 권한이 필요하며, 사용할 backend-base 모듈 커밋을 고정해야 합니다.
package main
import (
"context"
"log"
"os"
btx "git.svc.childlycorp.com/childlycorp/btx-main.git/backend-base/sdk/btx"
)
func main() {
client, err := btx.NewClient(btx.Config{
BaseURL: "https://api.btxpro.co.kr",
APIKey: os.Getenv("BTX_API_KEY"),
SecretKey: os.Getenv("BTX_SECRET_KEY"),
})
if err != nil { log.Fatal(err) }
account, err := client.GetAccount(context.Background())
if err != nil { log.Fatal(err) }
log.Printf("account=%d", account.Data.AccountID)
}
SDK가 REST 요청과 개인 WS 연결에 timestamp·서명을 붙입니다. 별도 nonce 카운터를 운영하지 않습니다. 공개 조회만 사용할 때는 키를 생략할 수 있습니다.
| 기능 | 메서드 |
|---|---|
| 시스템·통화·마켓 | CheckHealth, GetReadiness, GetTime, ListCurrencies, ListMarkets, GetMarket |
| 시세 | GetTicker, ListTickers, GetOrderBook, ListTrades, ListCandles |
| 계정·지갑 | GetAccount, ListWallets, ListBalances |
| 주문·체결 | CreateOrder, GetOrder, ListOpenOrders, ListOrderHistory, CancelOrder, CancelOrders, ListFills |
| 공개 스트림 | StreamTickers |
| 개인 이벤트 | StreamUser |
| 양방향 개인 세션 | OpenUserStream → Snapshot, Events, CreateOrder, CancelOrder |
Feed API는 REST로 직접 호출합니다. 현재 Go SDK에는 Feed 전용 메서드가 없습니다.
Node.js와 Python
아래 예제는 표준 라이브러리만 사용하며 기본 동작은 서명된 계정 조회입니다. Node.js 22.12 이상 또는 Python 3.9 이상을 사용하세요.
먼저 키 없이 서명 구현을 검증합니다.
node signed-request.mjs --self-test
python signed_request.py --self-test
비밀 관리 도구가 프로세스에 BTX_API_KEY, BTX_SECRET_KEY를 주입한 뒤 실행합니다.
node signed-request.mjs
python signed_request.py
로컬 서버를 사용할 때는 주소만 변경합니다.
node signed-request.mjs --base-url http://localhost:10005
python signed_request.py --base-url http://localhost:10005
다른 API에 적용하려면 메서드·경로·쿼리·실제 본문 바이트를 signRequest 또는 sign_request에 전달하고, 그 값으로 요청을 보냅니다. 두 예제는 운영 주문을 생성하거나 자동 재시도하지 않습니다.
개인 WS와 Go 세션
session, err := client.OpenUserStream(ctx)
if err != nil { return err }
defer session.Close()
snapshot := session.Snapshot()
// snapshot을 반영한 뒤 session.Events()의 이벤트를 계속 소비합니다.
_ = snapshot
주문 전송은 WS 명령을 확인하세요. OpenUserStream은 결과가 불명확한 주문을 자동으로 재전송하지 않습니다.
레퍼런스의 생성 예제
Scalar의 일반 HTTP 예제는 요청 형식을 보여줍니다. 개인 API는 그 요청에 BTX HMAC 서명을 추가해야 합니다. 문서 사이트는 키를 입력받지 않으며 요청 실행 버튼을 제공하지 않습니다. 위 SDK와 로컬 예제로 실제 요청을 검증합니다.