시작하기
- 체험 키 받기: 메일 주소만 넣으면 바로 나와요. 7일 동안 30번 호출할 수 있어요.
- 호출하기: 요청 헤더에
Authorization: Bearer 체험 키를 넣고 JSON으로 보내요. - 마음에 들면 구매: 구매한 파일의 서버를 내 컴퓨터에서 켜는 법은 아래 내 서버에서 돌리기에 있어요.
내 체험 키
남은 호출 -번 · 만료 - · 이 브라우저에 저장돼 있어요
인증과 제한
| Base URL | https://sajuaedam.kro.kr/kit/api/v1 |
|---|---|
| 인증 | Authorization: Bearer sk_trial_… |
| 요청 | POST /도구 이름, 본문은 JSON(UTF-8) |
| 응답 | JSON. 헤더 X-Trial-Remaining에 남은 호출 수 |
| 한도 | 키 하나에 7일·30번. 어떤 도구든 호출 한 번에 1번 차감. 분당 60번까지 |
| 키 발급 | 메일 주소 하나에 한 번 |
| 도구 목록 | GET https://sajuaedam.kro.kr/kit/api/v1/tools (키 없이, 입력 스키마 포함) |
요청에 넣은 생년월일은 계산에만 쓰고 저장하지 않아요.
오류
오류는 {"error": "설명"} 형식으로 와요.
| 상태 | 뜻 |
|---|---|
400 | 입력이 잘못됨(날짜 형식, 없는 도시 등). 메시지에 이유가 있어요 |
401 | 키가 없거나 잘못됨 |
403 | 체험 기간이 끝남 |
404 | 없는 도구 이름 |
429 | 호출 횟수를 다 씀, 또는 너무 빠르게 호출함 |
사주 명식 POST /kit/api/v1/saju_chart
사주 명식을 계산해요. 음양력은 한국천문연구원 기준이고, 과거 표준시와 서머타임, 경도를 보정해요. 네 기둥, 십성, 12운성, 지장간, 납음, 신살, 합충, 오행, 강약, 용신, 격국, 대운, 세운과 주제별 해석 지표(성향·
요청 본문
| 이름 | 형식 | 필수 | 설명 |
|---|---|---|---|
birth | string | 필수 | 생년월일 YYYY-MM-DD |
time | string | 선택 | 출생 시각 HH:mm (24시간). 모르면 생략 |
calendar | "solar" | "lunar" | "lunar-leap" | 선택 | 양력(solar)·음력(lunar)·음력 윤달(lunar-leap). 기본 solar |
gender | "male" | "female" | 필수 | 성별. male(남)·female(여). 대운 방향이 달라져요 |
city | string | 선택 | 출생 도시 이름(예: 서울, 부산, New York). 기본 서울 |
name | string | 선택 | 표시용 이름(선택) |
asOf | string | 선택 | 기준 시각 ISO 8601(오프셋 포함). 기본 현재 시각 |
ratHourRule | "jasi-day-change" | "split-jasi" | "midnight" | 선택 | 자시 관법. 기본 jasi-day-change(자시 일변경) |
timeAdjustment | "mean-solar" | "apparent-solar" | "historical-civil" | 선택 | 시주를 세우는 시각. 기본 mean-solar(서머타임·옛 표준시를 걷고 경도 보정한 평균태양시), apparent-solar(균시차까지 보정한 진태양시), historical-civil(벽시계 그대로) |
format | "summary" | "full" | 선택 | summary(기본): 해석 지표+TOON 텍스트+경고(warnings), full: 원본 명식 JSON까지 |
예시 요청
curl -X POST https://sajuaedam.kro.kr/kit/api/v1/saju_chart \
-H "Authorization: Bearer YOUR_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"birth":"1992-10-24","time":"09:10","gender":"female","city":"서울","asOf":"2026-10-01T00:00:00+09:00"}'
const response = await fetch('https://sajuaedam.kro.kr/kit/api/v1/saju_chart', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_TEST_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
"birth": "1992-10-24",
"time": "09:10",
"gender": "female",
"city": "서울",
"asOf": "2026-10-01T00:00:00+09:00"
}),
})
console.log(await response.json(), response.headers.get('X-Trial-Remaining'))
import requests
response = requests.post(
"https://sajuaedam.kro.kr/kit/api/v1/saju_chart",
headers={"Authorization": "Bearer YOUR_TEST_KEY"},
json={"birth":"1992-10-24","time":"09:10","gender":"female","city":"서울","asOf":"2026-10-01T00:00:00+09:00"},
)
print(response.json(), response.headers["X-Trial-Remaining"])
예시 응답 보기
{
"analysis": {
"version": "saju-analysis-v1",
"gender": "female",
"timeKnown": true,
"dayMaster": {
"stem": "계",
"element": "수",
"polarity": "음",
"meaning": {
"id": "gye",
"korean": "계수",
"hanja": "癸水",
"image": "이슬비와 샘물",
"summary": "이슬비와 샘물처럼 조용히 스며들어 설득하는 편입니다. 섬세한 통찰이 강점이지만, 생각이 많아 불안해지기 쉬우니 걱정을 글로 적어 정리해 보는 것이 도움이 됩니다.",
"strengths": [
"섬세한 통찰",
"적응",
"조용한 설득"
],
"cautions": [
"불안",
"생각이 많음"
]
},
"tier": "calculated"
},
"dayPillar": {
"pillar": "계유",
"reading": "바위에서 스며 나오는 샘물을 닮아, 섬세한 통찰로 남의 사정을 깊이 헤아리는 편으로 보입니다. 혼자 생각을 정리할 시간이 필요하고, 말수가 적어도 차분한 설득으로 마음을 움직입니다. 고민이 꼬리를 물면 불안으로 번지기 쉬운데, 걱정거리를 적어 두고 하나씩 살피면 한결 가벼워집니다.",
"tier": "heuristic"
},
"pillars": [
{
"kind": "year",
"pillar": "임신",
"stemTenGod": "겁재",
"branchTenGod": "정인",
"twelveStage": "사"
},
{
"kind": "month",
"pillar": "경술",
"stemTenGod": "정인",
"branchTenGod": "정관",
"twelveStage": "쇠"
},
{
"kind": "day",
"pillar": "계유",
"stemTenGod": null,
"branchTenGod": "편인",
"twelveStage": "병"
},
{
"kind": "hour",
"pillar": "병진",
"stemTenGod": "정재",
"branchTenGod": "정관",
"twelveStage": "양"
}
],
"elements": [
{
"element": "목",
"elementId": "wood",
"percent": 0,
"level": "없음"
},
{
"element": "화",
"elementId": "fire",
"percent": 8.7,
"level": "부족"
},
{
"element": "토",
"elementId": "earth",
"percent": 39.13,
"level": "과다"
},
{
"element": "금",
"elementId": "metal",
"percent": 34.78,
"level": "발달"
},
{
"element": "수",
"elementId": "water",
"percent": 17.39,
"level": "적정"
}
],
"missingElements": [
"목"
],
"excessiveElements": [
"토"
],
"tenGodGroups": [
{
"group": "비겁",
"element": "수",
"percent": 17.4
},
{
"group": "식상",
"element": "목",
"percent": 0
},
{
"group": "재성",
"element": "화",
"percent": 8.69
},
{
"group": "관성",
"element": "토",
"percent": 39.13
… (길어서 앞부분만 보여 줘요. 전체는 아래에서 직접 호출해 보세요)직접 호출해 보기 (1번 차감)
궁합 POST /kit/api/v1/compatibility
두 사람의 사주 궁합 점수(100점, 항목별 근거·
요청 본문
| 이름 | 형식 | 필수 | 설명 |
|---|---|---|---|
a.birth | string | 필수 | 생년월일 YYYY-MM-DD |
a.time | string | 선택 | 출생 시각 HH:mm (24시간). 모르면 생략 |
a.calendar | "solar" | "lunar" | "lunar-leap" | 선택 | 양력(solar)·음력(lunar)·음력 윤달(lunar-leap). 기본 solar |
a.gender | "male" | "female" | 필수 | 성별. male(남)·female(여). 대운 방향이 달라져요 |
a.city | string | 선택 | 출생 도시 이름(예: 서울, 부산, New York). 기본 서울 |
a.name | string | 선택 | 표시용 이름(선택) |
b.birth | string | 필수 | 생년월일 YYYY-MM-DD |
b.time | string | 선택 | 출생 시각 HH:mm (24시간). 모르면 생략 |
b.calendar | "solar" | "lunar" | "lunar-leap" | 선택 | 양력(solar)·음력(lunar)·음력 윤달(lunar-leap). 기본 solar |
b.gender | "male" | "female" | 필수 | 성별. male(남)·female(여). 대운 방향이 달라져요 |
b.city | string | 선택 | 출생 도시 이름(예: 서울, 부산, New York). 기본 서울 |
b.name | string | 선택 | 표시용 이름(선택) |
asOf | string | 선택 | 기준 시각 ISO 8601(오프셋 포함). 기본 현재 시각 |
ratHourRule | "jasi-day-change" | "split-jasi" | "midnight" | 선택 | 자시 관법. 기본 jasi-day-change(자시 일변경) |
timeAdjustment | "mean-solar" | "apparent-solar" | "historical-civil" | 선택 | 시주를 세우는 시각. 기본 mean-solar(서머타임·옛 표준시를 걷고 경도 보정한 평균태양시), apparent-solar(균시차까지 보정한 진태양시), historical-civil(벽시계 그대로) |
예시 요청
curl -X POST https://sajuaedam.kro.kr/kit/api/v1/compatibility \
-H "Authorization: Bearer YOUR_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"a":{"birth":"1992-10-24","time":"09:10","gender":"female","city":"서울"},"b":{"birth":"1990-05-15","time":"14:30","gender":"male","city":"부산"},"asOf":"2026-10-01T00:00:00+09:00"}'
const response = await fetch('https://sajuaedam.kro.kr/kit/api/v1/compatibility', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_TEST_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
"a": {
"birth": "1992-10-24",
"time": "09:10",
"gender": "female",
"city": "서울"
},
"b": {
"birth": "1990-05-15",
"time": "14:30",
"gender": "male",
"city": "부산"
},
"asOf": "2026-10-01T00:00:00+09:00"
}),
})
console.log(await response.json(), response.headers.get('X-Trial-Remaining'))
import requests
response = requests.post(
"https://sajuaedam.kro.kr/kit/api/v1/compatibility",
headers={"Authorization": "Bearer YOUR_TEST_KEY"},
json={"a":{"birth":"1992-10-24","time":"09:10","gender":"female","city":"서울"},"b":{"birth":"1990-05-15","time":"14:30","gender":"male","city":"부산"},"asOf":"2026-10-01T00:00:00+09:00"},
)
print(response.json(), response.headers["X-Trial-Remaining"])
예시 응답 보기
{
"score": {
"score": 76,
"rawScore": 76,
"grade": "잘 맞는 편",
"items": [
{
"key": "day-stem",
"label": "일간 관계",
"score": 19,
"max": 25,
"reason": "수와 금은 서로 살려주는 사이입니다. 두 번째 사람 쪽이 기운을 내줍니다. 음양이 서로 달라 자리를 나누기 쉽습니다.",
"band": "높은 편"
},
{
"key": "spouse-palace",
"label": "배우자궁",
"score": 45,
"max": 45,
"reason": "두 사람의 일지가 酉辰 육합입니다. 배우자궁이 직접 맞물리는 자리라 생활 리듬이 잘 붙습니다. 궁합에서 가장 무겁게 보는 조합입니다.",
"band": "아주 높은 편"
},
{
"key": "outer-match",
"label": "겉궁합",
"score": 4,
"max": 10,
"reason": "월지에 戌巳 마찰입니다. 겉궁합은 두 사람이 바깥에서 어떻게 어울리는지를 보는 자리라, 속궁합보다 가볍게 봅니다.",
"band": "보통"
},
{
"key": "element-balance",
"label": "오행 보완",
"score": 8,
"max": 20,
"reason": "첫 번째 사람에게 필요한 화·토 기운을 두 번째 사람이 넉넉히 갖고 있습니다. 다만 둘을 합쳐도 목 기운은 얕게 남습니다. 상대에게만 기대기보다 각자의 취미와 생활 습관으로 보완해 보세요.",
"band": "낮은 편"
}
],
"band": "아주 높은 편",
"verdict": {
"headline": "뜻도 생활도 같은 쪽을 봅니다",
"reading": "첫 번째 사람과 두 번째 사람은 판단이 모이는 자리와 하루를 보내는 자리가 함께 맞물립니다. 말이 통해서 편한 것과 같이 지내서 편한 것이 겹치는 경우는 흔하지 않습니다. 다만 겹치는 만큼 서로의 문제를 자기 문제로 끌어안기 쉬워, 각자의 몫을 구분해 두는 편이 오래갑니다.",
"watchFor": "갈등이 났을 때 얼마 만에 다시 말을 거는지 서로 확인해 두세요. 잘 맞는 관계일수록 문제는 크기가 아니라 회복에 걸리는 시간에서 드러납니다."
},
"heuristic": true,
"rulesVersion": "compatibility-score-v5"
},
"zodiac": {
"a": "신",
"b": "오",
"relations": []
},
"dayPillars": {
"a": "계유",
"b": "경진",
"stemRelation": null,
"branchRelations": [
"육합"
]
},
"crossTenGods": {
"bForA": {
"tenGod": "정인",
"group": "인성",
"isSpouseStar": false
},
"aForB": {
"tenGod": "상관",
"group": "식상",
"isSpouseStar": false
}
},
"heuristic": true
}직접 호출해 보기 (1번 차감)
오늘의 운세 POST /kit/api/v1/daily_fortune
특정 날짜의 일진 운세 점수(0~100, 분위 띠)와 근거, 중점 분야, 행운 색과 수, 방위, 시간을 계산해요.
요청 본문
| 이름 | 형식 | 필수 | 설명 |
|---|---|---|---|
birth | string | 필수 | 생년월일 YYYY-MM-DD |
time | string | 선택 | 출생 시각 HH:mm (24시간). 모르면 생략 |
calendar | "solar" | "lunar" | "lunar-leap" | 선택 | 양력(solar)·음력(lunar)·음력 윤달(lunar-leap). 기본 solar |
gender | "male" | "female" | 필수 | 성별. male(남)·female(여). 대운 방향이 달라져요 |
city | string | 선택 | 출생 도시 이름(예: 서울, 부산, New York). 기본 서울 |
name | string | 선택 | 표시용 이름(선택) |
asOf | string | 선택 | 기준 시각 ISO 8601(오프셋 포함). 기본 현재 시각 |
ratHourRule | "jasi-day-change" | "split-jasi" | "midnight" | 선택 | 자시 관법. 기본 jasi-day-change(자시 일변경) |
timeAdjustment | "mean-solar" | "apparent-solar" | "historical-civil" | 선택 | 시주를 세우는 시각. 기본 mean-solar(서머타임·옛 표준시를 걷고 경도 보정한 평균태양시), apparent-solar(균시차까지 보정한 진태양시), historical-civil(벽시계 그대로) |
date | string | 선택 | YYYY-MM-DD. 기본 오늘 |
예시 요청
curl -X POST https://sajuaedam.kro.kr/kit/api/v1/daily_fortune \
-H "Authorization: Bearer YOUR_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"birth":"1992-10-24","time":"09:10","gender":"female","city":"서울","date":"2026-10-01"}'
const response = await fetch('https://sajuaedam.kro.kr/kit/api/v1/daily_fortune', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_TEST_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
"birth": "1992-10-24",
"time": "09:10",
"gender": "female",
"city": "서울",
"date": "2026-10-01"
}),
})
console.log(await response.json(), response.headers.get('X-Trial-Remaining'))
import requests
response = requests.post(
"https://sajuaedam.kro.kr/kit/api/v1/daily_fortune",
headers={"Authorization": "Bearer YOUR_TEST_KEY"},
json={"birth":"1992-10-24","time":"09:10","gender":"female","city":"서울","date":"2026-10-01"},
)
print(response.json(), response.headers["X-Trial-Remaining"])
예시 응답 보기
{
"rulesVersion": "daily-fortune-v1",
"date": "2026-10-01",
"dayPillar": "무신",
"stemTenGod": "정관",
"branchTenGod": "정인",
"twelveStage": "사",
"score": 38,
"band": "신중",
"focusDomains": [
"일·책임",
"평판",
"공부·문서",
"휴식·회복"
],
"message": "서두르기보다 한 번 더 확인하는 편이 좋은 날입니다. 일·책임과 공부·문서 쪽 일이 눈에 띄기 쉽습니다. 큰 지출이나 새 약속은 하루 이틀 두고 보세요.",
"factors": [
{
"code": "excessive-branch",
"points": -10,
"text": "일진 지지가 넘치는 기운(금)"
},
{
"code": "day-stem-combination",
"points": 4,
"text": "일진 천간이 일간과 합"
},
{
"code": "twelve-stage",
"points": -6,
"text": "일간의 기세 사"
}
],
"lucky": {
"element": "목",
"colors": [
"초록",
"청색"
],
"numbers": [
3,
8
],
"direction": "동쪽",
"hours": [
"03~05시",
"05~07시"
]
},
"heuristic": true
}직접 호출해 보기 (1번 차감)
만세력 달력 POST /kit/api/v1/calendar_month
한 달치 만세력 달력이에요. 날짜마다 양력, 음력(윤달), 일진, 절기, 손없는날과 하기 좋은 일·
요청 본문
| 이름 | 형식 | 필수 | 설명 |
|---|---|---|---|
year | integer | 필수 | 양력 연도 |
month | integer | 필수 | 양력 월 |
예시 요청
curl -X POST https://sajuaedam.kro.kr/kit/api/v1/calendar_month \
-H "Authorization: Bearer YOUR_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2026,"month":10}'
const response = await fetch('https://sajuaedam.kro.kr/kit/api/v1/calendar_month', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_TEST_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
"year": 2026,
"month": 10
}),
})
console.log(await response.json(), response.headers.get('X-Trial-Remaining'))
import requests
response = requests.post(
"https://sajuaedam.kro.kr/kit/api/v1/calendar_month",
headers={"Authorization": "Bearer YOUR_TEST_KEY"},
json={"year":2026,"month":10},
)
print(response.json(), response.headers["X-Trial-Remaining"])
예시 응답 보기
[
{
"solar": "2026-10-01",
"weekday": "목",
"lunar": {
"year": 2026,
"month": 8,
"day": 21,
"isLeapMonth": false
},
"dayPillar": "무신",
"dayPillarHanja": "戊申",
"yearOfZodiac": "말",
"solarTerm": null,
"sonEopneun": false,
"sonDirection": "동쪽",
"goodFor": [
{
"ko": "관계",
"plain": "성년식"
},
{
"ko": "목욕",
"plain": "목욕재계"
},
{
"ko": "출행",
"plain": "먼 길 떠나기"
},
{
"ko": "수조",
"plain": "집 짓기·수리"
},
{
"ko": "동토",
"plain": "땅 파기·공사 시작"
},
{
"ko": "이사",
"plain": "이사"
},
{
"ko": "입택",
"plain": "새집 입주"
},
{
"ko": "파토",
"plain": "묘 자리 땅 파기"
},
{
"ko": "안장",
"plain": "장례·안장"
}
],
"avoid": [
{
"ko": "가취",
"plain": "결혼"
},
{
"ko": "개시",
"plain": "개업·가게 열기"
},
{
"ko": "제사",
"plain": "제사 지내기"
},
{
"ko": "기복",
"plain": "복 빌기·기도"
},
{
"ko": "재초",
"plain": "재계·법회 올리기"
},
{
"ko": "납채",
"plain": "청혼 예물 보내기"
},
{
"ko": "수분",
"plain": "묘 손질·보수"
}
]
},
{
"solar": "2026-10-02",
"weekday": "금",
"lunar": {
"year": 2026,
"month": 8,
"day": 22,
"isLeapMonth": false
},
"dayPillar": "기유",
"dayPillarHanja": "己酉",
"yearOfZodiac": "말",
"solarTerm": null,
"sonEopneun": false,
"sonDirection": "동쪽",
"goodFor": [
{
"ko": "제사",
"plain": "제사 지내기"
},
{
"ko": "출행",
"plain": "먼 길 떠나기"
}
],
"avoid": [
{
"ko": "가취",
"plain": "결혼"
},
{
"ko": "입택",
"plain": "새집 입주"
},
{
… (길어서 앞부분만 보여 줘요. 전체는 아래에서 직접 호출해 보세요)직접 호출해 보기 (1번 차감)
택일(좋은 날) POST /kit/api/v1/good_days
한 달 안에서 이사, 결혼, 개업, 계약 같은 일을 하기 좋은 날을 찾아요. 황력 의기(宜忌) 통설 기준이고 손없는날도 함께 표시해요.
요청 본문
| 이름 | 형식 | 필수 | 설명 |
|---|---|---|---|
year | integer | 필수 | 양력 연도 |
month | integer | 필수 | 양력 월 |
activity | "이사" | "입주" | "결혼" | "약혼" | "개업" | "계약" | "거래" | "여행" | "공사" | "장례" | "제사" | "병원" | "입학" | "차" | 필수 | 찾을 일(이사·결혼·개업 등) |
예시 요청
curl -X POST https://sajuaedam.kro.kr/kit/api/v1/good_days \
-H "Authorization: Bearer YOUR_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2026,"month":11,"activity":"이사"}'
const response = await fetch('https://sajuaedam.kro.kr/kit/api/v1/good_days', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_TEST_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
"year": 2026,
"month": 11,
"activity": "이사"
}),
})
console.log(await response.json(), response.headers.get('X-Trial-Remaining'))
import requests
response = requests.post(
"https://sajuaedam.kro.kr/kit/api/v1/good_days",
headers={"Authorization": "Bearer YOUR_TEST_KEY"},
json={"year":2026,"month":11,"activity":"이사"},
)
print(response.json(), response.headers["X-Trial-Remaining"])
예시 응답 보기
[
{
"solar": "2026-11-01",
"weekday": "일",
"dayPillar": "기묘",
"sonEopneun": false,
"matched": [
{
"ko": "이사",
"plain": "이사"
},
{
"ko": "입택",
"plain": "새집 입주"
}
]
},
{
"solar": "2026-11-04",
"weekday": "수",
"dayPillar": "임오",
"sonEopneun": false,
"matched": [
{
"ko": "이사",
"plain": "이사"
},
{
"ko": "입택",
"plain": "새집 입주"
}
]
},
{
"solar": "2026-11-06",
"weekday": "금",
"dayPillar": "갑신",
"sonEopneun": false,
"matched": [
{
"ko": "이사",
"plain": "이사"
},
{
"ko": "입택",
"plain": "새집 입주"
}
]
},
{
"solar": "2026-11-10",
"weekday": "화",
"dayPillar": "무자",
"sonEopneun": false,
"matched": [
{
"ko": "입택",
"plain": "새집 입주"
},
{
"ko": "이사",
"plain": "이사"
}
]
},
{
"solar": "2026-11-12",
"weekday": "목",
"dayPillar": "경인",
"sonEopneun": false,
"matched": [
{
"ko": "입택",
"plain": "새집 입주"
},
{
"ko": "이사",
"plain": "이사"
}
]
},
{
"solar": "2026-11-13",
"weekday": "금",
"dayPillar": "신묘",
"sonEopneun": false,
"matched": [
{
"ko": "입택",
"plain": "새집 입주"
},
{
"ko": "이사",
"plain": "이사"
}
]
},
{
"solar": "2026-11-16",
"weekday": "월",
"dayPillar": "갑오",
"sonEopneun": false,
"matched": [
{
"ko": "이사",
"plain": "이사"
},
{
"ko": "입택",
"plain": "새집 입주"
}
]
},
{
"solar": "2026-11-22",
"weekday": "일",
"dayPillar": "경자",
"sonEopneun": false,
"matched": [
{
… (길어서 앞부분만 보여 줘요. 전체는 아래에서 직접 호출해 보세요)직접 호출해 보기 (1번 차감)
자미두수 명반 POST /kit/api/v1/ziwei_chart
자미두수 명반을 한국 음력 기준으로 계산해요. 출생 시각이 있어야 해요.
요청 본문
| 이름 | 형식 | 필수 | 설명 |
|---|---|---|---|
birth | string | 필수 | 생년월일 YYYY-MM-DD |
time | string | 필수 | HH:MM 24시간제. 자미두수는 출생 시각이 있어야 계산돼요 |
calendar | "solar" | "lunar" | "lunar-leap" | 선택 | 양력(solar)·음력(lunar)·음력 윤달(lunar-leap). 기본 solar |
gender | "male" | "female" | 필수 | 성별. male(남)·female(여). 대운 방향이 달라져요 |
city | string | 선택 | 출생 도시 이름(예: 서울, 부산, New York). 기본 서울 |
name | string | 선택 | 표시용 이름(선택) |
asOf | string | 선택 | 기준 시각 ISO 8601(오프셋 포함). 기본 현재 시각 |
ratHourRule | "jasi-day-change" | "split-jasi" | "midnight" | 선택 | 자시 관법. 기본 jasi-day-change(자시 일변경) |
timeAdjustment | "mean-solar" | "apparent-solar" | "historical-civil" | 선택 | 시주를 세우는 시각. 기본 mean-solar(서머타임·옛 표준시를 걷고 경도 보정한 평균태양시), apparent-solar(균시차까지 보정한 진태양시), historical-civil(벽시계 그대로) |
예시 요청
curl -X POST https://sajuaedam.kro.kr/kit/api/v1/ziwei_chart \
-H "Authorization: Bearer YOUR_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"birth":"1992-10-24","time":"09:10","gender":"female","city":"서울","asOf":"2026-10-01T00:00:00+09:00"}'
const response = await fetch('https://sajuaedam.kro.kr/kit/api/v1/ziwei_chart', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_TEST_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
"birth": "1992-10-24",
"time": "09:10",
"gender": "female",
"city": "서울",
"asOf": "2026-10-01T00:00:00+09:00"
}),
})
console.log(await response.json(), response.headers.get('X-Trial-Remaining'))
import requests
response = requests.post(
"https://sajuaedam.kro.kr/kit/api/v1/ziwei_chart",
headers={"Authorization": "Bearer YOUR_TEST_KEY"},
json={"birth":"1992-10-24","time":"09:10","gender":"female","city":"서울","asOf":"2026-10-01T00:00:00+09:00"},
)
print(response.json(), response.headers["X-Trial-Remaining"])
예시 응답 보기
{
"overview": {
"releaseStatus": "release-candidate",
"convention": "korean-ziwei-v1@0.1.0",
"lifePalace": {
"id": "life",
"name": "명궁",
"branch": "오",
"master": "파군"
},
"bodyPalace": {
"id": "money",
"name": "재백궁",
"branch": "인",
"master": "천량"
},
"bureau": {
"id": "water-2",
"value": 2
},
"palaces": [
{
"id": "money",
"name": "재백궁",
"branch": "인",
"majorStars": [
"천기",
"태음"
],
"auxiliaryStars": [
"우필",
"천마",
"영성"
]
},
{
"id": "children",
"name": "자녀궁",
"branch": "묘",
"majorStars": [
"자미",
"탐랑"
],
"auxiliaryStars": [
"천괴",
"지겁"
]
},
{
"id": "spouse",
"name": "부처궁",
"branch": "진",
"majorStars": [
"거문"
],
"auxiliaryStars": []
},
{
"id": "siblings",
"name": "형제궁",
"branch": "사",
"majorStars": [
"천상"
],
"auxiliaryStars": [
"천월"
]
},
{
"id": "life",
"name": "명궁",
"branch": "오",
"majorStars": [
"천량"
],
"auxiliaryStars": [
"문창",
"화성"
]
},
{
"id": "parents",
"name": "부모궁",
"branch": "미",
"majorStars": [
"염정",
"칠살"
],
"auxiliaryStars": [
"지공"
]
},
{
"id": "wellbeing",
"name": "복덕궁",
"branch": "신",
"majorStars": [],
"auxiliaryStars": [
"문곡"
]
},
{
"id": "property",
"name": "전택궁",
"branch": "유",
"majorStars": [],
"auxiliaryStars": []
},
{
"id": "career",
"name": "관록궁",
"branch": "술",
"majorStars": [
"천동"
],
"auxiliaryStars": [
"타라"
]
},
{
… (길어서 앞부분만 보여 줘요. 전체는 아래에서 직접 호출해 보세요)직접 호출해 보기 (1번 차감)
음력·양력 변환 POST /kit/api/v1/convert_date
양력과 한국 음력을 서로 바꿔요(1900~2100). solar와 lunar 중 하나만 넣어요.
요청 본문
| 이름 | 형식 | 필수 | 설명 |
|---|---|---|---|
solar | string | 선택 | 양력 YYYY-MM-DD |
lunar | string | 선택 | 음력 YYYY-MM-DD |
leap | boolean | 선택 | 음력 윤달 여부 |
예시 요청
curl -X POST https://sajuaedam.kro.kr/kit/api/v1/convert_date \
-H "Authorization: Bearer YOUR_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"lunar":"2023-02-10","leap":true}'
const response = await fetch('https://sajuaedam.kro.kr/kit/api/v1/convert_date', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_TEST_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
"lunar": "2023-02-10",
"leap": true
}),
})
console.log(await response.json(), response.headers.get('X-Trial-Remaining'))
import requests
response = requests.post(
"https://sajuaedam.kro.kr/kit/api/v1/convert_date",
headers={"Authorization": "Bearer YOUR_TEST_KEY"},
json={"lunar":"2023-02-10","leap":True},
)
print(response.json(), response.headers["X-Trial-Remaining"])
예시 응답 보기
{
"lunar": "2023-02-10",
"leap": true,
"solar": "2023-03-31"
}직접 호출해 보기 (1번 차감)
도시 찾기 POST /kit/api/v1/search_city
출생 도시를 찾아요. 국내 6.3만 곳과 해외 3.4만 곳이 들어 있고, 경위도와 IANA 시간대가 같이 나와요.
요청 본문
| 이름 | 형식 | 필수 | 설명 |
|---|---|---|---|
query | string | 필수 | 도시 이름(한글·영문) |
limit | integer | 선택 | 최대 결과 수. 기본 10 |
예시 요청
curl -X POST https://sajuaedam.kro.kr/kit/api/v1/search_city \
-H "Authorization: Bearer YOUR_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"부산","limit":3}'
const response = await fetch('https://sajuaedam.kro.kr/kit/api/v1/search_city', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_TEST_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
"query": "부산",
"limit": 3
}),
})
console.log(await response.json(), response.headers.get('X-Trial-Remaining'))
import requests
response = requests.post(
"https://sajuaedam.kro.kr/kit/api/v1/search_city",
headers={"Authorization": "Bearer YOUR_TEST_KEY"},
json={"query":"부산","limit":3},
)
print(response.json(), response.headers["X-Trial-Remaining"])
예시 응답 보기
[
{
"geonameId": 1838519,
"fullName": "대한민국, 부산광역시",
"name": "부산광역시",
"country": "대한민국",
"countryCode": "KR",
"admin1": "부산광역시",
"latitude": 35.13333,
"longitude": 129.05,
"timeZone": "Asia/Seoul",
"population": 3343903
},
{
"geonameId": 1838523,
"fullName": "대한민국, 경상남도, 부산",
"name": "부산",
"country": "대한민국",
"countryCode": "KR",
"admin1": "경상남도",
"latitude": 35.70128,
"longitude": 128.02524,
"timeZone": "Asia/Seoul",
"population": 0
},
{
"geonameId": 6890280,
"fullName": "대한민국, 경상북도, 부산",
"name": "부산",
"country": "대한민국",
"countryCode": "KR",
"admin1": "경상북도",
"latitude": 36.3809,
"longitude": 128.3681,
"timeZone": "Asia/Seoul",
"population": 0
}
]직접 호출해 보기 (1번 차감)
구매 후: 내 서버에서
구매한 파일에는 같은 요청·응답 형식의 서버가 들어 있어요. 아래 명령으로 켜면 인터넷이 끊겨도 키 없이 몇 번이든 부를 수 있어요.
node --experimental-strip-types server/http.ts
# → http://localhost:8787/api/tools
curl -X POST http://localhost:8787/api/saju_chart \
-H "Content-Type: application/json" \
-d '{"birth":"1992-10-24","time":"09:10","gender":"female","city":"서울"}'
체험 API의 https://sajuaedam.kro.kr/kit/api/v1/도구를 http://localhost:8787/api/도구로 바꾸고 인증 헤더만 빼면 돼요. Claude·Cursor에는 MCP 서버로도 붙일 수 있어요.