MODA API Docs
Guides
API Reference
Guides
API Reference
  1. 시작하기
  • 개요
    • MODA Open API
  • 시작하기
    • API Key 발급
    • 인증 헤더 만들기
    • 요청 서명 만들기
    • 첫 API 호출하기
  • 연동 가이드
    • REST API 연동
    • WebSocket 연동
    • API 요청 수 제한
  1. 시작하기

요청 서명 만들기

주문 API(/orders/*)는 요청 위변조를 방지하기 위한 HMAC-SHA512 서명이 필요합니다. 주문 생성, 취소, 정정 등 자산 변동이 발생하는 API가 이에 해당합니다. 조회 API는 JWT 인증만으로 충분하며 서명이 불필요합니다.

서명 생성 규칙#

주문 API(POST /orders/*)에만 서명이 필요합니다. 조회 API는 JWT 인증만으로 충분합니다.
Signature = HMAC-SHA512(secret_key, Method + Path + Timestamp + SHA512(Body))

구성 요소#

요소설명예시
MethodHTTP 메서드 (대문자)POST
Path요청 경로 (query string 제외)/open/v1/orders
TimestampX-Timestamp 헤더와 동일한 값1709625600
SHA512(Body)Request Body의 SHA-512 해시 (hex)a3f8c2d1...
주의

각 요소 사이에 구분자를 넣지 않습니다. 단순 문자열 연결(concatenation)입니다.

단계별 예시#

POST /open/v1/orders 주문 생성 API를 호출하는 경우입니다.
Step 1. 요청 정보 준비
Method: POST | Path: /open/v1/orders | Timestamp: 1709625600
Body: {"stockCd":"USDKRW","qty":1000,"price":1350.50}
Step 2. Body SHA-512 해시 생성 → "8a2e4f6c..." (128자 hex)
Step 3. 서명 원문 조합
SignPayload = "POST" + "/open/v1/orders" + "1709625600" + "8a2e4f6c..."
Step 4. HMAC-SHA512 서명 → "c5d9a1b3..." (128자 hex)
Step 5. 헤더에 포함

언어별 구현#

Python#

JavaScript#

Java#


Replay Attack 방지#

서버는 X-Timestamp(초 단위)와 서버 현재 시간을 비교하여 ±60초 이내의 요청만 유효하게 처리합니다. 60초를 초과한 과거 요청은 자동으로 거부되므로 Replay Attack의 유효 시간이 제한됩니다.
참고

클라이언트 시스템의 시간이 부정확하면 인증 실패가 발생할 수 있습니다. NTP 서버와 동기화하여 시간 오차를 최소화하세요.

디버깅 체크리스트#

OA_004 또는 OA_005 에러가 발생하면 아래를 확인하세요.
#확인 항목OX
1Method가 대문자인가POSTpost
2Path에 query string 미포함/open/v1/orders/open/v1/orders?page=1
3Timestamp = X-Timestamp 동일같은 값다른 값
4Body = 실제 전송 body 동일동일 JSON공백/순서 다름
5GET/DELETE에서 body hash 미포함M+P+TSM+P+TS+hash
6secret_key 정확발급 원본오타
7시스템 시간 정확NTP 동기화60초+ 차이

← 이전: 인증 헤더 만들기
다음: 첫 API 호출하기 →
수정일 2026-03-26 07:44:20
이전
인증 헤더 만들기
다음
첫 API 호출하기
Built with