AI-powered personality assessment, job description parsing, and name generation. Metered billing, plug and play.
Include your API key in the Authorization header:
Authorization: Bearer pk_live_xxxxxxxxxxxxxxxxxxxx
Get your key at /pricing/
| Tier | Limit |
|---|---|
| Free | 100 requests/minute |
| Paid | 1,000 requests/minute |
Generate an MBTI 16-type personality interpretation from user answers.
Request Body{
"answers": [3, 1, 4, 2, ...],
"lang": "en"
}
Response
{
"type": "INTJ",
"interpretation": "The Architect — strategic, independent...",
"dimensions": {
"EI": { "score": 72, "label": "Introversion" },
"SN": { "score": 85, "label": "Intuition" },
"TF": { "score": 68, "label": "Thinking" },
"JP": { "score": 79, "label": "Judging" }
}
}
Generate a Big Five (OCEAN) personality analysis from user answers.
Request Body{
"answers": [5, 2, 4, 3, ...],
"lang": "en"
}
Response
{
"scores": {
"openness": 82,
"conscientiousness": 74,
"extraversion": 45,
"agreeableness": 68,
"neuroticism": 31
},
"interpretation": "You score high on Openness, suggesting..."
}
Parse a job description to extract skills, requirements, and seniority level.
Request Body{
"description": "We are looking for a Senior Full-Stack Engineer..."
}
Response
{
"skills": ["React", "Node.js", "PostgreSQL", "AWS"],
"requirements": [
"5+ years of full-stack experience",
"Strong system design skills",
"Experience with CI/CD pipelines"
],
"level": "senior"
}
Generate culturally-aware names based on culture, gender, and style preferences.
Request Body{
"culture": "chinese",
"gender": "female",
"style": "modern"
}
Response
{
"names": [
{ "name": "林悦然", "pinyin": "Lin Yueran", "meaning": "Joyful and natural" },
{ "name": "苏晴微", "pinyin": "Su Qingwei", "meaning": "Clear skies, gentle" },
{ "name": "陈思宁", "pinyin": "Chen Sining", "meaning": "Thoughtful serenity" }
]
}
curl -X POST https://www.panor.tech/api/v1/mbti/interpret \
-H "Content-Type: application/json" \
-H "Authorization: Bearer pk_live_YOUR_KEY" \
-d '{
"answers": [3, 1, 4, 2, 5, 2, 3, 4, 1, 5],
"lang": "en"
}'
import requests
resp = requests.post(
"https://www.panor.tech/api/v1/mbti/interpret",
headers={"Authorization": "Bearer pk_live_YOUR_KEY"},
json={
"answers": [3, 1, 4, 2, 5, 2, 3, 4, 1, 5],
"lang": "en"
}
)
result = resp.json()
print(result["type"]) # "INTJ"
print(result["interpretation"])
const res = await fetch("https://www.panor.tech/api/v1/mbti/interpret", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer pk_live_YOUR_KEY"
},
body: JSON.stringify({
answers: [3, 1, 4, 2, 5, 2, 3, 4, 1, 5],
lang: "en"
})
});
const { type, interpretation, dimensions } = await res.json();
console.log(type); // "INTJ"
console.log(interpretation);
curl -X POST https://www.panor.tech/api/v1/job/parse-jd \
-H "Content-Type: application/json" \
-H "Authorization: Bearer pk_live_YOUR_KEY" \
-d '{
"description": "Senior Full-Stack Engineer at TechCo..."
}'
import requests
resp = requests.post(
"https://www.panor.tech/api/v1/job/parse-jd",
headers={"Authorization": "Bearer pk_live_YOUR_KEY"},
json={"description": "Senior Full-Stack Engineer at TechCo..."}
)
data = resp.json()
print(data["skills"]) # ["React", "Node.js", ...]
print(data["level"]) # "senior"
const res = await fetch("https://www.panor.tech/api/v1/job/parse-jd", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer pk_live_YOUR_KEY"
},
body: JSON.stringify({
description: "Senior Full-Stack Engineer at TechCo..."
})
});
const { skills, requirements, level } = await res.json();
console.log(skills); // ["React", "Node.js", ...]
Pay-per-call, no monthly fees. Billed automatically via Stripe.
| Endpoint | Price / Call | Description |
|---|---|---|
/v1/mbti/interpret |
$0.05 | MBTI 16-type interpretation |
/v1/bigfive/interpret |
$0.05 | Big Five OCEAN analysis |
/v1/job/parse-jd |
$0.02 | Job description parsing |
/v1/name/generate |
$0.01 | Name generation |
| Status | Meaning |
|---|---|
200 | Success |
400 | Bad request — invalid or missing parameters |
401 | Unauthorized — missing or invalid API key |
402 | Payment required — insufficient credits |
429 | Rate limit exceeded |
500 | Internal server error |
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Please wait 30 seconds.",
"retry_after": 30
}
}