Python

시작하기

Upbit SDK는 업비트 API(REST API, WebSocket)를 다양한 프로그래밍 언어로 사용할 수 있도록 제공되는 공식 SDK 라이브러리입니다. 모든 요청 파라미터와 응답에 대한 타입 정의를 포함하고 있어 코드 작성 시 자동 완성과 타입 검사를 활용할 수 있습니다. 직접 API 연동을 위한 인증 처리, HTTP 요청, 에러 핸들링 등을 구현하지 않고도 적은 코드만으로 API 연동이 가능하여 편리합니다.

이 가이드에서는 Python 환경에서 Upbit SDK를 사용하여 API를 호출하는 방법을 안내합니다.



SDK 공식 문서

Upbit Python SDK 관련 문서는 아래에서 확인할 수 있습니다.


Python 연동 가이드

  • 최소 버전: Python 3.9.0+

가상 환경 구축 및 SDK 설치

Python에서는 프로젝트별 가상 환경 사용을 권장합니다. 이를 통해 패키지 충돌 및 버전 문제를 방지할 수 있습니다.

1. 프로젝트 디렉토리 생성

mkdir upbit_sdk_project
cd upbit_sdk_project

touch upbit_sdk.py

2. 가상 환경 생성

python3 -m venv .venv

3. 가상 환경 활성화

  • Linux / macOS: source .venv/bin/activate
  • Windows: .venv\Scripts\activate

정상적으로 활성화되면 다음과 같이 표시됩니다.

(.venv) user@computer:~/project$

4. SDK 설치

pip install upbit-sdk

클라이언트 인스턴스 설정

Upbit SDK는 인증 정보와 환경 설정을 포함하는 클라이언트 기반으로 동작합니다.

권장 방법: UPBIT_ACCESS_KEY, UPBIT_SECRET_KEY 환경변수 사용 소스코드에 API Key를 직접 입력하는 것은 보안상 권장되지 않습니다.

# upbit_sdk.py
import os
from upbit import Upbit

client = Upbit(
    access_key=os.environ.get("UPBIT_ACCESS_KEY"),
    secret_key=os.environ.get("UPBIT_SECRET_KEY"),
)

인스턴스 설정 확인

클라이언트가 정상적으로 설정되었는지 확인하기 위해 다음과 같이 코드를 작성하고 실행합니다.

인증이 필요한 API 호출

import os
from upbit import Upbit

def list_accounts():
    client = Upbit(
        access_key=os.environ.get("UPBIT_ACCESS_KEY"),
        secret_key=os.environ.get("UPBIT_SECRET_KEY"),
    )

    accounts = client.accounts.list()
    print(accounts)

if __name__ == "__main__":
    list_accounts()

인증 없이 API 호출

from upbit import Upbit

def list_markets():
    client = Upbit()

    markets = client.trading_pairs.list()
    print(markets)

if __name__ == "__main__":
    list_markets()

응답 예시

인증 API 응답

[
  {
    "currency": "BTC",
    "balance": "0.00050000",
    "locked": "0.00000000",
    "avg_buy_price": "145500000",
    "avg_buy_price_modified": false,
    "unit_currency": "KRW"
  }
]

비인증 API 응답

[
  {
    "market": "KRW-BTC",
    "korean_name": "비트코인",
    "english_name": "Bitcoin"
  }
]

에러 핸들링

API 호출 시 인증 실패, 요청 초과 등의 오류가 발생할 수 있습니다. 다음과 같이 예외를 처리할 수 있습니다.

import os
import upbit
from upbit import Upbit

client = Upbit(
    access_key=os.environ.get("UPBIT_ACCESS_KEY"),
    secret_key=os.environ.get("UPBIT_SECRET_KEY"),
)

try:
    accounts = client.accounts.list()
    print(accounts)

except upbit.APIConnectionError as e:
    print("서버 연결 실패")
    print(e.__cause__)

except upbit.AuthenticationError:
    print("인증 실패: API Key를 확인하세요.")

except upbit.RateLimitError:
    print("요청 횟수 초과")

except upbit.APIStatusError as e:
    print(f"API 오류 ({e.status_code}): {e.message}")

에러 타입

상태 코드오류 타입
400BadRequestError
401AuthenticationError
403PermissionDeniedError
404NotFoundError
418RateLimitPenaltyError
422UnprocessableEntityError
429RateLimitError
> =500InternalServerError
N/AAPIConnectionError

가상 환경 비활성화

deactivate

※ This English version is a translation of the original Korean version of the Upbit Developer Center, generated using a third-party tool. In the event of any discrepancies, the Korean version shall take precedence.