Personality.fyi

Personality.fyi API

Free · No auth · No LLM

A free, no-authentication JSON API for the 16 MBTI types and the OEJTS personality test. All data is static and public-domain; no large-language-model calls happen anywhere in this API.

Base URL: https://personality.fyi/api/v1

License: Data is CC0 (public domain). Use however you want, attribution appreciated but not required.

Endpoints

GET/api/v1/types

List of all 16 MBTI types with name and one-line title.

curl https://personality.fyi/api/v1/types
{
  "types": [
    { "code": "INTJ", "name": "Architect",  "title": "The Architect" },
    { "code": "INTP", "name": "Logician",   "title": "The Thinker" },
    ...
  ],
  "count": 16
}
GET/api/v1/types/{CODE}

Full profile for one type. {CODE} is the 4-letter MBTI code in uppercase (e.g. INTJ).

curl https://personality.fyi/api/v1/types/INTJ
{
  "code": "INTJ",
  "name": "Architect",
  "title": "The Architect",
  "cognitive": "Strategic, systems-level thinking. Builds mental models and long-range plans.",
  "strengths": ["Independent", "decisive", "high standards", "visionary"],
  "shadow":    ["Can be dismissive of others' input", "struggles with emotional expression", ...],
  "drains":    ["Repetitive meetings", "micromanagement", ...],
  "url": "https://personality.fyi/type/intj"
}
GET/api/v1/test/items

The 32 OEJTS test items with axis labels and scoring spec.

curl https://personality.fyi/api/v1/test/items
{
  "items": [
    {
      "id": 1,
      "statement": "I make lists rather than relying on memory.",
      "axis": "J_P",
      "agreePole": "J",
      "disagreePole": "P"
    },
    ...
  ],
  "count": 32,
  "likert": { "1": "Strongly disagree (+2 toward disagreePole)", ... },
  "axes": ["I_E", "N_S", "T_F", "J_P"],
  "license": "OEJTS items are public domain..."
}
POST/api/v1/test/score

Given an array of 32 Likert answers (1-5), returns the computed MBTI type, per-axis confidence percentage, and raw scores.

curl -X POST https://personality.fyi/api/v1/test/score \
  -H "Content-Type: application/json" \
  -d '{"answers": [5,1,2,4,5,3,1,5,2,4,3,5,1,5,2,4,3,5,1,2,5,4,3,1,5,2,4,3,1,5,2,4]}'
{
  "type": "INTJ",
  "confidence": { "I": 74, "N": 88, "T": 61, "J": 92 },
  "scores":     { "I": 7, "E": 2, "N": 9, "S": 1, "T": 5, "F": 3, "J": 8, "P": 0 }
}
GET/api/v1/badge/{CODE}

Returns shields.io endpoint-badge JSON for any of the 16 types. Pair with shields.io to render an MBTI badge anywhere you can embed an image.

https://img.shields.io/endpoint?url=https://personality.fyi/api/v1/badge/intj

Or use the pre-rendered SVG directly: https://personality.fyi/badge/intj.svg (no shields.io dependency).

Rate limits & abuse

No hard rate limits today. If your project hammers the endpoint past ~1k req/min sustained we'll add IP-based limiting. Please be reasonable — the data is small and CDN-cached; pulling the JSON once and keeping a local copy works fine for most use cases.

What's not exposed

The compatibility engine, career advisor, and AI Q&A surfaces are not part of this API. Those require LLM calls and stay in the consumer product at personality.fyi. If you want personality-aware AI features in your own app, use your own LLM provider.

Methodology

The test items come from the Open Extended Jungian Type Scales (OEJTS) 1.2, a public-domain MBTI alternative published by Eric Jorgenson. OEJTS axes correlate r=0.62–0.81 with the official Myers-Briggs Type Indicator. Full methodology at personality.fyi/methodology.

Bug reports & feature requests

Email hello@personality.fyi or open an issue on the GitHub repo (coming soon).