B

벨라펠레

TESTNET
베이스 주소
exchange-api.bellapelle.kr
/api/v1
실시간 주소
exchange-api.bellapelle.kr
/ws · WebSocket
인증
API Key
+ 요청 서명 · 허용 IP
요청 제한
20 / 초
분당 1200

API 키 권한

권한할 수 있는 일기본값비고
조회시세·잔고·주문·내역 읽기▲ 켬모든 키에 기본 포함
거래주문 넣기·취소● 선택발급할 때 켠다
출금출금 요청✕ 꺼짐고객센터 문의 후에만 켤 수 있다

1. 시작하기

키 발급부터 첫 호출까지
1) 키 발급
로그인 후 내 정보 → API 키 에서 발급합니다. 발급 화면을 벗어나면 비밀키는 다시 볼 수 없습니다.
2) 허용 IP
키마다 호출할 수 있는 IP를 지정합니다. 비워 두면 어디서나 호출됩니다.
3) 요청 헤더
X-BEL-KEY: {액세스 키}
X-BEL-TS: {보낸 시각(밀리초)}
X-BEL-SIGN: {서명}
4) 서명 만들기
HMAC-SHA256( 비밀키, 시각 + 메서드 + 경로 + 본문 )
5) 시각 오차
서버 시각과 5초 넘게 차이 나면 거절합니다.
🔴비밀키를 브라우저 코드에 넣지 마세요. 웹 화면에서는 우리 서버(BFF)가 대신 호출합니다. 비밀키는 서버에만 둡니다.

2. 공개 API

키 없이 호출할 수 있습니다
메서드경로하는 일필요 권한
GET/api/v1/assets상장된 자산 목록공개
GET/api/v1/markets거래 가능한 마켓 목록공개
GET/api/v1/markets/{symbol}/ticker현재가와 24시간 통계공개
GET/api/v1/markets/{symbol}/orderbook호가 (사자·팔자 목록)공개
GET/api/v1/markets/{symbol}/trades최근 체결 내역공개

3. 인증 API

키와 서명이 필요합니다
메서드경로하는 일필요 권한
POST/api/v1/auth/register회원가입 신청공개
POST/api/v1/auth/login로그인공개
POST/api/v1/auth/logout로그아웃조회
GET/api/v1/me내 정보조회
GET/api/v1/balances내 잔고 (쓸 수 있는 돈·묶인 돈)조회
POST/api/v1/orders주문 넣기거래
GET/api/v1/orders내 주문 목록조회
GET/api/v1/orders/{id}주문 하나 조회조회
DELETE/api/v1/orders/{id}주문 취소거래
GET/api/v1/deposits입금 내역조회
GET/api/v1/deposits/address입금 주소 발급·조회조회
GET/api/v1/withdrawals출금 내역조회
POST/api/v1/withdrawals출금 요청출금
GET/api/v1/ledger내 자산 이동 내역조회

4. 실시간 (WebSocket)

채널보내는 것인증
ticker현재가·24시간 통계공개
orderbook호가 변화공개
trade체결공개
order내 주문 상태 변화조회
balance내 잔고 변화조회
순번
메시지마다 번호가 붙습니다. 번호가 건너뛰면 빠진 것입니다.
처음 연결
전체를 한 번 받고, 이후에는 바뀐 것만 받습니다.
다시 연결
번호가 끊기면 전체부터 다시 받습니다.
개인 채널
남의 채널을 구독하면 즉시 끊깁니다.
구독 보내기
{ "op": "subscribe",
  "channels": ["orderbook:BTC-USDT", "trade:BTC-USDT"] }
받는 메시지
{ "ch": "trade", "seq": 10482, "ts": 1788349491000,
  "data": { "priceUnit": "6423050", "qtyUnit": "1840000", "side": "BUY" } }

5. 공통 규칙

성공
{
  "success": true,
  "data": {},
  "message": ""
}
실패
{
  "success": false,
  "message": "쓸 수 있는 돈이 모자라다",
  "error": { "code": "INSUFFICIENT_BALANCE", "detail": "..." }
}
금액 표기
소수가 아니라 정수(최소 단위)로 주고받습니다. 소수점 오차를 없애기 위해서입니다.
중복 방지
client_order_id 를 붙이면 같은 요청을 두 번 보내도 한 번만 처리됩니다.
시각
모두 밀리초 단위 숫자입니다.

에러 코드

코드HTTP언제
UNAUTHORIZED401인증에 실패했다키가 없거나 서명이 틀림
FORBIDDEN403권한이 없다키에 그 권한이 없음 · 남의 자료 요청
NOT_FOUND404대상이 없다없는 주문·마켓
INSUFFICIENT_BALANCE400잔고가 모자란다쓸 수 있는 돈보다 주문이 큼
INVALID_PRECISION400단위가 맞지 않는다가격·수량 단위 또는 최소 금액 위반
DUPLICATE_REQUEST200같은 요청이다첫 처리 결과를 그대로 돌려줌
MARKET_HALTED409거래가 멈춘 마켓이다상장폐지 진행 중 등
RATE_LIMITED429요청이 너무 잦다잠시 뒤 다시
UPSTREAM_ERROR503바깥 서버가 응답하지 않는다자동 재시도 대상

6. 예제 코드

시세 조회 → 주문 → 취소
# 1. 호가 보기 (키 없이)
curl "https://exchange-api.bellapelle.kr/api/v1/markets/BTC-USDT/orderbook"

# 2. 지정가 매수 — 값은 정수(최소 단위)로 보낸다
curl -X POST "https://exchange-api.bellapelle.kr/api/v1/orders" \
  -H "X-BEL-KEY: $KEY" \
  -H "X-BEL-TS: $TS" \
  -H "X-BEL-SIGN: $SIGN" \
  -H "Content-Type: application/json" \
  -d '{"market":"BTC-USDT","side":"buy","type":"limit","price":"6423050","qty":"1840000","client_order_id":"my-001"}'

# 3. 주문 취소
curl -X DELETE "https://exchange-api.bellapelle.kr/api/v1/orders/91042" \
  -H "X-BEL-KEY: $KEY" -H "X-BEL-TS: $TS" -H "X-BEL-SIGN: $SIGN"
🟢같은 요청을 두 번 보내도 안전합니다. client_order_id 가 같으면 주문은 한 번만 들어가고, 두 번째 응답은 첫 결과를 그대로 돌려줍니다.