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.
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.
Saju APIs already exist. Three things make ours different.
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.
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.
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.
발급받은 키를 x-klm-key 헤더에 넣어 호출합니다. 그게 전부입니다.
# Health check — does not count against your quota curl -H "x-klm-key: klm_live_..." \ https://klifemap.ai/api/v1/ping
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" }
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).Four of them. Response fields may be added, but never removed or renamed — if we ever must, we ship a new /api/v2.
{
"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)
}
{
"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 */ ]
}
}
{
"personA": { "year": 1990, "month": 5, "day": 15, "hour": 10, "gender": "male" },
"personB": { "year": 1992, "month": 8, "day": 3, "hour": 14, "gender": "female" }
}
{
"ok": true,
"result": {
"totalScore": 66,
"axes": { /* Per-axis scores — day stem, day branch, useful god, clash/combination */ },
"notes": [ "일지끼리 육합을 이루어…" ]
}
}
{
"birth": { "year": 1990, "month": 5, "day": 15, "hour": 10, "gender": "male" },
"year": 2026, "month": 9,
"category": "결혼" // wedding | moving | opening | contract | surgery …
}
{
"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 */ ]
}
{
"date": "2026-08-15",
"birth": { "year": 1990, "month": 5, "day": 15, "hour": 10, "gender": "male" } // optional
}
{
"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 */ }
}
}
{
"ok": true,
"quota": { "monthly": 30000, "used": 4127, "ratePerMin": 120 },
"daily": [ { "day": "2026-08-01", "endpoint": "taekil", "calls": 312, "errors": 0 } ]
}
We distinguish failures by code. "It does not work and I cannot tell why" is where most support cost goes.
| HTTP | error | Meaning and action |
|---|---|---|
| 400 | invalid_input | fields lists exactly which values were wrong. |
| 401 | missing_key / invalid_key | The header is x-klm-key (not x-api-key). |
| 402 | quota_exceeded | Monthly quota exhausted. Upgrading the plan lifts it immediately. |
| 403 | client_suspended | The contract is not in an active state. |
| 429 | rate_limited | Per-minute limit exceeded. Retry after the Retry-After header. |
| 500 | engine_error | This one is on us. Tell us if a retry gives the same result. |
A monthly fee includes a call allowance; you pay per call only above it. Amounts shown exclude VAT.
Tell us which service you want it in and how. Include your expected call volume and we will match a plan to it.
We hand you a free key for 1,000 calls a month right away. Wire it into your product before you decide.
We issue tax invoices. You can check usage yourself any time at /usage.