# 빠른 시작

먼저 키 없이 공개 API를 호출한 뒤, API 키로 계정과 잔고를 확인합니다. 모든 예제의 마켓·지갑·주문 ID는 설명용 값이며 실제 조회 결과로 바꿔 사용하세요.

## 1. 서버 시간과 마켓 확인

```sh
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`만 호출합니다.

```sh
node signed-request.mjs
python signed_request.py
```

[예제 다운로드와 실행 방법](/api-docs/guide/examples.md)을 확인하세요. 자체 클라이언트를 만들 경우 [HMAC 인증 규칙](/api-docs/guide/authentication.md)을 따라야 합니다.

저장소에서 기존 Go 예제 클라이언트를 사용하는 경우 `backend-base`에서:

```sh
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 구독

키가 필요 없는 공개 연결은 브라우저에서도 사용할 수 있습니다.

```js
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 클라이언트를 사용합니다.
