사주·타로 API

공개 API · v1

사주 원국과 타로 해석을, 계산된 값으로 받으세요

생년월일시를 넣으면 네 기둥·오행·십신·대운이 JSON 으로 돌아옵니다. 타로는 78장과 스프레드 26종, 그리고 그 해석의 고전 근거까지 같은 계약으로 열려 있습니다. 회원가입도 키 발급도 없이 지금 바로 호출할 수 있습니다.

API 문서 보기 도입 문의

https://api.manse.app

같은 입력이면 같은 값

계산 경로에 AI 가 없습니다. 순수 함수라 재현되고, 응답의 meta 가 어떤 엔진 버전으로 계산했는지 매번 밝힙니다. 값이 달라졌다면 버전이 달라진 것입니다.

근거를 함께 돌려줍니다

해석만 주고 끝내지 않습니다. 어느 고전의 어느 대목에서 온 것인지, 원문 인용 게이트를 통과한 문장만 근거로 나갑니다. 대조하지 못한 문장은 출처만 남기고 인용을 비웁니다.

계약이 검사로 고정돼 있습니다

문서가 코드보다 정본이 되지 않도록, 공개 계약(OpenAPI 3.1)을 실제 라우트·요청 파서·응답 모양과 기계로 대조합니다. 어긋나면 배포가 아니라 검사가 먼저 실패합니다.

지금 열려 있는 엔드포인트 21개

메서드경로하는 일
GET/v1/health서버가 살아 있는지만 답합니다. 데이터베이스도 건드리지 않아 감시용으로 걸어 두기 좋습니다.
GET/v1/meta지금 돌고 있는 버전과 해석 데이터가 몇 번째 판인지 알려 줍니다. 캐시를 비울 시점을 이 값으로 잡습니다.
GET/v1/me이 키의 요금제와 남은 양을 알려 줍니다. 이 호출은 사용량으로 세지 않습니다.
GET/v1/me/errors최근에 실패한 호출 목록입니다. 경로와 상태, 오류 코드만 남고 보낸 내용은 저장하지 않습니다. 15일간 보관합니다.
POST/v1/saju/calculate생년월일시로 사주 여덟 글자를 계산합니다. 같은 값을 넣으면 언제 불러도 같은 답이 옵니다.
POST/v1/saju/evidence그 사주를 왜 그렇게 읽는지, 근거가 된 옛 문헌 대목과 함께 돌려줍니다.
GET/v1/saju/terms/{term}사주 용어 하나의 뜻과 출처입니다. 용어 이름을 그대로 URL 에 넣어 부릅니다.
GET/v1/saju/method저희가 사주를 읽는 순서 열 단계입니다. 단계마다 무엇을 묻는지, 어느 근거를 보는지, 어느 고전이 그렇게 하라고 했는지를 함께 냅니다. 사람마다 달라지지 않으니 한 번 받아 두고 쓰시면 됩니다.
POST/v1/calendar/convert음력과 양력만 서로 바꿉니다. 생일 입력 화면에서 사주를 계산하기 전에 양력 날짜를 보여 줄 때 씁니다.
POST/v1/fortune/today내 사주와 오늘 도는 간지의 관계를 봅니다. 오늘 일진 천간의 십신, 그것이 내 용신과 맺는 관계, 12운성, 뿌리 여부를 근거와 함께 냅니다. 날짜를 지정하면 그 날을 봅니다.
POST/v1/fortune/wealth내가 극하는 기운(재성)이 무슨 오행이고 원국에 몇 자리인지, 어느 대운에 그 기운이 도는지 냅니다. 재가 내 힘보다 많으면 옛 책이 재다신약이라 부른 짜임인지도 함께 판정합니다. 금액과 시점은 말하지 않습니다.
POST/v1/fortune/health연해자평 논질병의 몸 배속 표로 내 일간이 어느 장부에 대응하는지, 나를 누르는 기운이 실제로 많은지를 짚습니다. 조건이 맞지 않으면 비워 둡니다. 진단이 아니며 그 사실이 응답에 함께 옵니다.
POST/v1/gunghap두 사람의 생년월일로 궁합을 봅니다. 일간 사이의 관계, 띠 자리와 부부궁의 지지 관계, 오행 보완을 판정하고 각각의 근거를 함께 냅니다. 점수는 내지 않습니다.
POST/v1/tojeong생년월일과 보려는 해로 작괘해서 그 괘의 괘사·총운·열두 달 풀이를 냅니다. 괘가 어떻게 나왔는지 조견표 수와 근거 간지도 함께 주어 만세력으로 확인할 수 있습니다.
GET/v1/tarot/cards타로 78장 목록입니다. 이름과 번호만 들어 있고 해석은 카드별 경로에 있습니다.
GET/v1/tarot/cards/{slug}카드 한 장의 해석입니다. 바로 놓은 것과 뒤집힌 것을 함께 줍니다.
GET/v1/tarot/spreads스프레드 26종과 카드를 놓는 자리의 순서·뜻입니다. 애정운·투자운·꿈해몽 3장 배열도 들어 있습니다. 자리 순서는 바뀌지 않습니다.
POST/v1/tarot/reading뽑은 카드를 스프레드 자리에 놓고 자리마다 그 방향의 해석을 짝지어 줍니다. 문장을 새로 만들지 않습니다 — 조합의 구성(메이저 비중·수트 분포·역방향 수)은 세어진 값만 함께 옵니다.
GET/v1/tarot/evidence/{slug}/{orientation}그 카드와 방향의 해석이 어디서 왔는지 알려 줍니다. 인용 검사를 통과한 문헌만 나갑니다.
POST/v1/saju/sewoon해마다의 운을 봅니다. 그 해 간지·십신·12운성·십이신살·공망·삼재와, 그 해가 원국 어느 자리와 부딪히는지까지 옵니다. 어느 해부터 볼지는 부르는 쪽이 정합니다.
POST/v1/fortune/calendar한 달치 일진 달력과 그 달의 월운을 한 번에 냅니다. 하루씩은 오늘의 운세로도 되지만 달력 한 장을 그리려면 서른 번 불러야 합니다. 양력 한 달은 절기 때문에 월주가 둘 걸치므로 그 경계가 되는 날짜도 함께 알려 드립니다.

각 엔드포인트의 요청 필드·응답 모양·상태 코드는 API 문서에 있습니다.

60초 예제

키도 헤더도 필요 없습니다. 아래를 그대로 붙여 넣으면 됩니다.

curl -X POST https://api.manse.app/v1/saju/calculate \
  -H 'content-type: application/json' \
  -d '{"year": 1990, "month": 5, "day": 15, "hour": 14, "minute": 30, "gender": "M"}'

실제 응답에서 일주 한 칸과 관계 한 짝만 추린 모습입니다. 나머지 세 기둥도 같은 모양이고, 오행·용신·격국·신살·대운이 함께 옵니다.

{
  "ok": true,
  "data": {
    "pillars": {
      "day": {
        "stem": {
          "key": "gyeong",
          "hanja": "庚",
          "label": "경",
          "ordinal": 6,
          "element": {
            "key": "metal",
            "label": "금"
          },
          "polarity": {
            "key": "yang",
            "label": "양"
          }
        },
        "branch": {
          "key": "jin",
          "hanja": "辰",
          "label": "진",
          "ordinal": 4,
          "element": {
            "key": "earth",
            "label": "토"
          },
          "polarity": {
            "key": "yang",
            "label": "양"
          }
        },
        "ten_god": {
          "stem": {
            "key": "ilgan",
            "label": "일간"
          },
          "branch": {
            "key": "pyeonin",
            "label": "편인"
          }
        },
        "hidden_stems": [
          {
            "stem": {
              "key": "eul",
              "hanja": "乙",
              "label": "을",
              "ordinal": 1,
              "element": {
                "key": "wood",
                "label": "목"
              },
              "polarity": {
                "key": "yin",
                "label": "음"
              }
            },
            "role": {
              "key": "yeogi",
              "label": "여기"
            }
          },
          {
            "stem": {
              "key": "gye",
              "hanja": "癸",
              "label": "계",
              "ordinal": 9,
              "element": {
                "key": "water",
                "label": "수"
              },
              "polarity": {
                "key": "yin",
                "label": "음"
              }
            },
            "role": {
              "key": "junggi",
              "label": "중기"
            }
          },
          {
            "stem": {
              "key": "mu",
              "hanja": "戊",
              "label": "무",
              "ordinal": 4,
              "element": {
                "key": "earth",
                "label": "토"
              },
              "polarity": {
                "key": "yang",
                "label": "양"
              }
            },
            "role": {
              "key": "jeonggi",
              "label": "정기"
            }
          }
        ],
        "life_stage": {
          "key": "yang",
          "label": "양"
        },
        "napeum": {
          "key": "baekrapgeum",
          "label": "백랍금",
          "element": {
            "key": "metal",
            "label": "금"
          }
        },
        "is_void": false,
        "twelve_sinsal": {
          "key": "wolsal",
          "label": "월살"
        },
        "twelve_sinsal_by_day": {
          "key": "hwagaesal",
          "label": "화개살"
        },
        "palace": {
          "key": "bonin_baeuja",
          "label": "본인·배우자"
        },
        "root": null
      },
      "...": "..."
    },
    "relations": {
      "pairs": [
        {
          "between": [
            "year",
            "hour"
          ],
          "stem": null,
          "branch": [
            {
              "key": "yukhap",
              "label": "육합"
            }
          ],
          "resolution": null
        }
      ],
      "...": "..."
    },
    "...": "..."
  },
  "meta": {
    "...": "..."
  }
}

요금

무료

$0

  • 하루 20건 · 한 달 100건
  • 가입만 하면 키 발급 · 신용카드 없음
  • 엔드포인트 21개 전부 · 고전 근거 포함

무료로 시작

구독

$19 / 월

  • 하루 200건 · 한 달 2,000건
  • 쓰던 키 그대로, 한도만 올라갑니다
  • 결제·환불은 Gumroad 가 처리합니다

구독하기

기업

문의

  • 한도를 협의해 정합니다
  • 대량 호출 · 상업적 사용
  • 필요한 필드 · 형식 협의

기업 문의

지금 상태를 그대로 적습니다. v1 은 키가 필요합니다(/v1/meta 만 키 없이 열려 있습니다). 사용량은 저희가 직접 세고, 남은 양은 GET /v1/me 로 확인하실 수 있습니다 (이 호출은 사용량으로 세지 않습니다). 한도를 다 쓰면 그 기간에만 제한되고 넘겼다고 추가로 청구하지 않습니다. 기업 요금제는 미리 정해 둔 숫자가 없습니다 — 필요한 규모를 메일로 알려 주시면 한도를 정해 쓰시던 키에 그대로 적용합니다.

버전과 호환

공개 v1 은 깨지 않고 더하기만 합니다. 필드가 추가될 수는 있어도 기존 필드가 사라지거나 뜻이 바뀌지 않습니다. 지금 라이브가 밝히는 버전은 이렇습니다.

{
  "api_version": "v1",
  "engine": {
    "saju": {
      "version": "1.0.0",
      "contract": "6aae7228"
    },
    "tarot": {
      "version": "1.1.0",
      "contract": "bb408443"
    }
  },
  "data_version": {
    "bundled": "d9b91453",
    "tarot_kv": "24b4e6aa",
    "saju_kv": "bb37bd0f"
  }
}

data_version 이 바뀌면 해석 데이터가 갱신된 것이고, engine.*.contract 가 바뀌면 계산 계약이 움직인 것입니다. 두 값은 서로 다른 뜻이라 따로 밝힙니다. 언제나 /v1/meta 가 현재 값을 알려 줍니다.

API 문서 보기 도입 문의