
"API 호출해서 데이터 받아와", "API 키 발급받아야 해", "API 응답이 JSON으로 와"…
처음엔 그냥 넘어갔는데, 자동화 시스템을 만들기 시작하면서 이걸 제대로 이해하지 않으면 진짜 막힌다는 걸 느꼈어요.
비전공자 기준으로 최대한 쉽게 정리해볼게요.
API가 뭔가요? — 식당 웨이터 비유
API는 Application Programming Interface의 약자예요. 단어 자체는 어렵게 보이지만, 역할은 단순해요.
식당을 떠올려보면 이해가 빨라요.
주방에서 음식이 나오면 → 웨이터(API) → 손님(내 프로그램)에게 전달
손님(내 코드)은 주방(서버) 내부 사정을 몰라도 돼요. 웨이터(API)에게 원하는 걸 말하면, 웨이터가 주방과 소통하고 결과를 가져다줘요.
예를 들어, 업비트 거래소의 비트코인 현재가를 가져오고 싶다면, 업비트가 만들어놓은 API 주소로 요청을 보내기만 하면 돼요. 업비트 서버 내부에서 어떻게 데이터를 꺼내오는지는 전혀 몰라도 되는 거죠.
JSON이 뭔가요? — 데이터를 주고받는 공통 언어
API로 요청을 보내면, 서버가 데이터를 돌려줘요. 이 데이터가 담기는 형식이 바로 JSON(JavaScript Object Notation)이에요.
이름엔 JavaScript가 들어있지만, 특정 언어에 종속된 게 아니에요. 파이썬, 자바, Go 어디서든 다 읽고 쓸 수 있는 범용 데이터 포맷이에요.
구조는 간단해요. 키(Key): 값(Value) 쌍으로 이루어져 있어요. 마치 사전처럼요.
예를 들어, 거래소 API에 비트코인 현재가를 요청하면 이런 형태로 응답이 와요:
{
"market": "KRW-BTC", // 마켓 코드 (원화-비트코인)
"trade_price": 142500000, // 현재가 (원)
"change": "RISE", // 전일 대비 상승/하락
"change_rate": 0.0213, // 변동률 (2.13%)
"timestamp": 1748822400000 // 시각 (Unix 타임스탬프)
}
읽는 법은 직관적이에요. "trade_price": 142500000 → "현재가"는 142,500,000원. 파이썬에서 이 값을 꺼내 쓰려면 이렇게 하면 돼요:
data = response.json() # API 응답을 파이썬 딕셔너리로 변환
price = data["trade_price"] # 키 이름으로 값을 꺼냄
print(price) # 142500000
{}는 하나의 객체(묶음), 대괄호 []는 리스트(여러 개)를 의미해요. 복잡해 보여도 키 이름을 따라가다 보면 데이터 구조가 읽혀요.자동화 시스템의 API 통신 흐름
API의 기본은 요청(Request)과 응답(Response)이에요. 내가 요청을 보내고, 서버가 응답을 돌려주는 구조예요.
트레이딩 자동화 시스템을 예로 들면 이런 흐름이에요:
STEP 2. 조건 검사 → 현재가가 설정한 매수 타점 이하인지 확인
STEP 3. 조건 충족 시 → 매수 주문 API 호출 (수량, 가격 JSON으로 전달)
STEP 4. 주문 결과 응답 수신 → 텔레그램 봇 API로 알림 전송
각 단계가 모두 API 호출과 JSON 응답으로 연결돼 있어요. 파이썬 입장에서는 requests.get(url) 또는 requests.post(url, json=데이터) 한 줄이 전부예요. 이 안에서 HTTP 통신, 데이터 직렬화 같은 복잡한 일들이 자동으로 처리돼요.
API Key 보안 — 가장 중요한 부분
거래소나 유료 API를 쓰려면 API Key(키)를 발급받아야 해요. 이 키가 있어야 서버가 "이 요청이 진짜 허가된 사람한테서 왔구나"라고 인식해요.
문제는 이 키가 유출되면 내 계정을 타인이 완전히 제어할 수 있다는 거예요. 거래소 API 키가 털리면 내 자산을 마음대로 팔거나 출금할 수 있어요. 실제로 GitHub에 키를 올렸다가 수십 분 안에 계좌가 털리는 사고가 꽤 많이 일어나요.
GitHub, 블로그, 카카오톡 어디든 공개 공간에 올라가는 순간 자동화 봇이 수집해요. 발급받는 즉시 .env 파일에 넣고, 코드에는 환경변수로만 불러오세요.
| 관리 항목 | 위험한 방법 ❌ | 안전한 방법 ✅ |
|---|---|---|
| 키 보관 | 코드 파일에 직접 입력 | .env 파일에 저장, .gitignore 등록 |
| 접근 제한 | IP 제한 없이 발급 | IP 화이트리스트 등록 (내 서버 IP만 허용) |
| 권한 설정 | 조회·매매·출금 모두 허용 | 용도별 분리 (조회용 / 매매용 / 출금 비허용) |
| 유출 시 대응 | 방치 | 즉시 키 폐기 후 재발급, 거래 내역 확인 |
API_KEY=여기에_실제키
API_SECRET=여기에_실제시크릿
# Python 코드
from dotenv import load_dotenv
import os
load_dotenv()
key = os.getenv("API_KEY") # 코드엔 키가 보이지 않음
API와 JSON, 처음엔 낯설어도 패턴이 단순해요. 요청 보내고 → JSON 받고 → 원하는 키로 값 꺼내고. 이걸 반복하는 게 자동화 코드의 대부분이에요.
API 키 관리만 처음부터 습관 잡아두면 나중에 골치 아플 일이 줄어요. 귀찮더라도 .env부터 만들고 시작하는 걸 권해요.
'Ai 취미생활 > 용어&개념&이론' 카테고리의 다른 글
| Claude Fable 5가 뭔가요 — Opus 위에 새 계층 생겼고, Claude Code에서 오늘부터 씁니다 (8) | 2026.06.11 |
|---|---|
| 옵시디언(Obsidian)이 뭔지 궁금했는데 — 개념부터 활용까지 초보자도 알기 쉽게 (1) | 2026.06.11 |
| 소프트웨어 3.0이란? 자연어가 코딩이 되는 시대 — Karpathy의 패러다임 정리 (0) | 2026.06.02 |
| 하네스 엔지니어링이란? AI가 잘 일하게 판을 깔아주는 기술 (0) | 2026.05.28 |
| LLM 위키 — 안드레 카파시의 한마디로 다시 보는 AI (학습 못 한다는 진실까지) (11) | 2026.05.25 |