FOR BUSINESS · Judgement Engine API

We deliver the judgment, not the screen

Matchmaking, wedding, moving, real-estate and app services can run Saju, compatibility, date-selection and daily readings inside their own product. Our classical Myeongni judgment engine, exposed as a REST API. One JSON response.

FREE TRIAL

Get a trial key

1,000 calls a month, free. No approval step — the key appears immediately, so you can wire it in before you decide. When the allowance runs out it simply stops; nothing is charged on top.

Why this API

Saju APIs already exist. Three things make ours different.

Same input, always the same result

Rules decide; AI only explains. Ask a generative model and the same person gets a different answer every time — you cannot ship that inside your product. Our responses reproduce, so when a customer disputes a reading you can pull that exact value again.

Ziping Zhenquan standard · no folk-omen padding

We exclude weakly-sourced elements such as wonjin-sal, gwimun-gwan-sal and samjae from judgment. We do not build fear-to-sell mechanics, so adopting us will not erode your service's credibility.

We store no personal data

Birth date and time are used for the calculation and discarded. All we keep is a call count. You take on no data-processing delegation burden.

Getting started

발급받은 키를 x-klm-key 헤더에 넣어 호출합니다. 그게 전부입니다.

REQUEST
# Health check — does not count against your quota
curl -H "x-klm-key: klm_live_..." \
     https://klifemap.ai/api/v1/ping
RESPONSE

Judgement values (structure, useful god, five elements and so on) come back as Korean terms. Ask us if you need them in English.

{ "ok": true, "version": "v1", "engine": "taekil-2.0.0", "at": "2026-08-01T03:16:29.867Z" }
Common rules. All requests are HTTPS with Content-Type: application/json. Use calendar for solar / lunar / leap-lunar, and send timeUnknown: true when the birth time is unknown (we compute at the hour pillar is dropped and only year, month and day are used). longitude is used for apparent-solar-time correction (default 127.0, the Korean standard).

Endpoints

Four of them. Response fields may be added, but never removed or renamed — if we ever must, we ship a new /api/v2.

POST/api/v1/saju Chart, format (gyeokguk), useful god (yongsin) and luck cycles in one call. The base judgment for one person.
REQUEST
{
  "year": 1990, "month": 5, "day": 15,
  "hour": 10, "minute": 0,
  "gender": "male",           // male | female (required)
  "calendar": "solar",        // solar | lunar | lunar_leap
  "timeUnknown": false,       // birth time unknown
  "longitude": 127.0,        // true solar time correction
  "daeunCount": 9             // how many luck cycles (1-12)
}
RESPONSE (short)
{
  "ok": true, "version": "v1", "engine": "taekil-2.0.0",
  "result": {
    "items": { /* The four pillars — stem, branch, element, yin/yang */ },
    "gyeok": {
      "name": "칠살격", "sipsung": "편관",
      "sunyong": false,            // true = favourable structure (4 kinds) · false = adverse structure (4 kinds)
      "fromMonthBranch": { … }, "exposed": false
    },
    "yongsin": {
      "element": "수",           // the useful god
      "helper": "금",            // the helpful god
      "avoid": "토",             // the taboo god
      "eokbu": "수", "johu": { … }, "rule": "…"
    },
    "strength": { "level": "신약(身弱)", "isStrong": false, "relation": { … } },
    "daeun": { "forward": true, "startAge": 7, "list": [ … ] },
    "relations": { /* Clashes and combinations within the natal chart */ },
    "pagyeok": { /* Whether the structure is broken */ },
    "sinsal": [ /* The 12 Sinsal — four of them, keyed to the day branch */ ]
  }
}
Field names are fixed. We do not export our engine's internal names; the outward names are set separately. Changing the engine does not change these names — if they ever must change, we publish a new /api/v2. Favourable-use and adverse-use read in opposite directions: favourable-use structures (Direct Officer, Direct Wealth, Indirect Wealth, Direct Resource, Indirect Resource, Eating God) are better the more clearly the structure stands, while adverse-use ones (Indirect Officer, Hurting Officer, Friend, Rob Wealth) have to be checked for whether the supporting character is present with them.
POST/api/v1/gunghap Compatibility for two people. Returns the score together with the reasons behind it.
REQUEST
{
  "personA": { "year": 1990, "month": 5, "day": 15, "hour": 10, "gender": "male" },
  "personB": { "year": 1992, "month": 8, "day": 3,  "hour": 14, "gender": "female" }
}
RESPONSE (short)
{
  "ok": true,
  "result": {
    "totalScore": 66,
    "axes":  { /* Per-axis scores — day stem, day branch, useful god, clash/combination */ },
    "notes": [ "일지끼리 육합을 이루어…" ]
  }
}
POST/api/v1/taekil Scores a whole month in one call and returns the top 5 days. Wedding, moving and store-opening services use this most.
REQUEST
{
  "birth": { "year": 1990, "month": 5, "day": 15, "hour": 10, "gender": "male" },
  "year": 2026, "month": 9,
  "category": "결혼"   // wedding | moving | opening | contract | surgery …
}
RESPONSE (short)
{
  "ok": true,
  "best": [
    { "date": "2026-09-08", "score": 100, "tier": "대길", "reasons": [ "일진이 일지와 육합을…" ] },
    { "date": "2026-09-20", "score": 80,  "tier": "길",   "reasons": [ … ] }
  ],
  "results": [ /* Score for every day in that month */ ]
}
POST/api/v1/ilzin The day's pillars. Add a birth date and you also get what that day means for that specific person.
REQUEST
{
  "date": "2026-08-15",
  "birth": { "year": 1990, "month": 5, "day": 15, "hour": 10, "gender": "male" }  // optional
}
RESPONSE (short)
{
  "ok": true,
  "result": {
    "date": "2026-08-15",
    "dayGan": { "ko": "신", "hanja": "辛", "oheng": "금" },
    "dayJi":  { "ko": "유", "hanja": "酉", "oheng": "금" },
    "forPerson": { /* Today's effect against the useful god — only when birth is supplied */ }
  }
}
GET/api/v1/usage Calls used this month and remaining quota. You can check the same numbers as the invoice, any time.
RESPONSE
{
  "ok": true,
  "quota": { "monthly": 30000, "used": 4127, "ratePerMin": 120 },
  "daily": [ { "day": "2026-08-01", "endpoint": "taekil", "calls": 312, "errors": 0 } ]
}

Error responses

We distinguish failures by code. "It does not work and I cannot tell why" is where most support cost goes.

HTTPerrorMeaning and action
400invalid_inputfields lists exactly which values were wrong.
401missing_key / invalid_keyThe header is x-klm-key (not x-api-key).
402quota_exceededMonthly quota exhausted. Upgrading the plan lifts it immediately.
403client_suspendedThe contract is not in an active state.
429rate_limitedPer-minute limit exceeded. Retry after the Retry-After header.
500engine_errorThis one is on us. Tell us if a retry gives the same result.

Pricing

A monthly fee includes a call allowance; you pay per call only above it. Amounts shown exclude VAT.

One month of date-selection counts as one call. Thirty days of scoring still bills as a single call — you have to be able to budget. Dedicated instances, SLAs, expert-level judgment access and on-premise installs are negotiated under Enterprise.

How to adopt

1 · Enquiry

Tell us which service you want it in and how. Include your expected call volume and we will match a plan to it.

2 · Trial key

We hand you a free key for 1,000 calls a month right away. Wire it into your product before you decide.

3 · Contract and operation

We issue tax invoices. You can check usage yourself any time at /usage.