Sentino Personality API v5: The Future of Psychological Intelligence

Unlock deep psychological insights from any text. The next-generation Sentino Personality API v5 is an AI-driven engine that converts raw text, transcripts, or survey responses into comprehensive, scientifically-backed personality profiles.
Key Features and Benefits
- Validated Frameworks: Built on state-of-the-art NLP, our API leverages established models like the IPIP item pool to provide accurate scores for the Big Five, NEO, RIASEC, ORVIS, MBTI, DISC, and more.
- Actionable Insights: Get more than just a number. Our output includes quantiles, confidence metrics, and rich interpretive insights to help you understand the “why” behind the data.
- Unmatched Performance: This new version is engineered for superior scalability, accuracy, and flexibility.
- Seamless Integration: Whether you’re building HR systems, coaching tools, ed-tech, or relational platforms, Sentino makes psychological inference as simple as a single API call.
Make psychological intelligence accessible. Integrate Sentino today.
Page Navigation Menu
- General Information
– Intro
– Scientific Foundation - API Endpoints
– Authentication
– Viewing Available Invetories
– Creating a Questionnaire
– Creating a Person
– Retrieving Data by a Person ID
– Adding Data
– Scoring Person
– Deleting a Person
– Scoring Items
– Error Codes - Use Cases
– Big 5 Traits from a Text
– NEO Traits from a Questionnaire
– Questionnaire for Big 5 and Neo
– Managing Profiles - Annex
– Supported Item Types
– Supproted Inventories
– API Scoring Parameters
General Information
Intro
The Sentino Personality API turns almost any data – self-descriptions, social media posts, CVs, chat logs, or interview transcripts – into meaningful psychological insights. If you have text data and want to analyze it from a psychological perspective, Sentino can help. Powered by advanced NLP models (GPT), the API connects text directly to over 40 validated psychological inventories, covering a wide range of traits and behaviors.
With its universal applicability, the API is designed to integrate seamlessly into diverse fields including HR, education, coaching, mental health, marketing, relationship platforms and more. Whether you are exploring personality at scale or seeking deeper insights into individual character, Sentino adapts to your use case, ensuring results that are both scientifically robust and practically actionable.
The Sentino Personality API is fully multilingual, designed to process and analyze text in any language. This makes it universally applicable across regions, cultures, and industries without language barriers.
Scientific Foundation
The API is grounded in the International Personality Item Pool (IPIP), a public-domain resource with 3,000+ items and 250+ scales maintained by the Oregon Research Institute. By building on this open-source foundation, Sentino ensures transparency, scientific validity, and continuous improvement.
The sections ahead explain the most common API endpoints with parameter details and code examples. You can start with Authentication or skip ahead to Use Cases to see the API in action.
API Endpoints
Authentication
The Sentino API uses tokens for access. If you don’t have one yet, request it by emailing info@sentino.org or using the Contact page.
All requests to the Sentino API must include your access token in the request header, formatted as follows:
Authorization: Token sentino_api_token
.
To authorize, please use this code:
Input JSON:
# With shell, you can just pass the correct header with each request
curl "api_endpoint_here"
-H "Authorization: Token sentino_api_token"
ⓘ Please note that you should replace “sentino_api_token” with your personal API key!
Viewing Available Inventories
The Sentino API provides access to a broad spectrum of psychological inventories, ranging from well-established frameworks such as the Big Five, NEO, HEXACO, and DISC to more specialized instruments like Values in Action, ORVIS, and RIASEC.
The /inventories
endpoint returns a structured list of all available personality assessments, including their unique identifiers, full titles, and scientific references.
HTTP Request GET https://api.sentino.org/api/inventories
Input command:
curl -X 'GET' \
'https://api.sentino.org/api/inventories' \
-H 'accept: application/json' \
-H 'Authorization: Token sentino_api_token'
Output JSON structure:
{
"inventories": [
{
"id": "big5",
"title": "Big-Five personality traits",
"reference": "Goldberg (1992). Big-Five Factor Markers"
},
...
{
"id": "mbti-type",
"title": "MBTI Type",
"reference": "Isabel Briggs Myers, Peter B. Myers (1995). Gifts Differing: Understanding Personality Type"
}
]
}
A detailed list of all supported inventories is provided in the Inventories section of the Annex.
Creating a Questionnaire
The /questionnaire/create
endpoint allows you to generate a new questionnaire (inventory) by specifying which psychological models to include and controlling the number of items per trait or scale. Consequently, it produces a tailored list of items (questions) from the selected inventories, which are ready to be presented to users during surveys or assessments.
Parameter | Description |
---|---|
inventories (array of strings) | one or more inventories to include (e.g., ["big5" , "disc" , "neo" ]) |
n_per_index (integer) | maximum number of items per trait/scale |
The response delivers a list of questions drawn from the selected inventories, forming the questionnaire that respondents can immediately score.
HTTP Request POST https://api.sentino.org/api/questionnaire/create
Input command:
curl -X 'POST' \
'https://api.sentino.org/api/questionnaire/create' \
-H 'accept: application/json' \
-H 'Authorization: Token sentino_api_token' \
-H 'Content-Type: application/json' \
-d '{
"inventories": ["big5", "mbti"],
"n_per_index": 1
}'
Output JSON structure:
{
"items": [
"I am indifferent to the feelings of others.",
"I am easily distracted.",
...
"I try something new when I fail."
]
}
Creating a Person
If you want to create a persistent profile for someone to track their personality over time, this section will guide you through the process. By creating a person in the Sentino API, you can store and score a variety of inputs (e.g., questionnaire responses, self-descriptions, interviews, LinkedIn profiles, and other text-based data) against selected psychological inventories.
Once you create a person profile, you can additionally keep enriching it with new data (such as survey responses, self-descriptions, or any other personality-related information) whenever needed. This allows you to update the profile over time and see how the individual’s traits and tendencies evolve. Following this section will show you how to create a person, add items, and score them repeatedly to build a complete, updatable personality profile.
The Sentino API provides flexible options for creating a persistent person profile. You can either start with an empty profile, which generates a unique person_id
and allows you to add items later, or submit existing data at the time of creation by including psychological items* in your request.
* An item is a concise, personality-related statement reflecting a person’s traits, behaviors, or tendencies (i.e. a piece of information about a person). Each item must be written in the first person, typically beginning with “I” or “My”. Moreover, items should be meaningful, context-aware, and suitable for personality assessment. In practice, they often reflect a single trait, behavior, or tendency and can be labeled with a descriptive adjective or role. Please see the Supported Item Types in the Annex below.
The endpoint POST /person
enables capturing both structured and unstructured personality data from the outset, facilitating longitudinal tracking and comprehensive profiling. In the example below, the request creates a new profile and then simultaneously adds several test responses (items) to it. The API returns the status of the operation and the unique identifier of the new profile.
HTTP Request POST https://api.sentino.org/api/person
Input command:
curl -X 'POST' \
'https://api.sentino.org/api/person/' \
-H 'accept: application/json' \
-H 'Authorization: Token sentino_api_token' \
-H 'Content-Type: application/json' \
-d '{
"items": [
{
"text": "I am easily distracted.",
"response": "disagree"
},
{
"text": "I am not easily annoyed.",
"response": "agree"
},
{
"text": "I keep my emotions under control.",
"response": "agree"
}
]
}'
Output JSON structure:
{
"status": "added",
"id": "87013165-ade2-4a48-bbc7-cf3acc68906b"
}
Retrieving Data by a Person ID
The endpoint GET /person/{id}
allows you to retrieve the data of an existing person profile in the Sentino API using the person’s unique ID (person_id
). First, provide the unique ID of the person profile, which is generated when the profile is created. Then, the endpoint returns all items that you’ve previously added to the profile, including questionnaire responses, self-descriptions, interviews, or other text-based inputs.
HTTP Request GET https://api.sentino.org/api/person/{id}
Input command:
curl -X 'GET' \
'https://api.sentino.org/api/person/87013165-ade2-4a48-bbc7-cf3acc68906b' \
-H 'accept: application/json' \
-H 'Authorization: Token sentino_api_token'
Output JSON structure:
{
"items": [
{
"text": "I am easily distracted.",
"context": null,
"response": "disagree",
"type": "response"
},
{
"text": "I am not easily annoyed.",
"context": null,
"response": "agree",
"type": "response"
},
...
],
"id": "87013165-ade2-4a48-bbc7-cf3acc68906b",
"profile": {}
}
The profile
field contains a structured set of attributes representing the person’s demographic and psychological information. This profile is continuously updated and enriched as new items are added and scored. It provides a consolidated view of the individual’s traits, behaviors, and tendencies based on all submitted data, allowing for longitudinal tracking and comprehensive personality analysis.
Adding Data
After creating a person profile, you can continue adding new personality-related data at any time.
This allows you to enrich the profile with additional items such as questionnaire responses, self-descriptions, or other text-based inputs. Each new item contributes to updating the person’s psychological profile, supporting longitudinal tracking of traits and behaviors. You can add data in two ways:
1. Adding a Single New Item
To add an individual response or text entry, use the following endpoint: PUT /person/{id}/items
.
HTTP Request PUT https://api.sentino.org/api/person/{id}/items
Input command:
curl -X 'PUT' \
'https://api.sentino.org/api/person/{id}/items' \
-H 'accept: application/json' \
-H 'Authorization: Token sentino_api_token' \
-H 'Content-Type: application/json' \
-d '{
"text": "I am orderly.",
"response": "agree"
}'
Output JSON structure:
{
"status": "added"
}
2. Adding Multiple New Items at Once
To submit a batch of items (for example, responses from a completed questionnaire), use: PUT /person/{id}
.
HTTP Request PUT https://api.sentino.org/api/person/{id}
Input command:
curl -X 'PUT' \
'https://api.sentino.org/api/person/{id}' \
-H 'accept: application/json' \
-H 'Authorization: Token sentino_api_token' \
-H 'Content-Type: application/json' \
-d '{
"items": [
{"text": "I am orderly.", "response": "agree"},
{"text": "My friends see me as reliable.", "response": "strongly agree"}
]
}'
Output JSON structure:
{
"status": "added"
}
Newly added items are automatically integrated into the existing collection of items, enriching the stored data and contributing to the ongoing calculation of personality traits. This ensures that the profile remains up-to-date and reflects all available information for accurate, longitudinal assessment.
Tip: Use /person/{id}/items
for incremental updates (adding one item at a time), and /person/{id}
when you want to upload a full set of new items in a single request.
Scoring a Person
To generate personality metrics for an individual, use the endpoint POST /person/{id}/score
. Provide the API with the person’s person_id
and specify the psychological inventories (models) to use for analysis. The API processes all items already stored in the person’s profile, summarizing and scoring all previously collected data to produce comprehensive results. It returns scores, quantiles, confidence values, and, optionally, detailed human-readable explanations for each trait, reflecting the complete information accumulated in the profile. For a complete explanation of each scoring parameter of the Sentino API (including definitions, value ranges, and usage guidelines) please refer to the Scoring Parameters section in the Annex.
HTTP Request POST https://api.sentino.org/api/person/{id}/score
Input command:
curl -X 'POST' \
'https://api.sentino.org/api/person/87013165-ade2-4a48-bbc7-cf3acc68906b/score' \
-H 'accept: application/json' \
-H 'Authorization: Token sentino_api_token' \
-H 'Content-Type: application/json' \
-d '{
"inventories": [
"big5", "mbti"
],
"explained": true
}'
Output JSON structure:
{
"inventories": [
"big5",
"mbti"
],
"scoring": {
"big5": {
...
"neuroticism": {
"quantile": 0.17,
"score": -1,
"confidence": 0.37,
"confidence_text": "normal",
"pro": [],
"contra": [
"I am easily distracted. | disagree",
"I am not easily annoyed. | agree",
"I do not put my mind on the task at hand. | disagree",
"I keep my emotions under control. | agree"
],
"texts": {
"general": "Neuroticism assesses...",
"quantile-specific": "Your emotional stability is...",
"fact": "Low neuroticism is associated with..."
}
},
...
}
},
"mbti": {
"ft": {
"quantile": 0.59,
"score": 0.46,
"confidence": 0.05,
"confidence_text": "very low",
"pro": [],
"contra": [],
"texts": {
"general": "Delves into the essence of...",
"quantile-specific": "You strike a balance between...",
"fact": "Cognitive neuroscience suggests that..."
}
},
...
}
}
}
Deleting Person
If for any reason you want to delete a previously created and maintained profile, you can use the endpoint DELETE /person/{id}. Provide the API with the unique person_id
of the profile. This action permanently removes the profile and all associated items, ensuring that no further data or scores can be retrieved for that person:
- The person profile is deleted (the associated
person_id
is no longer valid). - All items and scoring results linked to the profile are permanently removed.
This endpoint provides a simple way to manage and maintain your dataset by removing profiles that are no longer needed.
HTTP Request DELETE https://api.sentino.org/api/person/{id}
Input command:
curl -X 'DELETE' \
'https://api.sentino.org/api/person/87013165-ade2-4a48-bbc7-cf3acc68906b' \
-H 'accept: application/json' \
-H 'Authorization: Token sentino_api_token'
{
"status": "deleted",
"id": "87013165-ade2-4a48-bbc7-cf3acc68906b"
}
Scoring Items
If for any reasons you do not want to create a persistent person profile, but instead prefer to quickly extract psychologically meaningful information from standalone inputs (e.g., self-descriptions, interview transcripts, or LinkedIn profiles), you can use the endpoint: /person/score
.
How It Works
- Each submission consists of one or more items (please see the Supported Item Types in the Annex).
- Items can be either test questions with responses or text-based inputs such as self-descriptions, interviews, social media posts, etc.
- The API evaluates these items against the selected inventories and returns detailed personality metrics, including score, quantile, and confidence, along with human-readable explanations.
- For a full description of all scoring parameters, see the Parameters section in the Annex.
Extended Text Sources
Beyond questionnaires, self-descriptions, interviews, and LinkedIn profiles the Sentino API can analyze a wide range of text sources for one-time personality scoring, including:
- Professional data: CVs, cover letters, reference letters.
- Social media: Posts on Telegram, Instagram, Facebook, tweets, and forum contributions.
- Personal texts: Emails, diaries, night dreams, dating profiles (e.g., Tinder).
- Media: Vlogs, podcasts, interviews (after transcription).
- Creative/other texts: Ideal house descriptions and other personal writings.
Each text type can be processed against selected inventories, with the peculiarities of scoring adjustable directly in the API request, ensuring accurate and context-sensitive personality insights.
Parameter | Description |
---|---|
inventories (array of strings) | which inventories to use (e.g., "big5" , "neo" , "disc" , etc.) |
explained (boolean) | if true , returns text-based explanations along with scores |
items (array) | list of items to score, each with: |
– text | an item, a test question, or a text fragment |
– response | user’s response (against a five-point Likert-scale from strongly disagree to strongly agree) |
– type | a text input type (e.g., self-description, intrview, linkedin, etc.) |
HTTP Request POST https://api.sentino.org/api/person/score
Input command:
curl -X 'POST' \
'https://api.sentino.org/api/person/score' \
-H 'accept: application/json' \
-H 'Authorization: Token sentino_api_token' \
-H 'Content-Type: application/json' \
-d '{
"inventories": [
"big5", "mbti"
],
"explained": true,
"items": [
{
"text": "I am not interested in problems of other people.",
"response": "agree"
},
{
"text": "I have a wild imagination. I love to laugh and look for reasons to do so. Occasionally this gets me in trouble because people think I am laughing at them. Sometimes I am, but more often I am only laughing at myself.",
"type": "self-description"
},
{
"text": "Q: Do you prefer to work independently or in a team? A: I don’t have a preference. I work well on my own, but love to collaborate and help others. Q: Do you like regularity? A: Yes. Q: Do you prefer the big picture or the details? A: The details are necessary for a high quality big picture.",
"type": "interview"
}
]
}'
Output JSON structure:
{
"inventories": [
"big5",
"mbti"
],
"scoring": {
"big5": {
"agreeableness": {
"quantile": 0.60,
"score": 0.51,
"confidence": 0.05,
"confidence_text": "low",
"pro": [],
"contra": [],
"texts": {
"general": "Agreeableness measures an individual's level of...",
"quantile-specific": "If you're highly agreeable...",
"fact": "Research has found that..."
}
},
"conscientiousness": {
"quantile": 0.50,
"score": 0,
"confidence": 0,
...
},
"extraversion": {
"quantile": 0.77,
"score": 1.00,
"confidence": 0.23,
...
}
},
"neuroticism": {
"quantile": 0.46,
"score": -0.19,
"confidence": 0.02,
...
}
},
"openness": {
"quantile": 0.64,
"score": 0.45,
"confidence": 0.31,
...
}
},
"mbti": {
"ft": {
"quantile": 0.38,
"score": -0.65,
"confidence": 0.07,
"confidence_text": "low",
"pro": [],
"contra": [],
"texts": {
"general": "Delves into the essence of...",
"quantile-specific": "Your decision-making is...",
"fact": "Functional brain imaging studies suggest that..."
}
},
"ie": {
"quantile": 0.66,
"score": 0.75,
"confidence": 0.16,
...
},
"jp": {
"quantile": 0.5,
"score": 0,
"confidence": 0,
...
},
"sn": {
"quantile": 0.53,
"score": 0.10,
"confidence": 0.24,
"confidence_text": "normal",
"pro": [
"I have a wild imagination."
],
"contra": [
"I am not interested in problems of other people. | agree"
],
...
}
}
}
}
Error Codes
Sentino API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request – The request is invalid or malformed. |
401 | Unauthorized – Your Sentino API token is missing, invalid, or expired. |
404 | Not Found – The requested endpoint does not exist. |
405 | Method Not Allowed – The HTTP method used is not supported for this endpoint. |
406 | Not Acceptable – The requested response format is not supported (must be JSON). |
429 | Too Many Requests – You are sending requests too quickly, please slow down. |
500 | Internal Server Error – Something went wrong on the server. Please try again later. |
503 | Service Unavailable – The server is temporarily offline for maintenance. Please try again later. |
Use Cases
One of the most common cases where the Sentino API shines is extracting Big 5, NEO, or other personality traits from a text written by a person. Please note that the text should contain psychologically meaningful information (statements in the first person about attitudes, values, behaviors, or tendencies). Otherwise, the statistical confidence level will be low. This is why it is important to understand where the text comes from and to use the correct item type.
Below we discuss the most common scenarios. They imply that you don’t want to keep a personal profile in the database. If you do want to continuously work with a person’s profile, updating it over time, check out the next use case: Managing Profiles.
Big 5 Traits from a Text
Suppose you have a self-description provided by a person, or you have collected passages about yourself or someone else (e.g., from LinkedIn, chat transcripts, or social media posts). You want to analyze this text to understand what Big 5 traits it reveals.
This can be done using the Scoring Items endpoint (POST /person/score
) with type: "self-description"
or another supported text source (e.g., "interview"
, "linkedin"
, "social-media"
). The API evaluates the text against the chosen inventories (Big 5, MBTI, NEO, DISC, etc.), returning:
- Numerical trait scores
- Percentile/quantile position
- Confidence levels (low, normal, high)
- Human-readable explanations
This approach is flexible and works well with natural text, though confidence may vary depending on how rich and trait-relevant the text is.
NEO Traits from a Questionnaire
Suppose you asked a person structured questions and collected their responses. In this case, you should use the Scoring Items endpoint (POST /person/score
) with text-response items (first-person statements plus a user response on the 7-point Likert scale from strongly disagree to strongly agree).
This will typically yield higher confidence results than free text, because the items are aligned with validated psychological inventories (e.g., NEO, Big 5, MBTI).
Keep in mind: for best results, you should use a well-designed questionnaire that is specifically tailored to the inventory you want to measure.
Questionnaire for Big 5 and Neo
In many cases, you want to ask only a limited number of questions and score specific traits (rather than the full inventory). The challenge is:
- What questions should you ask?
- Which ones provide the maximum psychological information?
To solve this problem:
- Pick the inventory of interest (e.g., NEO).
- Create a questionnaire by selecting a number of items you intend to ask a person (always phrased in first person, starting with I or My).
- Collect responses on the 7-point Likert scale.
- Score the responses with the Scoring Items endpoint.
The API will build a personality profile for the selected traits based on your chosen inventory.
Managing Profiles
This is the scenario in which you want to keep a psychological profile up to date over time. You can add new items (free text or questionnaire responses) and get the profile updated continuously.
The main actions are:
- Create a person (
POST /person
) — you receive a unique person ID. - Add items (
PUT /person/{id}/items
) — these can be self-descriptions, interviews, social media posts, or structured item-response pairs. - Score the profile (
POST /person/{id}/score
) — get the current profile across inventories (Big 5, NEO, MBTI, DISC, etc.). - Add more items as new data becomes available (see point 2 above).
- Rescore automatically to update the profile with all inputs.
- Delete a profile (
DELETE /person/{id}
) if no longer needed.
Because the profile builds on incremental data, adding new information is cost-efficient: under the commercial plan, you pay only for the newly added text.
When you delete a person (commercial plan), no personal information is retained.
Annex
1. Supported Item Types
Currently, the Sentino API supports the following item types:
- Questionnaire Items
Standard test items rated by a respondent on a five-point Likert scale (strongly disagree to strongly agree). Each item includes both the text of the statement (text
) and the user’s graded response (response
), making this format ideal for structured assessments. - Text-Based Inputs
In addition to questionnaire items, the API can process natural language text by specifying the inputtype
:- Self-Description (
type: "self-description"
)
A single block of free text (e.g., “I see myself as curious and open-minded”). The API scores the text against chosen inventories, returning numerical values and interpretive insights. - Interview (
type: "interview"
)
A transcript or question–answer session (e.g., from a job interview). The API analyzes the conversation to deliver a one-time personality assessment, highlighting traits, behaviors, and tendencies. - LinkedIn Profile (
type: "linkedin"
)
The content of a LinkedIn profile (e.g., headline, summary, work experience, and skills). The API evaluates the text against selected inventories to extract meaningful personality insights in both numerical and descriptive form.
- Self-Description (
Item type | Description |
---|---|
text-type | A user-generated text reflecting the individual’s traits, behaviors, or tendencies. Each text item must be written in the first person and specify its source type, such as "self-description" , "interview" , "linkedin" , "chat" , or other personal texts. Example: "I enjoy collaborating with others" (type: "self-description" ). |
text-response | A structured personality assessment item along with the user’s response. Each item is written in the first person and rated on a Likert scale, from strongly disagree to strongly agree. Example: "item": "I am open to new experiences" , "response": "agree" . This format is suitable for standardized inventories such as Big5, MBTI, DISC, and others. |
2. Supported Inventories
Below is a comprehensive listing of all psychological inventories currently supported by the Sentino API v5. Each inventory is identified by a unique ID, accompanied by its full title and a key bibliographic reference. These inventories span broad trait models (e.g. Big Five, HEXACO, NEO) as well as more specialized instruments (e.g. DISC, 16PF, ORVIS, Values in Action), reflecting Sentino’s goal of providing versatile psychological coverage across diverse applications.
3. API Scoring Parameters
Each Sentino API result comes with a structured set of parameters that quantify psychological traits and explain them in plain language. Numerical fields like score, quantile, and confidence capture the strength, relative population position, and certainty of a result. Text-based fields such as confidence_text, pro, contra, general, and quantile-specific provide human-readable interpretations, ranging from quick confidence labels to detailed explanations of what a given trait level means. Together, these parameters balance statistical precision with interpretability, making outputs both scientifically grounded and easy to understand.
The table below presents the Sentino API scoring parameters, along with their ranges and detailed explanations.
Parameter | Range | Explanation |
---|---|---|
score | [-1,+1] | A quantitative score of an item based on a given inventory. It is directly proportional to the probability of person answering “yes”/”no”. The closer the number is to -1 or +1, the stronger the tendency. The value is rounded to two decimal places. |
quantile | [ 0,+1] | Indicates a person’s relative position within the population. It reflects the percentage of people who score lower or equal on the same measure. The value is rounded to two decimal places. For example, a quantile of 0.70 means the person scores higher than 70% of the population. |
confidence | [ 0,+1] | Shows how certain the result is. Higher values mean greater certainty. It usually increases when more items are provided. The value is rounded to two decimal places. |
confidence_text | text | A simple text label for confidence: “very low”, “low”, “normal”, “high”, or “very high”. These levels correspond directly to the numeric confidence value. |
pro | list of strings | Statements or traits that describe the positive side of the result (supporting agreement with the item). |
contra | list of strings | Statements or traits that describe the opposing or negative side of the result (supporting disagreement with the item). |
general | text | A general explanation of the trait or characteristic being measured, independent of score or quantile. |
quantile-specific | text | A tailored explanation of the trait that describes what the given quantile means for it (e.g., low, neutral, or high levels). |