For developers
Raw JSON, on demand
Every one of EsoTerrier's 22 esoteric systems can be unlocked as structured JSON for $0.99 a la carte, the same data layer the app's own charts and PDFs are built from. Fetch it programmatically with a personal access token instead of a browser session.
Authentication
Generate a personal access token from your account settings once you've created an account. Send it as a Bearer token on every request:
Authorization: Bearer <your-token>
Fetching a system's raw data
Every person in your registry exposes their unlocked calculations at:
GET /api/persons/{person}/calculations/{key}/raw
{key} is any active system's catalog key (see the
systems catalog
for the full list, e.g. bazi, humandesign, iching).
A successful response looks like:
{
"json": {
"input": {
"birth_date": "1989-01-19",
"birth_time": "19:17:00"
},
"pillars": {
"day": {
"stem": {
"name": "J\u01d0",
"index": 5,
"chinese": "\u5df1",
"element": "Earth",
"polarity": "Yin"
},
"label": "1989-01-19",
"branch": {
"name": "H\u00e0i",
"index": 11,
"animal": "Pig",
"chinese": "\u4ea5",
"element": "Water",
"polarity": "Yin",
"animal_traits": [
"Compassionate",
"Generous",
"Diligent",
"Trusting"
]
},
"ganzhi": "\u5df1\u4ea5",
"pillar": "day",
"hidden_stems": [
{
"role": "main",
"stem": {
"name": "R\u00e9n",
"index": 8,
"chinese": "\u58ec",
"element": "Water",
"polarity": "Yang"
}
},
{
"role": "mid",
"stem": {
"name": "Ji\u01ce",
"index": 0,
"chinese": "\u7532",
"element": "Wood",
"polarity": "Yang"
}
}
],
"ganzhi_romanized": "J\u01d0 H\u00e0i"
},
"hour": {
"stem": {
"name": "Ji\u01ce",
"index": 0,
"chinese": "\u7532",
"element": "Wood",
"polarity": "Yang"
},
"label": "19:17:00",
"branch": {
"name": "X\u016b",
"index": 10,
"animal": "Dog",
"chinese": "\u620c",
"element": "Earth",
"polarity": "Yang",
"animal_traits": [
"Loyal",
"Honest",
"Amiable",
"Diligent"
]
},
"ganzhi": "\u7532\u620c",
"pillar": "hour",
"hidden_stems": [
{
"role": "main",
"stem": {
"name": "W\u00f9",
"index": 4,
"chinese": "\u620a",
"element": "Earth",
"polarity": "Yang"
}
},
{
"role": "mid",
"stem": {
"name": "X\u012bn",
"index": 7,
"chinese": "\u8f9b",
"element": "Metal",
"polarity": "Yin"
}
},
{
"role": "residual",
"stem": {
"name": "D\u012bng",
"index": 3,
"chinese": "\u4e01",
"element": "Fire",
"polarity": "Yin"
}
}
],
"ganzhi_romanized": "Ji\u01ce X\u016b"
},
"year": {
"stem": {
"name": "W\u00f9",
"index": 4,
"chinese": "\u620a",
"element": "Earth",
"polarity": "Yang"
},
"label": 1988,
"branch": {
"name": "Ch\u00e9n",
"index": 4,
"animal": "Dragon",
"chinese": "\u8fb0",
"element": "Earth",
"polarity": "Yang",
"animal_traits": [
"Charismatic",
"Ambitious",
"Dominant",
"Confident"
]
},
"ganzhi": "\u620a\u8fb0",
"pillar": "year",
"hidden_stems": [
{
"role": "main",
"stem": {
"name": "W\u00f9",
"index": 4,
"chinese": "\u620a",
"element": "Earth",
"polarity": "Yang"
}
},
{
"role": "mid",
"stem": {
"name": "Y\u01d0",
"index": 1,
"chinese": "\u4e59",
"element": "Wood",
"polarity": "Yin"
}
},
{
"role": "residual",
"stem": {
"name": "Gu\u01d0",
"index": 9,
"chinese": "\u7678",
"element": "Water",
"polarity": "Yin"
}
}
],
"ganzhi_romanized": "W\u00f9 Ch\u00e9n"
},
"month": {
"stem": {
"name": "Y\u01d0",
"index": 1,
"chinese": "\u4e59",
"element": "Wood",
"polarity": "Yin"
},
"label": 12,
"branch": {
"name": "Ch\u01d2u",
"index": 1,
"animal": "Ox",
"chinese": "\u4e11",
"element": "Earth",
"polarity": "Yin",
"animal_traits": [
"Diligent",
"Dependable",
"Stubborn",
"Patient"
]
},
"ganzhi": "\u4e59\u4e11",
"pillar": "month",
"hidden_stems": [
{
"role": "main",
"stem": {
"name": "J\u01d0",
"index": 5,
"chinese": "\u5df1",
"element": "Earth",
"polarity": "Yin"
}
},
{
"role": "mid",
"stem": {
"name": "X\u012bn",
"index": 7,
"chinese": "\u8f9b",
"element": "Metal",
"polarity": "Yin"
}
},
{
"role": "residual",
"stem": {
"name": "Gu\u01d0",
"index": 9,
"chinese": "\u7678",
"element": "Water",
"polarity": "Yin"
}
}
],
"ganzhi_romanized": "Y\u01d0 Ch\u01d2u"
}
},
"ten_gods": {
"day_stem": {
"stem": {
"name": "J\u01d0",
"index": 5,
"chinese": "\u5df1",
"element": "Earth",
"polarity": "Yin"
},
"ten_god": {
"name": "Companion",
"nature": "Friends, independence, competition, stubbornness",
"pinyin": "B\u01d0 Ji\u0101n",
"chinese": "\u6bd4\u80a9",
"relationship": "self"
}
},
"hour_stem": {
"stem": {
"name": "Ji\u01ce",
"index": 0,
"chinese": "\u7532",
"element": "Wood",
"polarity": "Yang"
},
"ten_god": {
"name": "Direct Officer",
"nature": "Career, status, reputation, discipline, leadership",
"pinyin": "Zh\u00e8ng Gu\u0101n",
"chinese": "\u6b63\u5b98",
"relationship": "controlled_by"
}
},
"year_stem": {
"stem": {
"name": "W\u00f9",
"index": 4,
"chinese": "\u620a",
"element": "Earth",
"polarity": "Yang"
},
"ten_god": {
"name": "Rob Wealth",
"nature": "Rivals, financial risk, competition, collaboration",
"pinyin": "Ji\u00e9 C\u00e1i",
"chinese": "\u52ab\u8d22",
"relationship": "self"
}
},
"month_stem": {
"stem": {
"name": "Y\u01d0",
"index": 1,
"chinese": "\u4e59",
"element": "Wood",
"polarity": "Yin"
},
"ten_god": {
"name": "Seven Killings",
"nature": "Power, authority, stress, drive, warrior spirit",
"pinyin": "Q\u012b Sh\u0101",
"chinese": "\u4e03\u6740",
"relationship": "controlled_by"
}
},
"day_branch_main": {
"note": "Main hidden stem of H\u00e0i",
"stem": {
"name": "R\u00e9n",
"index": 8,
"chinese": "\u58ec",
"element": "Water",
"polarity": "Yang"
},
"ten_god": {
"name": "Direct Wealth",
"nature": "Earned wealth, material success, discipline, partner (for males)",
"pinyin": "Zh\u00e8ng C\u00e1i",
"chinese": "\u6b63\u8d22",
"relationship": "controls"
}
},
"hour_branch_main": {
"note": "Main hidden stem of X\u016b",
"stem": {
"name": "W\u00f9",
"index": 4,
"chinese": "\u620a",
"element": "Earth",
"polarity": "Yang"
},
"ten_god": {
"name": "Rob Wealth",
"nature": "Rivals, financial risk, competition, collaboration",
"pinyin": "Ji\u00e9 C\u00e1i",
"chinese": "\u52ab\u8d22",
"relationship": "self"
}
},
"year_branch_main": {
"note": "Main hidden stem of Ch\u00e9n",
"stem": {
"name": "W\u00f9",
"index": 4,
"chinese": "\u620a",
"element": "Earth",
"polarity": "Yang"
},
"ten_god": {
"name": "Rob Wealth",
"nature": "Rivals, financial risk, competition, collaboration",
"pinyin": "Ji\u00e9 C\u00e1i",
"chinese": "\u52ab\u8d22",
"relationship": "self"
}
},
"month_branch_main": {
"note": "Main hidden stem of Ch\u01d2u",
"stem": {
"name": "J\u01d0",
"index": 5,
"chinese": "\u5df1",
"element": "Earth",
"polarity": "Yin"
},
"ten_god": {
"name": "Companion",
"nature": "Friends, independence, competition, stubbornness",
"pinyin": "B\u01d0 Ji\u0101n",
"chinese": "\u6bd4\u80a9",
"relationship": "self"
}
}
},
"day_master": {
"stem": {
"name": "J\u01d0",
"index": 5,
"chinese": "\u5df1",
"element": "Earth",
"polarity": "Yin"
},
"image": "Fertile Soil",
"traits": [
"Nurturing",
"Practical",
"Accommodating",
"Loyal"
],
"element": "Earth",
"polarity": "Yin",
"challenge": "Worry and indecisiveness"
},
"element_profile": {
"Fire": {
"count": 0,
"element": "Fire",
"missing": true,
"present": false,
"dominant": false
},
"Wood": {
"count": 2,
"element": "Wood",
"missing": false,
"present": true,
"dominant": false
},
"Earth": {
"count": 5,
"element": "Earth",
"missing": false,
"present": true,
"dominant": true
},
"Metal": {
"count": 0,
"element": "Metal",
"missing": true,
"present": false,
"dominant": false
},
"Water": {
"count": 1,
"element": "Water",
"missing": false,
"present": true,
"dominant": false
}
},
"element_summary": {
"counts": {
"Fire": 0,
"Wood": 2,
"Earth": 5,
"Metal": 0,
"Water": 1
},
"missing": [
"Fire",
"Metal"
],
"dominant": [
"Earth"
]
}
}
}
If that layer isn't unlocked yet for that person, the endpoint responds
402 Payment Required with the a la carte price to unlock it.
Rate limits and access
A token carries the same access as your own account: it can only read data for people in your own registry, and only layers you've actually unlocked or that your plan includes. There are no separate developer scopes or quotas beyond the app's normal request limits.