API 연동

바이낸스 API 신청 방법? 키 및 서명 생성 가이드

바이낸스 API 키 신청 전체 프로세스: KYC 통과부터 키 생성, IP 화이트리스트 설정, HMAC-SHA256 서명 생성까지 Python 및 Node.js 코드 예제와 함께 설명합니다.

바이낸스(Binance) API 신청의 핵심 프로세스는 다음과 같습니다: KYC L2 인증 완료 → 바이낸스 공식 사이트 관리 페이지 접속 → API 키 생성 → IP 화이트리스트 설정 → 코드에서 HMAC-SHA256 서명을 적용하여 호출. 전체 과정은 약 15분 정도 소요되며, 생성 즉시 사용 가능하고 별도의 월 이용료는 없습니다. 2FA 인증 관리를 위해 바이낸스 모바일 앱이 필요하다면 바이낸스 공식 앱 안드로이드 버전을 설치하거나, 아이폰 사용자는 iOS 설치 가이드를 참고하세요. 본문에서는 신청, 서명, 오류 처리, 빈도 제한 전략을 4개 섹션으로 나누어 설명하며 Python 및 Node.js 코드를 함께 제공합니다.

1. API 키 신청 전제 조건

1. KYC L2 실명 인증 완료

바이낸스 API를 사용하려면 최소한 L2 중급 신원 인증(신분증 제출 + 얼굴 인식)을 완료해야 합니다. L1 기초 인증 단계에서는 API 키를 생성할 수 없습니다. L2 인증은 보통 24시간 이내에 승인됩니다.

2. 2FA 활성화 (필수)

API 키 생성 과정에서 2FA 인증번호 확인이 필요합니다. 아직 설정하지 않았다면 보안 센터 → 2단계 인증 → Google Authenticator를 통해 설정을 완료하세요.

3. 입금 및 보유량 제한 없음

잔액이 0원인 상태에서도 API 키를 생성할 수 있으므로, 키를 먼저 준비한 후 자금을 입금해도 무방합니다.

2. API 키 생성 (5단계)

1단계: API 관리 페이지 접속

바이낸스 공식 사이트 로그인 → 오른쪽 상단 프로필 아이콘 → API Management 클릭. 직접 접속 주소는 binance.com/en/my/settings/api-management입니다.

2단계: 키 유형 선택

바이낸스는 두 가지 API 키 유형을 제공합니다:

유형 용도 권장 상황
System generated 시스템 자동 생성 키 쌍 90% 이상의 사용자에게 권장, 간편하고 안정적
Self-generated 사용자가 Ed25519 공개키 제공 고급 사용자용, 개인키가 로컬 환경을 떠나지 않음

초보자라면 System generated를 선택하세요.

3단계: 키 레이블(Label) 작성

키의 이름을 지정합니다. 관리하기 편한 이름을 입력하세요. 예:

  • python-grid-bot — 그리드 매매 봇
  • nodejs-monitor — 가격 모니터링 스크립트
  • quantitative-strategy-v2 — 퀀트 전략 v2

레이블은 본인에게만 보이며, 바이낸스 시스템상에서 기능적 차이를 만들지는 않습니다.

4단계: 2FA 인증 통과

다음을 입력합니다:

  • 이메일 6자리 인증번호
  • 휴대폰 SMS 6자리 인증번호
  • Google Authenticator 6자리 OTP 번호

세 번호가 모두 일치하면 키 생성이 완료됩니다.

5단계: Secret Key 저장 (매우 중요)

키 생성 페이지에 다음 정보가 표시됩니다:

  • API Key: 영구적으로 확인 가능하며 언제든 다시 볼 수 있습니다.
  • Secret Key: 단 한 번만 표시됩니다. 페이지를 닫으면 다시는 확인할 수 없습니다.

반드시 즉시 Secret Key를 안전한 곳(비밀번호 관리자 또는 암호화된 노트)에 복사해 두어야 합니다. 분실 시 키를 삭제하고 새로 만들어야 합니다.

3. 키 권한 및 IP 화이트리스트 설정

키가 생성되면 기본적으로 모든 권한이 비활성화되어 있으므로 수동으로 켜야 합니다.

권한 옵션

권한 용도 리스크 등급
Enable Reading 잔액, 주문, 시세 조회 낮음
Enable Spot & Margin Trading 현물 / 마진 주문 중간
Enable Futures 선물 주문 높음
Enable Withdrawals 출금 (반드시 IP 화이트리스트 필요) 매우 높음
Permits Universal Transfer 계정 간 자금 이체 중간

보안 권고: 꼭 필요한 권한만 활성화하세요. 시세 조회만 한다면 Enable Reading만 체크하고, 현물 매매를 한다면 Enable Reading + Enable Spot & Margin Trading만 체크하세요. Enable Withdrawals는 꼭 필요한 경우가 아니라면 활성화하지 마세요.

IP 화이트리스트 (적극 권장)

키 설정 페이지에서 해당 키를 사용할 서버의 IP 주소를 입력합니다(최대 30개). 설정 후에는 지정된 IP에서 오는 요청만 이 키를 사용하여 계정을 조작할 수 있습니다.

유동 IP(가정용 인터넷)를 사용하는 경우 **Unrestricted (Less Secure)**를 선택할 수 있지만, 이 경우 Enable Withdrawals 권한을 활성화할 수 없습니다. 이는 바이낸스의 강제 보안 규칙입니다.

4. 서명 생성 및 API 호출

바이낸스 REST API에서 계정 조작과 관련된 모든 요청은 서명이 필요합니다. 서명 알고리즘은 HMAC-SHA256을 사용합니다.

서명 규칙

서명 내용 = 모든 요청 파라미터를 URL 인코딩한 후 &로 연결한 문자열

예를 들어 계정 잔액 조회 인터페이스의 경우:

GET /api/v3/account
파라미터: timestamp=1712876400000

서명 내용: timestamp=1712876400000
서명 값: HMAC_SHA256(secret_key, "timestamp=1712876400000")

최종 요청 형식:

GET /api/v3/account?timestamp=1712876400000&signature=<계산된 서명값>
Header: X-MBX-APIKEY: <내 API Key>

Python 전체 예제

import hmac, hashlib, time, requests

API_KEY = "내 API Key"
SECRET_KEY = "내 Secret Key"
BASE_URL = "https://api.binance.com"

def sign(params: dict) -> str:
    query = "&".join([f"{k}={v}" for k, v in params.items()])
    return hmac.new(SECRET_KEY.encode(), query.encode(), hashlib.sha256).hexdigest()

def get_account():
    params = {"timestamp": int(time.time() * 1000)}
    params["signature"] = sign(params)
    headers = {"X-MBX-APIKEY": API_KEY}
    r = requests.get(f"{BASE_URL}/api/v3/account", params=params, headers=headers)
    return r.json()

print(get_account())

Node.js 전체 예제

const crypto = require('crypto');
const axios = require('axios');

const API_KEY = '내 API Key';
const SECRET_KEY = '내 Secret Key';
const BASE_URL = 'https://api.binance.com';

function sign(params) {
  const query = Object.keys(params).map(k => `${k}=${params[k]}`).join('&');
  return crypto.createHmac('sha256', SECRET_KEY).update(query).digest('hex');
}

async function getAccount() {
  const params = { timestamp: Date.now() };
  params.signature = sign(params);
  const r = await axios.get(`${BASE_URL}/api/v3/account`, {
    params,
    headers: { 'X-MBX-APIKEY': API_KEY }
  });
  return r.data;
}

getAccount().then(console.log);

5. 빈도 제한과 가중치(Weight)

바이낸스 API는 **가중치(Weight)**를 통해 호출 빈도를 제어합니다:

제한 항목 기본값
분당 가중치 상한 6,000
10초당 주문 상한 100건
일일 주문 상한 200,000건
WebSocket 단일 연결 구독 수 상한 1,024개
단일 IP당 WebSocket 연결 수 상한 300개

주요 인터페이스 가중치:

  • GET /api/v3/ticker/price — 가중치 1
  • GET /api/v3/depth — 가중치 1-50 (limit 파라미터에 따라 다름)
  • GET /api/v3/account — 가중치 10
  • POST /api/v3/order — 가중치 1 (단, 주문 횟수 제한 적용됨)

응답 헤더에서 현재 사용량을 확인할 수 있습니다:

  • X-MBX-USED-WEIGHT-1m: 최근 1분간 사용된 가중치
  • X-MBX-ORDER-COUNT-10s: 최근 10초간 접수된 주문 횟수

가중치를 초과하면 429 Too Many Requests 오류가 반환되며, 심각한 위반 시 418 오류와 함께 IP가 일시 차단(2분~3일)될 수 있습니다.

6. 자주 발생하는 오류 및 해결 방법

오류: -1022 Signature for this request is not valid

원인: 서명 오류입니다. 파라미터 순서가 다르거나 URL 인코딩 방식이 잘못된 경우가 많습니다. 해결:

  • 서명 계산 시 사용한 문자열이 실제 요청 쿼리 문자열과 완전히 일치하는지 확인하세요.
  • 숫자형 파라미터에 따옴표를 넣지 마세요 (예: timestamp=1712876400000).
  • 특수 문자가 포함된 경우 올바르게 URL 인코딩되었는지 확인하세요.

오류: -1021 Timestamp for this request was 1000ms ahead of the server's time

원인: 로컬 시간과 바이낸스 서버 시간의 오차가 1초를 초과했습니다. 해결:

  • 로컬 시스템 시간을 동기화(NTP)하세요.
  • 또는 요청 시 recvWindow=10000 파라미터를 추가하여 오차 허용 범위를 10초로 늘리세요.

오류: -2014 API-key format invalid

원인: 키 문자열 형식이 잘못되었습니다. 해결: 복사 시 공백이나 줄바꿈이 포함되었는지 확인하세요. 키는 64자리의 영문자와 숫자로 구성됩니다.

오류: -1003 Too many requests; current limit is X requests per minute

원인: 가중치 상한을 초과했습니다. 해결:

  • 호출 빈도를 줄이거나 요청을 통합하세요 (예: 여러 거래쌍 조회 시 개별 호출 대신 /api/v3/ticker/24hr 사용).
  • 실시간 데이터는 REST 대신 WebSocket을 사용하여 요청 횟수를 줄이세요.

7. API 보안 베스트 프렉티스

  1. 프론트엔드 코드에 Secret Key를 절대 노출하지 마세요 — 백엔드 서버에서 바이낸스 API를 호출하도록 설계하세요.
  2. 코드 저장소(.gitignore)에서 키 파일을 제외하세요 — GitHub 등에 유출되지 않도록 주의해야 합니다.
  3. 프로덕션 환경에서는 IP 화이트리스트를 사용하세요 — 본인의 서버 IP만 허용하도록 설정하세요.
  4. 정기적으로 키를 교체하세요 — 6개월마다 기존 키를 삭제하고 새로 생성하는 것이 안전합니다.
  5. 비정상 호출을 모니터링하세요 — API 관리 페이지에서 일일 호출 통계를 확인하고 이상 징후 발생 시 즉시 키를 중지하세요.

자주 묻는 질문 FAQ

Q1: API 키는 무료인가요?

A: 네, 완전히 무료입니다. 바이낸스는 API 호출 자체에 비용을 부과하지 않으며(실제 거래 시에만 수수료 발생), 키 생성 시 예치금도 필요 없습니다. 단, 계정당 최대 30개까지만 생성 가능합니다.

Q2: API 주문 수수료가 수동 주문보다 저렴한가요?

A: 자동으로 저렴해지지는 않습니다. 수수료는 사용자의 VIP 등급 및 BNB 보유량에 따라 결정되며 수동/API 모두 동일한 요율이 적용됩니다. 다만 API는 고빈도 매매를 통해 더 정교한 체결가를 확보하는 데 유리합니다.

Q3: 테스트 환경에서 모의 거래를 해볼 수 있나요?

A: 네, 가능합니다. 바이낸스는 Spot TestnetFutures Testnet을 제공하여 실제 자산 손실 없이 API 호출을 연습해 볼 수 있는 환경을 지원합니다.

Q4: CCXT 같은 라이브러리를 쓰는 게 나을까요?

A: 상황에 따라 다릅니다. CCXT는 여러 거래소를 동시에 지원해야 할 때 서명 및 파라미터 처리가 편리합니다. 직접 호출은 바이낸스만 사용하거나 극한의 성능이 필요한 경우에 적합합니다. 초보자라면 CCXT로 시작해 보는 것을 추천합니다.

Q5: API 키가 도난당한 것 같으면 어떻게 하나요?

A: 즉시 바이낸스 공식 사이트 → API 관리 페이지에서 해당 키를 삭제하세요(삭제 즉시 효력 상실). 이후 최근 거래 및 출금 기록을 확인하고 고객센터에 알리세요. Enable Withdrawals 권한을 켜지 않았다면 자산 탈취 위험은 낮습니다. 자세한 대응 방법은 [리스크 관리](/ko/vault/리스크 관리/) 카테고리를 확인하세요.

계정 풍보에 대응하는 방법이 궁금하신가요? 카테고리에서 「리스크 관리」 분류를 선택하여 전체 프로세스를 확인해 보세요.

계속 둘러보기

바이낸스 사용에 대한 추가 질문이 있으신가요? 카테고리 페이지로 돌아가 같은 주제의 다른 가이드를 찾아보세요.

카테고리

관련 가이드

바이낸스 현물(Spot) API 사용법: 첫 주문까지 가능한 실행 코드 가이드 2026-04-14 바이낸스 선물(Futures)과 현물(Spot) API의 차이점은? 엔드포인트와 가중치 비교 2026-04-14 바이낸스 API 사용 시 IP 차단될까? 제한 정책 및 가중치 계산법 총정리 2026-04-14 바이낸스 WebSocket 시세 구독 방법: 단일/조합 스트림 실무 코드 2026-04-14