비트겟(Bitget) API를 사용하기 위해서는 **API Key**와 **Secret Key**를 생성하고 인증하는 과정이 필요합니다. 아래는 API 인증을 위한 **HMAC SHA256 서명(Signature) 생성 및 요청 방법**을 설명하는 코드
작성자 정보
- 작성자 bryanai
- 작성일
컨텐츠 정보
- 조회 540
본문
비트겟(Bitget) API를 사용하기 위해서는 API Key와 Secret Key를 생성하고 인증하는 과정이 필요합니다.
아래는 API 인증을 위한 HMAC SHA256 서명(Signature) 생성 및 요청 방법을 설명하는 코드입니다.
1️⃣ API Key & Secret 생성
✅ 비트겟 API Key 발급 방법
- 비트겟(Bitget) 웹사이트에 로그인 https://www.bitget.com
- [API 관리] 메뉴로 이동
- 새 API 키 생성 (권한:
읽기(Read)
,거래(Trade)
선택) - API Key, API Secret, Passphrase 저장 (나중에 필요함)
2️⃣ API 인증 방식
비트겟 API는 요청 시 HMAC SHA256
방식으로 **서명(Signature)**을 생성해야 합니다.
요청 헤더 예시
{
"X-BG-APIKEY": "your_api_key",
"X-BG-SIGNATURE": "your_signature",
"X-BG-TIMESTAMP": "your_timestamp",
"X-BG-PASSPHRASE": "your_passphrase"
}
X-BG-APIKEY
: API KeyX-BG-SIGNATURE
: HMAC SHA256 서명X-BG-TIMESTAMP
: 현재 시간 (밀리초)X-BG-PASSPHRASE
: API 생성 시 입력한 패스프레이즈
3️⃣ Python 코드: API 인증 및 계정 잔고 조회
아래 코드는 비트겟 API 인증을 거쳐 계정 잔고를 조회하는 예제입니다.
import requests
import time
import hmac
import hashlib
import base64
import json
# === 비트겟 API 정보 입력 ===
API_KEY = "your_api_key"
API_SECRET = "your_api_secret"
PASSPHRASE = "your_passphrase"
BASE_URL = "https://api.bitget.com"
# === 서명(Signature) 생성 함수 ===
def create_signature(timestamp, method, endpoint, body=""):
message = timestamp + method + endpoint + body
signature = hmac.new(API_SECRET.encode(), message.encode(), hashlib.sha256).hexdigest()
return signature
# === 계정 잔고 조회 함수 ===
def get_balance():
endpoint = "/api/v2/spot/accounts"
url = BASE_URL + endpoint
timestamp = str(int(time.time() * 1000)) # 밀리초 단위 시간
method = "GET"
# 서명(Signature) 생성
signature = create_signature(timestamp, method, endpoint)
headers = {
"X-BG-APIKEY": API_KEY,
"X-BG-SIGNATURE": signature,
"X-BG-TIMESTAMP": timestamp,
"X-BG-PASSPHRASE": PASSPHRASE
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
print("✅ 계정 잔고 조회 성공:", response.json())
else:
print("❌ API 요청 실패:", response.text)
# === 실행 ===
get_balance()
4️⃣ 코드 설명
-
HMAC SHA256 서명 생성
timestamp + method + endpoint + body
조합 후,HMAC SHA256
해시 생성create_signature()
함수에서 처리
-
API 요청 헤더 구성
X-BG-APIKEY
: API Key 포함X-BG-SIGNATURE
: 서명(Signature) 포함X-BG-TIMESTAMP
: 현재 시간(밀리초) 포함X-BG-PASSPHRASE
: API 패스프레이즈 포함
-
잔고 조회 API 요청
get_balance()
함수에서/api/v2/spot/accounts
엔드포인트 호출- 계정의 잔고 정보를 JSON 형태로 반환
5️⃣ 실행 방법
- Python 라이브러리 설치
pip install requests
-
API Key, Secret 입력
API_KEY
,API_SECRET
,PASSPHRASE
를 본인 값으로 변경
-
Python 코드 실행
python bitget_api_auth.py
- 결과 예시 (잔고 조회 성공)
✅ 계정 잔고 조회 성공: {
"code": "00000",
"data": [
{
"asset": "USDT",
"available": "1234.56",
"frozen": "0.00"
},
{
"asset": "BTC",
"available": "0.02",
"frozen": "0.00"
}
]
}
추가 기능 (다른 API 요청)
- ✅ 현재 시세 조회:
/api/v2/market/ticker
- ✅ 거래 주문 실행:
/api/v2/spot/orders
- ✅ 거래 내역 조회:
/api/v2/spot/orders/history
더 추가하고 싶은 기능이 있다면 알려주세요!
자바스크립트
// === Bitget API Info ===
const API_KEY = "your_api_key";
const API_SECRET = "your_api_secret";
const PASSPHRASE = "your_passphrase";
const BASE_URL = "https://api.bitget.com";
const fetch = require("node-fetch");
const crypto = require("crypto");
// === Create Signature Function ===
function createSignature(timestamp, method, endpoint, body = "") {
const message = timestamp + method + endpoint + body;
const signature = crypto.createHmac("sha256", API_SECRET).update(message).digest("hex");
return signature;
}
// === Get Account Balance Function ===
async function getBalance() {
const endpoint = "/api/v2/spot/accounts";
const url = `${BASE_URL}${endpoint}`;
const timestamp = Date.now().toString(); // Milliseconds timestamp
const method = "GET";
// Create Signature
const signature = createSignature(timestamp, method, endpoint);
const headers = {
"X-BG-APIKEY": API_KEY,
"X-BG-SIGNATURE": signature,
"X-BG-TIMESTAMP": timestamp,
"X-BG-PASSPHRASE": PASSPHRASE
};
try {
const response = await fetch(url, { method, headers });
if (response.ok) {
const data = await response.json();
console.log("✅ Account balance fetched successfully:", data);
} else {
const errorText = await response.text();
console.error("❌ API request failed:", errorText);
}
} catch (error) {
console.error("❌ Error fetching account balance:", error);
}
}
// === Execute ===
getBalance();
관련자료
-
이전
-
다음