The Ready Mindset API
Embed the MQ Assessment, retrieve barrier profiles, manage the 90-Day Pathway, and integrate practitioner workflows into your healthcare, coaching, or HR platform.
Overview
The Ready Mindset API gives your platform access to the MQ Assessment diagnostic, barrier scoring, the 90-Day Pathway, and practitioner management. All responses are JSON. Authentication uses API keys passed in the request header.
All API requests should be made to
https://api.myreadymindset.com/v1
# Install dependencies npm install axios # Your first MQ Assessment session const axios = require('axios'); const response = await axios.post( 'https://api.myreadymindset.com/v1/assessment/sessions', { client_id: 'client_abc123', language: 'en' }, { headers: { 'Authorization': 'Bearer rm_live_your_api_key', 'Content-Type': 'application/json' } } ); console.log(response.data.session_id); // sess_xyz789
API Keys
All requests require an API key passed in the Authorization header as a Bearer token. Keys are prefixed with rm_live_ for production and rm_test_ for sandbox.
Authorization: Bearer rm_live_xxxxxxxxxxxxxxxxxxxx
# .env RM_API_KEY=rm_live_xxxxxxxxxxxxxxxxxxxx RM_API_BASE=https://api.myreadymindset.com/v1 # Usage headers: { 'Authorization': `Bearer ${process.env.RM_API_KEY}` }
Error Handling
The API uses standard HTTP status codes. All errors return a JSON object with a code, message, and optional detail field.
{
"error": {
"code": "invalid_api_key",
"message": "The API key provided is invalid or has been revoked.",
"status": 401
}
}
| Status | Code | Description |
|---|---|---|
| 200 | ok | Request succeeded |
| 201 | created | Resource created successfully |
| 400 | bad_request | Missing or invalid parameters |
| 401 | unauthorized | Invalid or missing API key |
| 403 | forbidden | Valid key but insufficient tier |
| 404 | not_found | Resource does not exist |
| 429 | rate_limited | Too many requests — see limits below |
| 500 | server_error | Something went wrong on our end |
X-RateLimit-Remaining and X-RateLimit-Reset.
The 56-Profile Combinatorial Taxonomy
The MQ Assessment does not just return eight barrier scores. It identifies which of 56 distinct psychological profiles the respondent belongs to — each with a name, a super-cluster classification, and a specific tool sequence. Understanding this system is essential to building meaningful experiences for your users.
// The assessment returns scores for all 8 barriers // The top 3 scores (sorted ascending by barrier index) form the profile key // Example: top barriers are Inner Narrative (0), Capacity Gap (6), Isolation Trap (7) // Key = "0,6,7" → profile: "The Lonely Overwhelmed Self-Doubter" { "barriers": { "inner_narrative": { "score": 22, "level": "high" }, "capacity_gap": { "score": 19, "level": "high" }, "isolation_trap": { "score": 17, "level": "high" }, // ... remaining 5 barriers }, "profile_name": "The Lonely Overwhelmed Self-Doubter", "super_cluster": "The Lonely Struggler", "primary_barrier": "inner_narrative" }
profile_name to personalise your user experience — show the user their profile name as part of their results. Use super_cluster to segment users into nine groups for targeted content, notifications, or interventions. The profile names and super-cluster names are proprietary to The Ready Mindset — do not expose the full taxonomy to end users.
const result = await getAssessmentResults(sessionId); // Show the user their profile const profileName = result.profile_name; // "The Perfectionist Paralyzed" const superCluster = result.super_cluster; // "The Perfectionist Paralyzed" const primaryTool = result.barriers[result.primary_barrier].tool; // Display to user showProfileCard({ title: profileName, cluster: superCluster, tool: primaryTool, score: result.mq_score }); // Segment for analytics or notifications trackUserSegment(userId, superCluster); // Store for personalisation await updateUserRecord(userId, { mq_profile: profileName, mq_cluster: superCluster, mq_score: result.mq_score, primary_barrier: result.primary_barrier });
The 9 Super-Clusters
The 56 profiles collapse into 9 super-clusters for simplified segmentation, analytics, and intervention design. Each super-cluster has a primary tool entry point and a characteristic internal monologue. Use super-clusters when you need to group users for cohort analysis or targeted content.
{
"super_clusters": [
{
"name": "The Perfectionist Paralyzed",
"core_dynamic": "Internal shame + scarcity + overwhelm",
"primary_tool": "capacity_ladder",
"user_phrase": "I can't start because it has to be perfect"
},
{
"name": "The Lonely Struggler",
"core_dynamic": "Any barriers + isolation",
"primary_tool": "accountability_trinity",
"user_phrase": "I am dealing with this alone"
},
{
"name": "The Ashamed Avoider",
"core_dynamic": "Guilt + self-doubt + drift",
"primary_tool": "two_envelope_method",
"user_phrase": "I feel guilty about everything I have not done"
},
{
"name": "The Reactive Drifter",
"core_dynamic": "Unconscious avoidance + interruptions + wrong timing",
"primary_tool": "hourly_anchor",
"user_phrase": "Where did the day go?"
},
{
"name": "The Seasonally Lost",
"core_dynamic": "Wrong timing amplifies any other barrier",
"primary_tool": "seasonal_map",
"user_phrase": "I should be further along by now"
},
{
"name": "The Impoverished",
"core_dynamic": "Scarcity lens + any barrier",
"primary_tool": "two_column_inventory",
"user_phrase": "I don't have what I need"
},
{
"name": "The Invaded",
"core_dynamic": "External interruptions + any barrier",
"primary_tool": "invasion_forecast",
"user_phrase": "Everyone keeps interrupting me"
},
{
"name": "The Overwhelmed",
"core_dynamic": "Capacity gap + any barrier",
"primary_tool": "capacity_ladder",
"user_phrase": "It is just too much"
},
{
"name": "The Self-Doubting",
"core_dynamic": "Inner narrative + any barrier",
"primary_tool": "narrative_reset",
"user_phrase": "I am not good enough to do this"
}
]
}
profile_name and super_cluster to end users within your product. The full taxonomy — all 56 profiles and their descriptions — is not included in API responses and is not licensed for redistribution. Contact hello@myreadymindset.com for licensing enquiries.
API Tiers
Start free. Scale as your platform grows. Enterprise includes a dedicated SLA, co-branding rights, and a data processing agreement for healthcare compliance.
Assessment Endpoints
Create a session, render the 40 questions it returns, then submit answers in one call to get the full MQ profile — barrier scores, the named profile from the 56-profile taxonomy, the paired cost profile, and the primary tool.
| Parameter | Type | Description |
|---|---|---|
| client_id | string | Optional. Links this session to a client created via POST /clients. If provided, scoring this session also records it to that client's history. |
| language | string | Default: en |
{
"success": true,
"data": {
"session_id": "sess_fd8d5689e10efefa",
"client_id": "client_abc123",
"language": "en",
"status": "created",
"created_at": "2026-06-25T05:30:25.274Z",
"total_questions": 40,
"questions": [
{
"idx": 0,
"id": "inner_narrative",
"name": "Inner Narrative",
"questions": [
{ "id": "inner_narrative_q1", "text": "I tell myself I'm not the kind of person who finishes things." }
// ... 4 more questions for this barrier
]
}
// ... 7 more barrier groups, 40 questions total across all 8
],
"questions_url": "https://api.myreadymindset.com/v1/assessment/sessions/sess_fd8d5689e10efefa/questions"
}
}
session_id and are rendering later), use the endpoint below.Returns the identical question payload included in the session-creation response above. Useful if your client and server are separate and only the session ID was persisted.
| Parameter | Type | Description |
|---|---|---|
| answersrequired | object | A flat object keyed by question ID (e.g. inner_narrative_q1), each value 1–5 on the Likert scale. Question IDs come from the session-creation response. |
| user | object | { name, email } — stored alongside the result, optional |
| session_id | string | If provided, marks that session as scored |
| client_id | string | If provided, this result is appended to that client's score history |
{
"answers": {
"inner_narrative_q1": 5,
"inner_narrative_q2": 4,
// ... all 40 question IDs, each 1-5
"isolation_trap_q5": 5
},
"user": { "name": "Jane Doe", "email": "jane@example.com" },
"session_id": "sess_fd8d5689e10efefa",
"client_id": "client_abc123"
}
{
"success": true,
"data": {
"user": { "name": "Jane Doe", "email": "jane@example.com" },
"assessed_at": "2026-06-25T05:31:10.000Z",
"mq_score": 87,
"mq_level": "Constrained",
"mq_level_description": "Significant barriers across multiple dimensions. Structured, targeted intervention is recommended.",
"profile_key": "0,6,7",
"barrier_scores": [
{ "idx": 0, "id": "inner_narrative", "name": "Inner Narrative", "tool": "The Narrative Reset", "score": 22, "answered": 5 }
// ... all 8 barriers, always present and in fixed order regardless of score
],
"top_3_barriers": [
{ "idx": 0, "id": "inner_narrative", "name": "Inner Narrative", "score": 22 }
// ... 2 more — these 3 form the profile_key above
],
"primary_barrier": {
"idx": 0, "id": "inner_narrative", "name": "Inner Narrative",
"score": 22, "tool": "The Narrative Reset"
},
"barrier_profile": {
"name": "The Lonely Overwhelmed Self-Doubter",
"cluster": "The Lonely Struggler",
"insight": "Impossible tasks faced alone while the inner voice confirms every fear about your capacity."
},
"cost_profile": {
"name": "The Impossible Solitude",
"dimensions": ["Psychological", "Health", "Identity"],
"description": "Impossible tasks faced alone while the inner voice confirms every fear. One of the highest-burnout cost profiles in the matrix.",
"severity_color": "#C0392B"
}
}
}
data.barrier_profile.name to personalise your user experience — show the user their named profile from the 56-profile taxonomy. Use data.barrier_profile.cluster to segment users into one of nine super-clusters for cohort analysis. data.cost_profile tells you what their specific barrier combination is predicted to be costing them, paired automatically — no separate cost assessment required.
barrier_profile.name, barrier_profile.cluster, and cost_profile.name to end users within your product. Redistributing the full 56-entry taxonomy outside your product is not licensed — contact hello@myreadymindset.com for licensing enquiries.
If you already have barrier scores from elsewhere and just need the taxonomy lookup (skip scoring entirely), send the top 3 barrier indices (0–7, any order) and get back the paired barrier profile and cost profile. This endpoint is public — no Authorization header needed.
{ "barrier_indices": [0, 6, 7] }
Client Endpoints
Create and manage client profiles, retrieve MQ score history, and track barrier changes across reassessments.
| Parameter | Type | Description |
|---|---|---|
| external_idrequired | string | Your internal user ID |
| string | Client email for notifications | |
| first_name | string | Client first name |
| practitioner_id | string | Assign to a practitioner on creation |
| metadata | object | Custom key-value pairs |
{
"client_id": "client_abc123",
"external_id": "user_7890",
"email": "sarah@example.com",
"first_name": "Sarah",
"practitioner_id": "prac_xyz",
"latest_mq_score": 87,
"assessment_count":2,
"pathway_day": 34,
"created_at": "2026-06-01T09:00:00Z"
}
| Query Param | Type | Description |
|---|---|---|
| practitioner_id | string | Filter by practitioner |
| mq_level | string | Filter: ready, developing, constrained, blocked, crisis |
| limit | integer | Results per page. Default: 20. Max: 100 |
| cursor | string | Pagination cursor from previous response |
{
"client_id": "client_abc123",
"assessments": [
{
"session_id": "sess_day1",
"day": 1,
"mq_score": 112,
"completed_at":"2026-06-01T09:00:00Z"
},
{
"session_id": "sess_day30",
"day": 30,
"mq_score": 87,
"completed_at":"2026-07-01T10:22:00Z"
}
],
"score_delta": -25,
"trend": "improving"
}
90-Day Pathway Endpoints
Access the full 90-Day Pathway structure, update task completion, and track a client's progress through all three phases.
{
"client_id": "client_abc123",
"current_day": 34,
"current_phase": "deepening",
"current_week": 5,
"overall_pct": 28,
"streak_days": 7,
"phases": {
"foundation": { "complete": true, "pct": 100 },
"deepening": { "complete": false, "pct": 15 },
"integration": { "complete": false, "pct": 0 }
},
"current_week_tasks": [
{ "id": "w5t1", "task": "Deploy Invasion Forecast", "complete": true, "category": "tool" },
{ "id": "w5t2", "task": "Track defence effectiveness", "complete": false, "category": "tool" },
{ "id": "w5t3", "task": "Four-barrier analysis", "complete": false, "category": "reflect" },
{ "id": "w5t4", "task": "Run all 4 tools in protocol", "complete": false, "category": "protocol" },
{ "id": "w5t5", "task": "Trinity Challenger daily report","complete": false, "category": "trinity" }
]
}
{
"task_id": "w5t2",
"complete": true,
"journal_entry": "Optional journal text for this task"
}
Practitioner Endpoints
List certified practitioners, assign them to clients, and manage practitioner-client relationships within your platform.
{
"practitioners": [
{
"practitioner_id": "prac_xyz",
"name": "Dr. Sarah Okafor",
"level": "RMP",
"client_count": 12,
"status": "active"
}
],
"total": 1
}
| Parameter | Type | Description |
|---|---|---|
| practitioner_idrequired | string | ID of the practitioner to assign |
Organisation Endpoints
Retrieve team-level MQ data, barrier heatmaps, and bulk invite employees. Designed for HR platforms and enterprise integrations.
{
"org_id": "org_acme",
"team_size": 47,
"assessed": 43,
"avg_mq_score": 94,
"mq_distribution": {
"ready": 6,
"developing": 14,
"constrained":18,
"blocked": 5,
"crisis": 0
},
"barrier_heatmap": {
"inner_narrative": 16.2,
"unfinished_business":14.8,
"autopilot_trap": 12.4,
"scarcity_lens": 11.9,
"invasion_factor": 10.2,
"timing_mismatch": 9.7,
"capacity_gap": 8.3,
"isolation_trap": 7.1
}
}
{
"employees": [
{ "email": "alice@acme.com", "department": "Engineering" },
{ "email": "bob@acme.com", "department": "Sales" }
],
"message": "Optional custom message in the invite email"
}
Live API Tester
Try the API in the sandbox environment. Use your test key (rm_test_demo) to explore responses without affecting live data.