Korean Age Calculator API
by KunStudio · free to evaluate · no API key on origin

Korean Age Calculator API

Korea uses three different age systems, and they disagree: 만 나이 (international/legal age, the standard since June 2023), 세는 나이 (traditional “counting” age), and 연 나이 (year age). A birthday near New Year or computed in the wrong timezone gives the wrong number. This API supplies the one fact your arithmetic actually depends on — today's date in Korea (KST) — so all three ages come out right.

There is no single “age” endpoint on purpose — the three Korean age formulas are simple arithmetic, but they hinge on which day it is in Korea, and a server in another timezone can be a day off near midnight. So the pattern is: fetch /v1/today for the current KST date, then compute each age locally from the birth date. 만 나이 (international) = years since birth, minus one if this year's birthday hasn't happened yet. 세는 나이 (traditional) = current year − birth year + 1 (you are 1 at birth and gain a year every January 1). 연 나이 (year age) = current year − birth year. Keeping the formulas in your code lets you pick which system to display while the API guarantees the KST reference date.

Endpoints

GET /v1/today Today's Korean date (KST) — the reference date you compute every age against, correct in Korea time regardless of where your server runs.
GET /v1/lunar/lunar-to-solar?date=2026-01-01&leap=false Optional: if the birthday is celebrated on the lunar calendar, resolve this year's solar birthday first (see the Korean Lunar Birthday API), then compute 만 나이 against it.

Example request & response

# Get today in Korea (KST), then compute the three ages in your own code.
curl "https://korea-calendar-api.kunstudio.workers.dev/v1/today"
{
  "date_kst": "2026-06-15",
  "is_holiday": false,
  "holiday": null
}

// Then in your app (JS), for a birth date of 1998-08-20:
// const today = "2026-06-15";          // from /v1/today (date_kst)
// const [ty, tm, td] = today.split("-").map(Number);
// const [by, bm, bd] = "1998-08-20".split("-").map(Number);
//
// // 만 나이 (international / legal — the standard since June 2023)
// let manAge = ty - by;
// if (tm < bm || (tm === bm && td < bd)) manAge -= 1;   // birthday not reached yet
//
// const semeAge = ty - by + 1;   // 세는 나이 (traditional counting age)
// const yeonAge = ty - by;       // 연 나이 (year age)
//
// manAge  -> 27   // hasn't turned 28 yet in 2026
// semeAge -> 29
// yeonAge -> 28

No API key is needed on the origin to try this — it is rate-limited for fair evaluation. See the OpenAPI spec for the full schema.

Good to know

Related

Building a Korean fortune (사주/saju) app? Pair this with the KunStudio Saju API for a full four-pillars reading over REST.