인증 가이드

API 키, JWT 토큰 및 OAuth 2.0을 사용하여 Smart Money API로 인증하는 방법을 알아보세요. 업계 표준 인증 방법과 모범 사례로 통합을 안전하게 보호하세요.

개요

Smart Money API는 다양한 사용 사례에 맞는 여러 인증 방법을 지원합니다. 통합에 가장 적합한 방법을 선택하세요:

API 키(기본): 모든 REST API 호출에 키를 X-API-Key 요청 헤더로 전송하세요. 이는 봇 및 서버 간 사용에 권장되는 방법입니다.
세션 JWT(대체): 브라우저/대시보드 세션은 Authorization: Bearer를 통해 24시간 동안 유효한 세션 JWT로 인증합니다. 프로그래밍 방식 클라이언트는 X-API-Key.
OAuth 2.0: 다중 사용자 애플리케이션 및 타사 통합을 위한 엔터프라이즈급 인증입니다. 사용자는 앱이 자신의 데이터에 액세스할 수 있도록 승인합니다.
모든 API 요청은 HTTPS를 통해 이루어져야 합니다. 암호화되지 않은 HTTP 요청은 거부됩니다. 또한 API 키를 버전 관리 시스템에 커밋하거나 공개적으로 공유하지 마세요.

API 키

API 키는 귀하의 계정에 발급된 고유한 자격 증명입니다. 각 키는 단일 권한 및 할당량 집합을 나타냅니다. 다른 애플리케이션이나 환경(개발, 스테이징, 프로덕션)에 대해 여러 키를 생성할 수 있습니다.

API 키 생성

계정 콘솔에서 API 키를 생성하세요:

  1. 다음으로 이동 Smart Money Console
  2. 사이드바에서 "API Keys" 선택
  3. "Generate New Key" 클릭
  4. 키 유형 선택(개발, 스테이징, 프로덕션)
  5. 속도 제한 및 기능 설정
  6. 키를 복사하여 안전하게 저장
API 키를 즉시 저장하세요! 다시 볼 수 없습니다. 분실한 경우 새 키를 생성해야 합니다.

키 형식

API 키는 표준 형식을 따릅니다:

키 형식
sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z sk_test_8f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f sk_dev_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b

키 접두사는 환경을 나타냅니다:

sk_live_ — 전체 할당량이 있는 프로덕션 키
sk_test_ — 할당량이 줄어들고 개발 데이터가 있는 테스트 키
sk_dev_ — 샌드박스 데이터가 있는 개인 개발 키

X-API-Key 헤더(기본)

모든 API 요청에 API 키를 X-API-Key 요청 헤더로 전송하세요. 키를 URL에 넣지 마세요.

HTTP 헤더

HTTP
GET /v1/whales/events HTTP/1.1 Host: api.smartmoneyapi.com X-API-Key: sm_your_key Content-Type: application/json

cURL 예제

Shell
curl -X GET https://api.smartmoneyapi.com/v1/whales/events \ -H "X-API-Key: sm_your_key" \ -H "Content-Type: application/json"

Python 예제

Python
import requests api_key = "sm_your_key" headers = { "X-API-Key": api_key, "Content-Type": "application/json" } response = requests.get( "https://api.smartmoneyapi.com/v1/whales/events", headers=headers ) data = response.json()

JWT 토큰 인증

장기 세션 및 서버 간 통신의 경우 API 키를 JWT 토큰으로 교환하세요. JWT 토큰은 24시간 동안 유효하며 애플리케이션 코드에 API 키를 저장할 필요가 줄어듭니다.

JWT 토큰 가져오기

JWT 엔드포인트에 API 키를 POST하여 토큰을 가져오세요:

cURL
curl -X POST https://api.smartmoneyapi.com/auth/jwt \ -H "Content-Type: application/json" \ -d '{ "api_key": "sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m" }'

JWT 응답

JSON
{ "success": true, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", "expires_in": 86400, "token_type": "Bearer" }

JWT 토큰 사용

API 키와 마찬가지로 Authorization 헤더에 JWT 토큰을 사용하세요:

Python
import requests import json from datetime import datetime, timedelta class JWTAuth: def __init__(self, api_key): self.api_key = api_key self.token = None self.token_expires = None def get_valid_token(self): # 현재 토큰이 여전히 유효한지 확인 if self.token and self.token_expires > datetime.now(): return self.token # 새 토큰 가져오기 response = requests.post( "https://api.smartmoneyapi.com/auth/jwt", json={"api_key": self.api_key} ) data = response.json() self.token = data["token"] self.token_expires = datetime.now() + timedelta(seconds=data["expires_in"]) return self.token def request(self, method, url, **kwargs): token = self.get_valid_token() headers = kwargs.get("headers", {}) headers["Authorization"] = f"Bearer {token}" kwargs["headers"] = headers return requests.request(method, url, **kwargs) # 사용 auth = JWTAuth("sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m") response = auth.request( "GET", "https://api.smartmoneyapi.com/v1/whales/events" ) print(response.json())

OAuth 2.0

OAuth 2.0은 여러 사용자 계정에 액세스해야 하는 애플리케이션을 위한 것입니다. 사용자는 API 키를 공유하지 않고 애플리케이션에 자신의 데이터에 액세스할 수 있는 권한을 부여합니다.

OAuth 2.0 흐름

Smart Money API는 웹 애플리케이션을 위한 인증 코드 흐름을 지원합니다:

  1. 사용자가 "Connect with Smart Money" 버튼 클릭
  2. 브라우저가 인증 페이지로 리디렉션
  3. 사용자가 애플리케이션에 권한 부여
  4. 브라우저가 인증 코드와 함께 다시 리디렉션
  5. 백엔드가 코드를 액세스 토큰으로 교환
  6. 이제 사용자를 대신하여 데이터에 액세스할 수 있음

1단계: 인증 요청

사용자를 인증 엔드포인트로 리디렉션하세요:

URL
https://auth.smartmoneyapi.com/authorize? client_id=YOUR_CLIENT_ID& redirect_uri=https://yourapp.com/callback& response_type=code& scope=whale_positions+funding_rates+liquidations& state=random_state_string

2단계: 토큰 교환

사용자가 권한을 부여한 후 코드를 액세스 토큰으로 교환하세요:

cURL
curl -X POST https://auth.smartmoneyapi.com/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code&code=AUTH_CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=https://yourapp.com/callback"

OAuth 토큰 응답

JSON
{ "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "rt_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p", "scope": "whale_positions funding_rates liquidations" }

보안 모범 사례

키를 안전하게 저장

API 키를 버전 관리 시스템에 커밋하거나 애플리케이션에 하드코딩하거나 문서에 공유하지 마세요. 환경 변수 또는 AWS Secrets Manager, HashiCorp Vault와 같은 보안 키 관리 서비스를 사용하세요.

HTTPS만 사용

모든 API 요청은 HTTPS(TLS 1.2 이상)를 사용해야 합니다. HTTP 요청은 거부됩니다. 이렇게 하면 API 키와 데이터가 전송 중에 암호화됩니다.

키 권한 제한

다른 애플리케이션 및 환경에 대해 별도의 API 키를 생성하세요. 범위를 사용하여 각 키가 액세스할 수 있는 내용을 제한하세요. 개발 환경에서 프로덕션 키를 사용하지 마세요.

키 사용 모니터링

콘솔에서 API 사용을 정기적으로 검토하세요. 비정상적인 활동이나 할당량 한도에 도달할 경우 경고를 설정하세요. 더 이상 사용하지 않는 키는 삭제하세요.

키 순환

API 키가 손상될 위험을 줄이기 위해 정기적으로 키를 순환하세요. 90일마다 키를 순환하는 것을 권장합니다:

  1. 콘솔에서 새 API 키 생성
  2. 새 키를 사용하도록 애플리케이션을 업데이트하세요
  3. 모든 기능이 정상적으로 작동하는지 테스트하세요
  4. 콘솔에서 이전 키를 삭제하세요

범위 및 권한

API 키 생성 또는 OAuth 사용 시, 키가 접근할 수 있는 리소스를 지정하세요:

범위 설명 등급
whale_positions 고래 지갑 포지션 읽기 Trader+
funding_rates 펀딩 비율 데이터 읽기 Free+
liquidations 청산 피드 읽기 Free+
open_interest 미결제약정 데이터 읽기 Trader+
confirmation_scores AI 확인 점수 읽기 Pro+
on_chain 온체인 지표 읽기 Pro+

인증 코드 예시

완전한 Python 통합

Python
import requests from typing import Optional, Dict from datetime import datetime, timedelta class SmartMoneyAuth: """Smart Money API의 모든 인증 방법을 처리""" def __init__(self, api_key: str): self.api_key = api_key self.base_url = "https://api.smartmoneyapi.com" self.jwt_token = None self.jwt_expires = None def get_jwt_token(self) -> str: """JWT 토큰 가져오기 또는 갱신""" if self.jwt_token and self.jwt_expires > datetime.now(): return self.jwt_token response = requests.post( f"{self.base_url}/auth/jwt", json={"api_key": self.api_key} ) data = response.json() self.jwt_token = data["token"] self.jwt_expires = datetime.now() + timedelta(seconds=data["expires_in"] - 300) return self.jwt_token def headers_bearer(self) -> Dict: """Bearer 토큰 인증을 위한 헤더 가져오기""" return { "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" } def headers_jwt(self) -> Dict: """JWT 인증을 위한 헤더 가져오기""" token = self.get_jwt_token() return { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } def request(self, method: str, endpoint: str, use_jwt: bool = False, **kwargs) -> Dict: """인증된 요청 생성""" headers = self.headers_jwt() if use_jwt else self.headers_bearer() response = requests.request( method, f"{self.base_url}{endpoint}", headers=headers, **kwargs ) return response.json() # 사용 예시 auth = SmartMoneyAuth("sk_live_abc123xyz789") # Bearer 토큰 방식 whales = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT") # JWT 방식 (자동 갱신) whales_jwt = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT", use_jwt=True) print(f"{whales['data']['total']}개의 고래 포지션 발견")

도움이 필요하신가요?

인증 관련 도움이 필요하시면 API 문서를 참조하거나 지원팀에 문의하세요.

API 참조 문서

첫 API 키 생성하기

Smart Money API를 시작하세요. 계정을 생성하고 몇 분 안에 인증 자격 증명을 발급받으세요.

콘솔로 이동
무료 시작 — 하루 100회 호출, 카드 불필요

하나의 API로 3개 거래소의 실시간 고래 흐름, 펀딩, 미결제약정 및 온체인 데이터를 확인하세요. 무료 등급, 신용카드 불필요, 언제든지 업그레이드 가능.

무료로 시작 →
실시간 API 콘솔 사용해보기 → (계정 불필요)
30초 안에 API 키 발급받기

구축 준비되셨나요? 무료 API 키(하루 100회 호출, 카드 불필요)를 받고 실시간 고래, 펀딩 및 온체인 데이터를 가져오세요.

API 키 발급받기 →