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.