AI 어시스턴트

시작하기

처음 API를 접하는 분도 괜찮아요.
개발환경 세팅 → API 키 발급 → 첫 호출까지, 세 단계를 순서대로 따라오면 첫 응답을 직접 확인할 수 있어요.

STEP 1 · 약 15분

개발환경 세팅

시작 전 준비

API를 호출하려면 코드를 실행할 환경이 필요해요. 이 가이드는 가장 진입장벽이 낮고 자료가 많은 Python + VS Code 조합을 기준으로 설명해요. 이미 개발 환경이 갖춰져 있다면 2단계 토큰 발급으로 건너뛰세요.

1-1Python 설치

python.org에서 최신 버전 다운로드를 해주세요. 설치 시 반드시 "Add Python to PATH" 체크박스를 선택하세요. 이 옵션이 없으면 터미널에서 python 명령이 동작하지 않아요.

python.org 다운로드 페이지 →
python.org 다운로드 페이지
python.org 다운로드 페이지 — Download Python install manager
Python 설치 화면 — Add python.exe to PATH
설치 화면 — 하단 Add python.exe to PATH 체크 후 Install Now

자주 하는 실수: "Add Python to PATH" 미체크 시 python: command not found 오류가 나요. 이미 설치했다면 제거 후 재설치가 필요해요.

설치 완료 후 아래 명령으로 정상 설치됐는지 확인하세요.

터미널 / 명령 프롬프트
python --version
# Python 3.11.x  ← 이렇게 나오면 성공

pip --version
# pip 23.x.x from ...  ← pip도 함께 확인

1-2VS Code 설치 및 Python 확장 추가

코드 편집기는 어떤 것이든 괜찮지만, VS Code는 무료이고 Python 자동완성·오류 감지 기능이 뛰어나 추천해요.

VS Code 다운로드code.visualstudio.com 추천 에디터

VS Code 설치 후 Python 확장을 추가해야 자동완성이 동작해요.

VS Code 다운로드 페이지
VS Code 다운로드 페이지 — Download for Windows
VS Code Extensions 탭 — Python 확장 설치
Extensions 탭 → 'python' 검색 → Python(Microsoft) Install
  • VS Code 설치 완료
  • Extensions에서 Python (Microsoft) 설치
  • Ctrl+Shift+P → "Python: Select Interpreter"로 설치한 Python 버전 선택

1-3필수 라이브러리 설치

LS증권 OPEN API 호출에 필요한 Python 라이브러리를 설치하고 터미널(VS Code 내 터미널 포함)에서 아래 명령을 실행하세요.

터미널
# HTTP 요청용
pip install requests

# WebSocket 실시간 데이터용
pip install websocket-client

# (선택) 데이터 가공용
pip install pandas

설치 후 Successfully installed requests-x.x.x 메시지가 나오면 완료돼요.

1-4개발환경 최종 확인

아래 코드를 실행해 라이브러리가 정상 설치됐는지 확인하세요. VS Code에서 새 파일을 만들고 check_env.py로 저장 후 실행하세요.

check_env.pyPYTHON
import requests, websocket, sys

print(f"Python  : {sys.version}")
print(f"requests: {requests.__version__}")
print(f"ws-client: {websocket.__version__}")
print("✅ 개발환경 준비 완료!")
VS Code 터미널 실행 결과 화면
VS Code 터미널 실행 결과 — Python·requests·ws-client 버전과 ✅ 개발환경 준비 완료! 출력 확인
설치가 끝났다면 다음 단계로 이동하세요.
STEP 2 · 약 5분

인증토큰 발급

API 호출 전 필수

이용안내에서 발급받은 APP_KEY와 APP_SECRET을 사용해 Access Token을 발급하세요. 모든 API 호출 시 이 토큰을 헤더에 포함해야해요.

2-1APP_KEY · APP_SECRET 확인

이용안내에서 신청한 뒤, 고객센터 → 매매시스템 → API → 사용등록/해지 화면에서 계좌번호·계좌비밀번호로 조회하면 발급된 앱키·시크릿키를 언제든 확인할 수 있어요.

앱키와 시크릿키는 유출 및 도용되지 않도록 관리하여야 하며, 유출이나 도용된 경우 OPEN API 신청페이지에서 '사용해지'후 재등록해 주세요. 이 경우 기존 발금된 토큰은 만료돼요.

사용등록/해지 화면 — 앱키 · 시크릿키 확인
사용등록/해지 화면 — API 구분 OPEN API 선택 후 조회하면 하단에 앱키 · 시크릿키가 표시돼요.

2-2Access Token 발급 코드

아래 코드에서 YOUR_APP_KEY와 YOUR_APP_SECRET을 실제 값으로 교체한 뒤 실행하세요.

get_token.pyPYTHON
import requests

# ① 발급받은 키를 여기에 입력하세요.
APP_KEY    = "YOUR_APP_KEY"
APP_SECRET = "YOUR_APP_SECRET"

# ② 토큰 발급 요청
url  = "https://openapi.ls-sec.co.kr:8080/oauth2/token"
data = {
    "grant_type":   "client_credentials",
    "appkey":       APP_KEY,
    "appsecretkey": APP_SECRET,
    "scope":        "oob",
}
res = requests.post(url, data=data)

# ③ 토큰 확인
token = res.json()["access_token"]
print(f"✅ Token: {token[:30]}...")
terminalcURL
curl -X POST "https://openapi.ls-sec.co.kr:8080/oauth2/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "appkey=YOUR_APP_KEY" \
  -d "appsecretkey=YOUR_APP_SECRET" \
  -d "scope=oob"
get_token.jsJS
const body = new URLSearchParams({
  grant_type: "client_credentials",
  appkey: "YOUR_APP_KEY",
  appsecretkey: "YOUR_APP_SECRET",
  scope: "oob",
});
const res = await fetch("https://openapi.ls-sec.co.kr:8080/oauth2/token", {
  method: "POST", body,
});
const { access_token } = await res.json();
console.log("✅ Token:", access_token.slice(0, 30));

성공 시 아래와 같은 응답이 반환돼요.

200 OK 응답 예시
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type":   "Bearer",
  "expires_in":   86400  // 24시간
}
토큰이 정상 발급되면 다음 단계로 이동하세요.
STEP 3 · 약 10분

첫 API 호출 — 시세 조회·주문·잔고

핵심 기능

이제 실제 API호출이 가능해요. 가장 기본이 되는 세 가지 시세 조회 / 주문 / 잔고 확인 순서로 진행하세요.

3-1주식 현재가 조회

삼성전자(005930)의 현재가를 조회하세요. GET 방식으로 호출하며, 헤더에 발급한 토큰을 포함해요.

토큰 준비2단계 완료
헤더 구성Authorization: Bearer
GET 호출/stock/market-data
응답 확인JSON 파싱
quote.pyPYTHON
import requests

TOKEN = "YOUR_ACCESS_TOKEN"   # 2단계에서 발급
STOCK = "005930"              # 삼성전자

headers = {
    "Authorization": f"Bearer {TOKEN}",
    "tr_id": "STKCURR"
}
params = {"shcode": STOCK}

res  = requests.get(
    "https://openapi.ls-sec.co.kr:8080/stock/market-data",
    headers=headers, params=params
)
data = res.json()
print(f"종목명 : {data['hname']}")
print(f"현재가 : {data['price']:,}원")
print(f"등락률 : {data['chgrate']}%")

3-2주식 매수 주문

실제 자금이 사용되므로 처음에는 반드시 모의투자 토큰으로 테스트하세요. tr_id 값이 실전/모의를 구분해요.

주의: 실전투자 토큰으로 호출하면 실제 주문이 체결됩니다. 반드시 CSPAT00101 (모의) / CSPAT00601 (실전) tr_id를 구분하세요.

order.pyPYTHON
import requests, json

TOKEN  = "YOUR_ACCESS_TOKEN"
ACCTNO = "YOUR_ACCOUNT_NO"   # 계좌번호

headers = {
    "Authorization": f"Bearer {TOKEN}",
    "Content-Type":  "application/json",
    "tr_id": "CSPAT00101"  # 모의투자 매수
}
body = {
    "CANO":     ACCTNO,
    "shcode":   "005930",  # 삼성전자
    "qty":      "1",        # 수량
    "price":    "0",        # 시장가 (0)
    "hogagb":   "03"        # 03: 시장가
}
res  = requests.post(
    "https://openapi.ls-sec.co.kr:8080/stock/order",
    headers=headers, data=json.dumps(body)
)
print(res.json())

3-3잔고 조회

주문 후 보유 종목과 평가금액을 확인하세요.

balance.pyPYTHON
import requests

TOKEN  = "YOUR_ACCESS_TOKEN"
ACCTNO = "YOUR_ACCOUNT_NO"

headers = {
    "Authorization": f"Bearer {TOKEN}",
    "tr_id": "CSPAQ12300"
}
params = {"CANO": ACCTNO}

res  = requests.get(
    "https://openapi.ls-sec.co.kr:8080/stock/balance",
    headers=headers, params=params
)
holdings = res.json().get("output1", [])
for item in holdings:
    print(f"{item['hname']:10} {int(item['qty']):>5}주  평가: {int(item['evamt']):>12,}원")

3-4WebSocket 연결 및 구독 등록

Websocket으로 연결해 실시간 뉴스(NWS)를 구독하세요. 구독 등록 메시지를 전송하면 신규 뉴스가 푸시로 수신돼요.

realtime.pyPYTHON
import websocket, json

TOKEN = "YOUR_ACCESS_TOKEN"

ws = websocket.create_connection("wss://openapi.ls-sec.co.kr:9443/websocket")

# 실시간 뉴스(NWS) 구독 등록
sub = {
    "header": {"token": TOKEN, "tr_type": "3"},
    "body": {"tr_cd": "NWS", "tr_key": "NWS001"}
}
ws.send(json.dumps(sub))

while True:
    print(ws.recv())

첫 API 호출을 완료했어요! 🎉

이제 검증된 전략 샘플로 나만의 자동매매 로직을 발전시켜 보세요.

전략 체험하기
AI로 더 빠르게

가이드를 AI에게 학습시켜
나만의 개발 어시스턴트로

전체 API 가이드를 JSON 파일로 제공해드려요. ChatGPT·Claude 등 AI에 업로드해 학습시키면, TR 명세·코드 예제·오류 해결을 바로 질문하며 개발 속도를 높일 수 있어요.

1JSON 파일 다운로드
2AI 도구에 업로드
3가이드 내용 질문하기
OPEN API 가이드 다운로드 ls-openapi-tr-guides.json · 2.2 MB
JSON
TR 명세 · 요청/응답 필드가 하나의 JSON 파일에 담겨 있어요.