API v1

Vitality Blueprint Public API

Version: v1  ·  Status: Pre-release  ·  Last Updated: March 2026

The Vitality Blueprint Public API gives B2B partners programmatic access to performance bloodwork interpretation. Submit your end users' biomarker data — from any lab source — and receive Vitality's proprietary analysis: biomarker grading, functional area scores, vitality score, biological age, key constraint identification, and personalized recommendations (supplementation, nutrition, lifestyle).

Partners can also optionally order blood draws through Vitality's lab network for end users who don't yet have results.

More biomarkers = better results. Vitality's algorithm analyzes biomarkers across 13 functional areas. The more data you provide, the more complete and actionable the interpretation will be.

Environments

Vitality provides two environments. Start with Sandbox — build and test your full integration before going live.

SandboxProduction
Base URLsandbox.api.vitalityblueprint.com/v1api.vitalityblueprint.com/v1
API Key Prefixsk_sandbox_sk_live_
DataSynthetic test dataReal user bloodwork
Analysis TimeInstant (pre-computed)~10 minutes
Blood DrawsSimulated — no real lab ordersReal Quest / LabCorp requisitions
WebhooksFire immediatelyFire after analysis completes
Rate Limits1,000 req/min100 req/min
Start here. Build your integration against Sandbox before requesting Production access. Sandbox keys are issued automatically when your partner account is created.

Quick Start

Submit biomarker data for interpretation in under 60 seconds.

curl -X POST https://sandbox.api.vitalityblueprint.com/v1/orders \
  -H "X-Api-Key: sk_sandbox_YOUR_SANDBOX_KEYsk_live_YOUR_PRODUCTION_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "client": {
      "external_id": "your-internal-user-id",
      "sex": "male",
      "date_of_birth": "1991-06-15"
    },
    "blood_draw_date": "2026-03-01",
    "biomarkers": [
      { "key": "vitamin_d_25_oh", "value": 22.5, "unit": "ng/mL" },
      { "key": "ferritin", "value": 28, "unit": "ng/mL" },
      { "key": "hs_crp", "value": 3.8, "unit": "mg/L" },
      { "key": "magnesium_rbc", "value": 4.1, "unit": "mg/dL" },
      { "key": "testosterone_total", "value": 485, "unit": "ng/dL" }
    ],
    "webhook_url": "https://your-app.com/webhooks/vitality"
  }'

The sandbox returns a completed order instantly:The response contains the order ID to track:

Response · 201 Created
{
  "order_id": "ord_sb_7f3a1b2cord_7f3a1b2c",
  "report_id": "rpt_sb_9e4d8f1arpt_9e4d8f1a",
  "status": "completedprocessing",
  "biomarkers_accepted": 5,
  "created_at": "2026-03-08T14:30:00Z",
  "environment": "sandboxproduction"
}

Fetch the full report:

curl https://sandbox.api.vitalityblueprint.com/v1/reports/rpt_sb_9e4d8f1arpt_9e4d8f1a \
  -H "X-Api-Key: sk_sandbox_YOUR_SANDBOX_KEYsk_live_YOUR_PRODUCTION_KEY"

That's it. You now have a complete bloodwork interpretation with biomarker grading, functional area scores, key constraint analysis, and personalized recommendations.

Authentication

All API requests require an API key passed in the X-Api-Key header.

Header
X-Api-Key: sk_sandbox_YOUR_KEYsk_live_YOUR_KEY
Key PrefixEnvironmentIssued
sk_sandbox_SandboxAutomatically on partner registration
sk_live_ProductionAfter manual review and approval

Security requirements

How It Works

Path 1: Submit Biomarker Data (Primary)

Your end users already have lab results — from their own doctor, a third-party lab, or any other source. Submit the data and get back the full interpretation.

┌─────────────┐ ┌──────────────────┐ │ B2B Partner │ │ Vitality API │ └──────┬──────┘ └────────┬─────────┘ │ │ │ POST /v1/orders │ │ { biomarkers, │ │ client, ... } │ │────────────────────►│ │ 201 { order_id } │ │◄────────────────────│ │ │ │ │ ┌──────────────────┐ │ │ │ VB Analysis │ │ │ │ (~10 min) │ │ │ │ • Grade biomarkers│ │ │ │ • Calc ratios │ │ │ │ • Score 13 areas │ │ │ │ • ID constraints │ │ │ │ • Gen protocols │ │ │ └──────────────────┘ │ │ │ Webhook: results │ │ ready │ │◄────────────────────│ │ │ │ GET /v1/reports/id │ │────────────────────►│ │ 200 { full report }│ │◄────────────────────│

Path 2: Order Blood Draw (Optional)

Your end users don't have results yet. Order a blood draw through Vitality's lab network. See Blood Draw Ordering for details.

┌─────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ B2B Partner │ │ Vitality API │ │ Quest/LabCorp │ └──────┬──────┘ └────────┬─────────┘ └────────┬─────────┘ │ │ │ │ POST /v1/blood-draws│ │ │────────────────────►│ │ │ 201 { blood_draw_id,│ │ │ requisition_pdf, │ │ │ directions } │ │ │◄────────────────────│ │ │ │ │ │ End user visits lab with requisition PDF │ │ │ │ │ │ Lab results received │ │ │◄────────────────────────│ │ │ │ │ │ VB Analysis (~10 min) │ │ │ │ │ Webhook: results │ │ │ ready │ │ │◄────────────────────│ │ │ │ │ │ GET /v1/reports/id │ │ │────────────────────►│ │ │ 200 { full report }│ │ │◄────────────────────│ │

Sandbox Behavior

┌─────────────┐ ┌──────────────────┐ │ B2B Partner │ │ Sandbox API │ └──────┬──────┘ └────────┬─────────┘ │ │ │ POST /v1/orders │ │────────────────────►│ │ 201 { order_id, │ │ status:completed }│ │◄────────────────────│ │ │ │ Webhook fires │ │ immediately │ │◄────────────────────│ │ │ │ GET /v1/reports/id │ │────────────────────►│ │ 200 { full report │ │ synthetic data } │ │◄────────────────────│
In Sandbox, the entire flow is instant. No real lab, no wait time.

Endpoints

POST /v1/orders

Submit biomarker data for interpretation. This is the primary endpoint — send us your end user's lab results and we return a full analysis. ⚡ Sandbox: Returns completed instantly

At least one data source required. Provide biomarkers, pdf_url, or both. More biomarkers = more complete functional area scoring, constraint identification, and recommendations.

Request Body

FieldTypeRequiredDescription
client.external_idstringYesYour internal identifier for this user
client.sexstringYesmale or female — required for range analysis
client.date_of_birthstringConditionalISO 8601 date. Required if age not provided.
client.agenumberConditionalAge in years. Required if date_of_birth not provided.
client.first_namestringNoUser's first name
client.last_namestringNoUser's last name
client.emailstringNoUser's email address
client.heightnumberNoHeight in inches
client.weightnumberNoWeight in pounds
blood_draw_datestringYesDate blood was drawn (ISO 8601 YYYY-MM-DD)
biomarkersobject[]NoArray of { key, value, unit } objects. See Supported Biomarkers.
pdf_urlstringNoURL to a lab report PDF. VB will extract biomarker data.
webhook_urlstringNoOverride the default webhook URL for this order
test_scenariostringNoSandbox only. Name of pre-built test scenario

Response 201 Created

JSON
{
  "order_id": "ord_sb_7f3a1b2cord_7f3a1b2c",
  "report_id": "rpt_sb_9e4d8f1arpt_9e4d8f1a",
  "status": "completedprocessing",
  "client_external_id": "user_12345",
  "biomarkers_accepted": 10,
  "biomarkers_unrecognized": 0,
  "created_at": "2026-03-08T14:30:00Z",
  "environment": "sandboxproduction"
}

Order Status Values

StatusDescription
processingBiomarker data received, VB analysis running (~10 min)
completedAnalysis complete, report available
failedAnalysis could not be completed (see error field)

GET /v1/orders/{order_id}

Check the status of an existing order.

Response · 200 OK
{
  "order_id": "ord_sb_7f3a1b2cord_7f3a1b2c",
  "report_id": "rpt_sb_9e4d8f1arpt_9e4d8f1a",
  "status": "completed",
  "client_external_id": "user_12345",
  "biomarkers_accepted": 10,
  "blood_draw_date": "2026-03-01",
  "blood_draw_id": null,
  "created_at": "2026-03-08T14:30:00Z",
  "updated_at": "2026-03-08T14:30:01Z",
  "environment": "sandboxproduction"
}

blood_draw_id is populated only if this order originated from a blood draw request.

GET /v1/reports/{report_id}

Returns the complete bloodwork interpretation. Contains biomarker grading, functional area scores, vitality score, biological age, key constraint analysis, key biomarkers, and personalized recommendations.

See John Doe Full Report Example for the complete JSON response.

Top-level response structure

Response · 200 OK
{
  "report_id": "string",
  "order_id": "string",
  "status": "completed",
  "environment": "sandbox | production",
  "client": { ... },
  "blood_draw_date": "2026-03-01",
  "vitality_score": 72.4,
  "biological_age": 31.2,
  "functional_areas": [ ... ],
  "biomarkers": [ ... ],
  "ratios": [ ... ],
  "calculations": [ ... ],
  "key_constraint": { ... },
  "recommendations": [ ... ],
  "created_at": "2026-03-08T14:30:00Z"
}
SectionDescription
vitality_scoreOverall health performance score (20–100), averaged across all 13 functional areas
biological_ageEstimated biological age based on biomarker analysis
functional_areasScores and analysis for each of the 13 physiological systems
biomarkersIndividual results with grading, ranges, explanations, and impact mapping
ratiosCalculated ratios from biomarker pairs (e.g., Total Cholesterol / HDL)
calculationsDerived metrics from biomarkers + profile data (e.g., eGFR, HOMA-IR)
key_constraintThe single biggest factor limiting performance, with related key biomarkers
recommendationsPersonalized actions: supplementation, nutrition, and lifestyle changes
Partial data, partial results. If fewer biomarkers were submitted, some functional areas may have null scores, and recommendations will be limited to what can be determined from available data.

GET /v1/reports/{report_id}/summary

Condensed report — vitality score, biological age, functional area scores, key constraint, key biomarkers, and top recommendations. Useful for dashboard views.

Response · 200 OK
{
  "report_id": "rpt_sb_9e4d8f1arpt_9e4d8f1a",
  "vitality_score": 72.4,
  "biological_age": 31.2,
  "functional_areas": [
    { "key": "energy", "name": "Energy", "score": 81.3 },
    { "key": "sleep", "name": "Sleep", "score": 88.0 },
    { "key": "resilience", "name": "Resilience", "score": 62.5 },
    { "key": "inflammation", "name": "Inflammation", "score": 55.8 },
    { "key": "cellular_health", "name": "Cellular Health", "score": 78.2 },
    { "key": "micronutrients", "name": "Micronutrients", "score": 48.9 },
    { "key": "hormone_profile", "name": "Hormone Profile", "score": 71.0 },
    { "key": "brain_chemistry", "name": "Brain Chemistry", "score": 82.5 },
    { "key": "cardiovascular", "name": "Cardiovascular Health", "score": 65.3 },
    { "key": "gut_health", "name": "Gut Health", "score": 85.0 },
    { "key": "hydration", "name": "Hydration", "score": 90.1 },
    { "key": "stress", "name": "Stress", "score": 76.4 },
    { "key": "toxic_load", "name": "Toxic Load", "score": 88.7 }
  ],
  "key_constraint": {
    "key": "micronutrient_deficiency",
    "name": "Micronutrient Deficiency",
    "summary": "Critical vitamin and mineral gaps are limiting energy, immune resilience, and recovery."
  },
  "key_biomarkers": [
    { "key": "vitamin_d_25_oh", "name": "Vitamin D, 25-OH", "flag": "low" },
    { "key": "magnesium_rbc", "name": "Magnesium, RBC", "flag": "low" },
    { "key": "ferritin", "name": "Ferritin", "flag": "low" }
  ],
  "out_of_range_count": 4,
  "normal_count": 3,
  "optimal_count": 21,
  "top_recommendations": [
    "Supplement with Vitamin D3 (5,000 IU daily with a fat-containing meal)",
    "Add magnesium glycinate (400mg before bed)",
    "Increase dietary iron through red meat, spinach, and lentils"
  ]
}

Webhooks

When a report is ready, Vitality sends a POST request to your registered webhook URL.

Webhook Payload

POST to your webhook URL
{
  "event": "results.ready",
  "report_id": "rpt_sb_9e4d8f1arpt_9e4d8f1a",
  "order_id": "ord_sb_7f3a1b2cord_7f3a1b2c",
  "client_external_id": "user_12345",
  "vitality_score": 72.4,
  "status": "completed",
  "environment": "sandboxproduction",
  "timestamp": "2026-03-08T14:45:00Z"
}

Signature Verification

Every webhook includes an X-VB-Signature header with an HMAC-SHA256 signature. Always verify it.

const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

Retry Policy

AttemptDelay
1st retry1 minute
2nd retry10 minutes
3rd retry1 hour

After 3 failed retries, the webhook is marked as failed. You can always retrieve the report via GET /v1/reports/{report_id}.

Test Webhooks Sandbox only

Trigger a test webhook delivery on demand:

curl -X POST https://sandbox.api.vitalityblueprint.com/v1/webhooks/test \
  -H "X-Api-Key: sk_sandbox_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "report_id": "rpt_sb_9e4d8f1a",
    "target_url": "https://your-app.com/webhooks/vitality"
  }'

Blood Draw Ordering Optional

Blood draw ordering is for partners whose end users don't already have lab results. Vitality fulfills blood draws through Quest Diagnostics and LabCorp. If your users bring their own data, you only need the Submit Order endpoint.

How it works

  1. Your end user pays for a blood draw on your platform
  2. You send us an API request with the user's info and desired panel
  3. We return a PDF requisition form and blood draw directions
  4. You share these with the end user — they visit any Quest or LabCorp location
  5. Lab results are sent to Vitality automatically
  6. Vitality runs the full analysis and fires a webhook when the report is ready

Panels

Five panel tiers are available, from basic health screening to maximum biomarker coverage.

PanelNameBiomarkersDescription
essentialEssential~25Core health screening: CBC, metabolic panel, lipids, thyroid
foundationFoundation~45Comprehensive wellness: adds vitamins, minerals, inflammation markers
performancePerformance~65Performance-focused: adds hormones, metabolic markers, advanced lipids
advancedAdvanced~85Deep analysis: adds advanced cardiovascular, autoimmune, toxicity markers
eliteElite~128Maximum coverage for the most complete interpretation
We recommend performance or higher for meaningful functional area scoring and targeted recommendations.

POST /v1/blood-draws

Create a blood draw order. Returns a PDF requisition form and directions for the end user.

Request Body

FieldTypeRequiredDescription
client.external_idstringYesYour internal identifier
client.first_namestringYesRequired for lab requisition form
client.last_namestringYesRequired for lab requisition form
client.emailstringYesRequisition delivery and lab communications
client.sexstringYesmale or female
client.date_of_birthstringYesISO 8601 date — required by labs
panelstringYesessential, foundation, performance, advanced, or elite
webhook_urlstringNoOverride default webhook for results from this blood draw

Response 201 Created

JSON
{
  "blood_draw_id": "bd_8a2f4c9e",
  "status": "requisition_created",
  "panel": "performance",
  "client_external_id": "user_12345",
  "requisition_pdf_url": "https://sandbox.api.vitalityblueprint.com/v1/blood-draws/bd_8a2f4c9e/requisition.pdf",
  "blood_draw_directions": "1. Print or save the attached requisition PDF.\n2. Visit any Quest Diagnostics or LabCorp patient service center.\n3. Bring a valid photo ID and the requisition form.\n4. Fast for 10-12 hours before your visit (water is OK).\n5. The blood draw takes approximately 5-10 minutes.\n6. Results are sent directly to Vitality Blueprint.",
  "created_at": "2026-03-08T14:30:00Z",
  "environment": "sandboxproduction"
}
Share the requisition_pdf_url and blood_draw_directions with your end user. The PDF is a valid lab requisition form to present at Quest or LabCorp.

Blood Draw Status Values

StatusDescription
requisition_createdPDF ready; awaiting the user's lab visit
draw_completedBlood drawn at lab, awaiting results
results_receivedLab results received, interpretation order created automatically
cancelledBlood draw order cancelled

When a blood draw reaches results_received, an interpretation order is created automatically. You'll receive a results.ready webhook when the report is available.

GET /v1/blood-draws/{blood_draw_id}

Check the status of a blood draw order.

Response · 200 OK
{
  "blood_draw_id": "bd_8a2f4c9e",
  "status": "results_received",
  "panel": "performance",
  "client_external_id": "user_12345",
  "order_id": "ord_3b7e9d2f",
  "report_id": "rpt_4c8a1f5e",
  "requisition_pdf_url": "https://sandbox.api.vitalityblueprint.com/v1/blood-draws/bd_8a2f4c9e/requisition.pdf",
  "created_at": "2026-03-08T14:30:00Z",
  "updated_at": "2026-03-15T09:22:00Z",
  "environment": "sandboxproduction"
}

order_id and report_id are populated once lab results are received.

Data Models

Biomarker

A single lab-tested biomarker with VB analysis. Each biomarker includes the raw result, VB's grading against optimal and normal ranges, a description, and an explanation if out of range.

FieldTypeDescription
keystringStable identifier (e.g., vitamin_d_25_oh)
namestringDisplay name
resultnumberMeasured value from the lab
unitstringUnit of measure
statusstringoptimal normal out_of_range
flagstringok, low, or high relative to optimal range
ranges.optimalstringOptimal range
ranges.normalstringNormal range
descriptionstringWhat this biomarker measures and why it matters
explanationstring|nullIf out of range: what it means for the body
explanation_sourcesstring[]Scientific references
functional_areasobject[]Impacted functional areas with scores
performance_goalsobject[]Impacted performance goals

Ratio

A calculated ratio derived from two or more biomarkers. Same analysis structure as biomarkers, plus a components field listing which biomarker keys are used.

FieldTypeDescription
keystringStable identifier
namestringDisplay name
resultnumberCalculated value
componentsstring[]Biomarker keys used in calculation
status / flag / ranges / description / explanationSame structure as Biomarker

Calculation

A derived metric from biomarkers and/or profile data (age, weight, etc.).

FieldTypeDescription
keystringStable identifier (e.g., egfr, homa_ir)
componentsstring[]Biomarker keys used
Same analysis fields as Biomarker

Functional Area

A scored category representing a major physiological system. VB analyzes 13 functional areas and scores each from 20 to 100. null score if insufficient biomarker data.

FieldTypeDescription
keystringStable identifier
namestringDisplay name
scorenumber|nullScore from 20 to 100. null if insufficient data.
descriptionstringWhat this area covers
deeper_explanationstringDetailed explanation
implicationstringWhat the current score means
most_impactful_markersobject[]Markers most affecting this score

The 13 functional areas: Energy, Sleep, Resilience, Inflammation, Cellular Health, Micronutrients, Hormone Profile, Brain Chemistry, Cardiovascular Health, Gut Health, Hydration, Stress, Toxic Load

Key Constraint

The single biggest factor holding back performance, identified by VB's proprietary algorithm. Includes the key biomarkers — the specific markers most responsible for the constraint.

FieldTypeDescription
keystringConstraint identifier
namestringDisplay name
what_isstringDescription of this constraint
how_it_impacts_physiologystringHow it affects the body
how_it_impacts_performancestringHow it limits performance goals
symptomsobject[]Associated symptoms
related_biomarkersobject[]Key biomarkers contributing to this constraint, with flags
impacted_functional_areasobject[]Affected functional areas with scores

Recommendation

A personalized action item from VB's analysis. Recommendations are categorized into three types: supplementation, nutrition, and lifestyle.

FieldTypeDescription
typestringsupplementation, nutrition, or lifestyle
keystringStable identifier
whatstringThe recommendation name
howstringSpecific implementation instructions
whystringWhy this is recommended for this user
prioritystringkey_constraint, performance_goal, or biomarker
targetsobject[]What this addresses (biomarkers, constraints, goals)
impact_functional_areasobject[]Functional areas this improves
impact_performance_goalsobject[]Performance goals this improves
sourcesobject[]Scientific references

Sandbox Test Scenarios

Pre-built scenarios let you exercise different code paths without real bloodwork. Pass the test_scenario field when creating an order. You can also submit your own biomarker data in Sandbox without a test scenario.

ScenarioDescriptionKey Characteristics
healthy_male_30Healthy 30-year-old maleAll biomarkers optimal, vitality score ~92
low_vitamin_d_male_34Male with micronutrient gapsLow Vitamin D, magnesium, ferritin. Elevated hs-CRP. Constraint: Micronutrient Deficiency
metabolic_risk_male_55Older male, metabolic markersElevated LDL, A1C, triglycerides. Constraint: Cardiometabolic Inefficiency
athletic_female_25Athletic femaleLow iron, borderline estradiol, elevated cortisol. Constraint: Hormone Imbalance
low_vitamin_d_female_45Female with deficienciesLow Vitamin D, B12, ferritin, suboptimal thyroid. Constraint: Micronutrient Deficiency

Full Report Example: John Doe

Complete GET /v1/reports/{report_id} response using the low_vitamin_d_male_34 sandbox scenario.

Scenario: John Doe, 34-year-old male, 5'11", 185 lbs. Key findings: low Vitamin D, low magnesium, low ferritin, elevated hs-CRP, elevated LDL, suboptimal testosterone.

GET /v1/reports/rpt_sb_9e4d8f1a · 200 OK
{
  "report_id": "rpt_sb_9e4d8f1a",
  "order_id": "ord_sb_7f3a1b2c",
  "status": "completed",
  "environment": "sandbox",
  "client": {
    "external_id": "user_12345",
    "first_name": "John",
    "last_name": "Doe",
    "sex": "male",
    "age": 34
  },
  "blood_draw_date": "2026-03-01",
  "vitality_score": 72.4,
  "biological_age": 31.2,
  "functional_areas": [
    {
      "key": "energy", "name": "Energy", "score": 81.3,
      "description": "Energy is the summation of all the systems in the body.",
      "deeper_explanation": "Understanding which systems are working efficiently reveals opportunities for improvement.",
      "implication": "Your energy systems are functioning well overall, with room for targeted improvement.",
      "most_impactful_markers": [
        { "key": "ferritin", "name": "Ferritin", "flag": "low", "significance": "individually_significant" },
        { "key": "vitamin_d_25_oh", "name": "Vitamin D, 25-OH", "flag": "low", "significance": "individually_significant" }
      ]
    },
    {
      "key": "micronutrients", "name": "Micronutrients", "score": 48.9,
      "description": "Critical vitamins and minerals that form the backbone of human performance.",
      "deeper_explanation": "Even mild insufficiencies can cascade across multiple systems.",
      "implication": "Multiple key micronutrients are below optimal levels.",
      "most_impactful_markers": [
        { "key": "vitamin_d_25_oh", "name": "Vitamin D, 25-OH", "flag": "low", "significance": "critically_significant" },
        { "key": "magnesium_rbc", "name": "Magnesium, RBC", "flag": "low", "significance": "critically_significant" },
        { "key": "ferritin", "name": "Ferritin", "flag": "low", "significance": "individually_significant" }
      ]
    },
    { "key": "inflammation", "name": "Inflammation", "score": 55.8, "description": "The body is constantly working to maintain balance.", "deeper_explanation": "Chronic low-grade inflammation is pervasive.", "implication": "Elevated inflammatory markers suggest systemic inflammation.", "most_impactful_markers": [{ "key": "hs_crp", "name": "hs-CRP", "flag": "high", "significance": "critically_significant" }] },
    { "key": "resilience", "name": "Resilience", "score": 62.5, "description": "The ability to respond to challenges.", "deeper_explanation": "Repeated performance requires exceptional recovery.", "implication": "Moderately impacted by micronutrient gaps and inflammation.", "most_impactful_markers": [] },
    { "key": "cardiovascular", "name": "Cardiovascular Health", "score": 65.3, "description": "Supports every cell in the body.", "deeper_explanation": "Assessed through lipid profiles and inflammatory markers.", "implication": "Elevated LDL and inflammation create moderate risk.", "most_impactful_markers": [{ "key": "ldl_cholesterol", "name": "LDL Cholesterol", "flag": "high", "significance": "individually_significant" }] },
    { "key": "hormone_profile", "name": "Hormone Profile", "score": 71.0, "description": "Primary messengers in the body.", "deeper_explanation": "Key driver of energy, composition, and recovery.", "implication": "Testosterone normal but below optimal.", "most_impactful_markers": [] },
    { "key": "cellular_health", "name": "Cellular Health", "score": 78.2, "description": "The most basic working unit.", "deeper_explanation": "Energy production and repair efficiency.", "implication": "In good standing.", "most_impactful_markers": [] },
    { "key": "brain_chemistry", "name": "Brain Chemistry", "score": 82.5, "description": "Controls mental and physical performance.", "deeper_explanation": "Neurotransmitter precursors and nutrient availability.", "implication": "Performing well.", "most_impactful_markers": [] },
    { "key": "sleep", "name": "Sleep", "score": 88.0, "description": "Foundational pillar of performance.", "deeper_explanation": "How well biochemistry supports restorative sleep.", "implication": "In strong shape.", "most_impactful_markers": [] },
    { "key": "gut_health", "name": "Gut Health", "score": 85.0, "description": "Billions of microorganisms.", "deeper_explanation": "Inflammatory load and nutrient absorption.", "implication": "Strong position.", "most_impactful_markers": [] },
    { "key": "hydration", "name": "Hydration", "score": 90.1, "description": "Crucial for performance.", "deeper_explanation": "Electrolyte balance and kidney function.", "implication": "Excellent.", "most_impactful_markers": [] },
    { "key": "stress", "name": "Stress", "score": 76.4, "description": "Can facilitate growth when managed.", "deeper_explanation": "How the body copes with demands.", "implication": "Acceptable.", "most_impactful_markers": [] },
    { "key": "toxic_load", "name": "Toxic Load", "score": 88.7, "description": "Strains filtration processes.", "deeper_explanation": "Liver and kidney clearance.", "implication": "Functioning well.", "most_impactful_markers": [] }
  ],
  "biomarkers": [
    { "key": "vitamin_d_25_oh", "name": "Vitamin D, 25-OH", "result": 22.5, "unit": "ng/mL", "status": "out_of_range", "flag": "low", "ranges": { "optimal": "50 - 80 ng/mL", "normal": "30 - 100 ng/mL" }, "description": "Critical for calcium absorption, immune function, and muscle performance.", "explanation": "At 22.5 ng/mL, significantly below optimal.", "explanation_sources": ["Holick MF. N Engl J Med. 2007;357:266-281"], "functional_areas": [{ "key": "micronutrients", "score": 48.9 }, { "key": "resilience", "score": 62.5 }, { "key": "inflammation", "score": 55.8 }], "performance_goals": [{ "key": "endurance" }, { "key": "muscle_strength" }] },
    { "key": "magnesium_rbc", "name": "Magnesium, RBC", "result": 4.1, "unit": "mg/dL", "status": "out_of_range", "flag": "low", "ranges": { "optimal": "5.0 - 6.5 mg/dL", "normal": "4.2 - 6.8 mg/dL" }, "description": "Involved in 300+ enzymatic reactions.", "explanation": "Below optimal, impairs ATP production.", "explanation_sources": [], "functional_areas": [{ "key": "micronutrients", "score": 48.9 }], "performance_goals": [{ "key": "muscle_strength" }] },
    { "key": "ferritin", "name": "Ferritin", "result": 28, "unit": "ng/mL", "status": "out_of_range", "flag": "low", "ranges": { "optimal": "75 - 150 ng/mL", "normal": "30 - 400 ng/mL" }, "description": "Primary iron storage marker.", "explanation": "Depleted iron stores impair oxygen transport.", "explanation_sources": [], "functional_areas": [{ "key": "micronutrients", "score": 48.9 }, { "key": "energy", "score": 81.3 }], "performance_goals": [{ "key": "endurance" }] },
    { "key": "hs_crp", "name": "hs-CRP", "result": 3.8, "unit": "mg/L", "status": "out_of_range", "flag": "high", "ranges": { "optimal": "< 1.0 mg/L", "normal": "< 3.0 mg/L" }, "description": "Most reliable inflammation indicator.", "explanation": "Elevated systemic inflammation.", "explanation_sources": [], "functional_areas": [{ "key": "inflammation", "score": 55.8 }, { "key": "cardiovascular", "score": 65.3 }], "performance_goals": [{ "key": "endurance" }] },
    { "key": "ldl_cholesterol", "name": "LDL Cholesterol", "result": 158, "unit": "mg/dL", "status": "out_of_range", "flag": "high", "ranges": { "optimal": "< 100 mg/dL", "normal": "< 130 mg/dL" }, "description": "Primary cardiovascular risk factor.", "explanation": "Elevated, increases arterial plaque risk.", "explanation_sources": [], "functional_areas": [{ "key": "cardiovascular", "score": 65.3 }], "performance_goals": [{ "key": "endurance" }] },
    { "key": "hdl_cholesterol", "name": "HDL Cholesterol", "result": 58, "unit": "mg/dL", "status": "optimal", "flag": "ok", "ranges": { "optimal": "50 - 90 mg/dL", "normal": "40 - 100 mg/dL" }, "description": "Protective cholesterol.", "explanation": null, "explanation_sources": [], "functional_areas": [{ "key": "cardiovascular", "score": 65.3 }], "performance_goals": [] },
    { "key": "testosterone_total", "name": "Testosterone, Total", "result": 485, "unit": "ng/dL", "status": "normal", "flag": "ok", "ranges": { "optimal": "550 - 900 ng/dL", "normal": "264 - 916 ng/dL" }, "description": "Primary male sex hormone.", "explanation": "Normal but below optimal.", "explanation_sources": [], "functional_areas": [{ "key": "hormone_profile", "score": 71.0 }], "performance_goals": [{ "key": "muscle_strength" }] },
    { "key": "hemoglobin_a1c", "name": "Hemoglobin A1C", "result": 5.1, "unit": "%", "status": "optimal", "flag": "ok", "ranges": { "optimal": "4.0 - 5.3 %", "normal": "4.0 - 5.6 %" }, "description": "Average blood sugar control.", "explanation": null, "explanation_sources": [], "functional_areas": [{ "key": "cellular_health", "score": 78.2 }], "performance_goals": [{ "key": "fat_loss" }] },
    { "key": "tsh", "name": "TSH", "result": 1.8, "unit": "uIU/mL", "status": "optimal", "flag": "ok", "ranges": { "optimal": "1.0 - 2.5 uIU/mL", "normal": "0.45 - 4.5 uIU/mL" }, "description": "Thyroid function marker.", "explanation": null, "explanation_sources": [], "functional_areas": [{ "key": "hormone_profile", "score": 71.0 }], "performance_goals": [{ "key": "fat_loss" }] },
    { "key": "vitamin_b12", "name": "Vitamin B12", "result": 650, "unit": "pg/mL", "status": "optimal", "flag": "ok", "ranges": { "optimal": "500 - 1000 pg/mL", "normal": "232 - 1245 pg/mL" }, "description": "Essential for red blood cells and neurological function.", "explanation": null, "explanation_sources": [], "functional_areas": [{ "key": "micronutrients", "score": 48.9 }], "performance_goals": [{ "key": "cognitive_performance" }] }
  ],
  "ratios": [
    { "key": "total_cholesterol_hdl_ratio", "name": "Total Cholesterol / HDL Ratio", "result": 4.2, "unit": null, "status": "normal", "flag": "ok", "ranges": { "optimal": "< 3.5", "normal": "< 5.0" }, "components": ["total_cholesterol", "hdl_cholesterol"], "description": "Cardiovascular risk predictor.", "explanation": "Normal but above optimal.", "explanation_sources": [], "functional_areas": [{ "key": "cardiovascular", "score": 65.3 }] },
    { "key": "triglyceride_hdl_ratio", "name": "Triglyceride / HDL Ratio", "result": 1.4, "unit": null, "status": "optimal", "flag": "ok", "ranges": { "optimal": "< 2.0", "normal": "< 3.0" }, "components": ["triglycerides", "hdl_cholesterol"], "description": "Insulin resistance surrogate.", "explanation": null, "explanation_sources": [], "functional_areas": [{ "key": "cardiovascular", "score": 65.3 }] }
  ],
  "calculations": [
    { "key": "egfr", "name": "eGFR", "result": 105, "unit": "mL/min/1.73m²", "status": "optimal", "flag": "ok", "ranges": { "optimal": "> 90", "normal": "> 60" }, "components": ["creatinine"], "description": "Kidney function.", "explanation": null, "explanation_sources": [], "functional_areas": [{ "key": "toxic_load", "score": 88.7 }] },
    { "key": "homa_ir", "name": "HOMA-IR", "result": 1.8, "unit": null, "status": "normal", "flag": "ok", "ranges": { "optimal": "< 1.0", "normal": "< 2.5" }, "components": ["glucose_fasting", "insulin_fasting"], "description": "Insulin resistance estimate.", "explanation": "Normal but above optimal.", "explanation_sources": [], "functional_areas": [{ "key": "cellular_health", "score": 78.2 }] }
  ],
  "key_constraint": {
    "key": "micronutrient_deficiency",
    "name": "Micronutrient Deficiency",
    "what_is": "Critical vitamins and minerals fall below levels needed for optimal function.",
    "how_it_impacts_physiology": "Depleted stores force the body to triage resources, reducing energy, immune response, and recovery.",
    "how_it_impacts_performance": "Directly limits training adaptations, cognitive sharpness, and resilience to stress.",
    "symptoms": [
      { "text": "Persistent fatigue despite adequate sleep" },
      { "text": "Slow recovery between training sessions" },
      { "text": "Muscle cramps or tightness" },
      { "text": "Difficulty maintaining focus" },
      { "text": "Frequent illness or prolonged colds" }
    ],
    "related_biomarkers": [
      { "key": "vitamin_d_25_oh", "name": "Vitamin D, 25-OH", "flag": "low" },
      { "key": "magnesium_rbc", "name": "Magnesium, RBC", "flag": "low" },
      { "key": "ferritin", "name": "Ferritin", "flag": "low" }
    ],
    "impacted_functional_areas": [
      { "key": "micronutrients", "name": "Micronutrients", "score": 48.9 },
      { "key": "energy", "name": "Energy", "score": 81.3 },
      { "key": "resilience", "name": "Resilience", "score": 62.5 }
    ]
  },
  "recommendations": [
    { "type": "supplementation", "key": "vitamin_d3_supplement", "what": "Vitamin D3 Supplement", "how": "Take 5,000 IU daily with a fat-containing meal. Pair with K2 (MK-7, 100mcg).", "why": "Vitamin D at 22.5 ng/mL is significantly below optimal (50-80 ng/mL).", "priority": "key_constraint", "targets": [{ "type": "biomarker", "key": "vitamin_d_25_oh" }, { "type": "constraint", "key": "micronutrient_deficiency" }], "impact_functional_areas": [{ "key": "micronutrients" }, { "key": "resilience" }], "impact_performance_goals": [{ "key": "endurance" }], "sources": [{ "title": "Holick MF. Vitamin D deficiency.", "link": "https://pubmed.ncbi.nlm.nih.gov/17634462/" }] },
    { "type": "supplementation", "key": "magnesium_glycinate_supplement", "what": "Magnesium Glycinate Supplement", "how": "Take 400mg 30-60 min before bed.", "why": "RBC Magnesium at 4.1 mg/dL is below optimal.", "priority": "key_constraint", "targets": [{ "type": "biomarker", "key": "magnesium_rbc" }], "impact_functional_areas": [{ "key": "micronutrients" }, { "key": "sleep" }], "impact_performance_goals": [{ "key": "muscle_strength" }], "sources": [{ "title": "Magnesium and exercise", "link": "https://pubmed.ncbi.nlm.nih.gov/28986916/" }] },
    { "type": "nutrition", "key": "iron_rich_diet", "what": "Iron-Rich Dietary Protocol", "how": "2-3 servings/week of heme iron sources. Pair with Vitamin C.", "why": "Ferritin at 28 ng/mL indicates depleted iron stores.", "priority": "key_constraint", "targets": [{ "type": "biomarker", "key": "ferritin" }], "impact_functional_areas": [{ "key": "micronutrients" }, { "key": "energy" }], "impact_performance_goals": [{ "key": "endurance" }], "sources": [{ "title": "Iron bioavailability", "link": "https://pubmed.ncbi.nlm.nih.gov/20200263/" }] },
    { "type": "nutrition", "key": "anti_inflammatory_nutrition", "what": "Anti-Inflammatory Nutrition Protocol", "how": "Increase omega-3 to 3-4g EPA/DHA daily. Add turmeric, berries, leafy greens.", "why": "hs-CRP at 3.8 mg/L indicates elevated inflammation.", "priority": "biomarker", "targets": [{ "type": "biomarker", "key": "hs_crp" }], "impact_functional_areas": [{ "key": "inflammation" }, { "key": "cardiovascular" }], "impact_performance_goals": [{ "key": "endurance" }], "sources": [{ "title": "Omega-3 and inflammation", "link": "https://pubmed.ncbi.nlm.nih.gov/20500789/" }] },
    { "type": "lifestyle", "key": "zone_2_cardiovascular_training", "what": "Zone 2 Cardiovascular Training", "how": "3 sessions/week, 30-45 min at conversational effort (120-140 BPM).", "why": "Improves mitochondrial density and lipid profiles.", "priority": "biomarker", "targets": [{ "type": "biomarker", "key": "ldl_cholesterol" }], "impact_functional_areas": [{ "key": "cardiovascular" }, { "key": "inflammation" }], "impact_performance_goals": [{ "key": "endurance" }, { "key": "fat_loss" }], "sources": [{ "title": "Zone 2 and metabolic health", "link": "https://pubmed.ncbi.nlm.nih.gov/29934424/" }] }
  ],
  "created_at": "2026-03-08T14:30:00Z"
}
Production note: In production, this same response structure is returned with real lab data. The only differences: environment is "production", IDs don't have the _sb_ prefix, and data reflects actual bloodwork analyzed by VB's algorithm (~10 min processing).

Supported Biomarkers

Use these exact keys when submitting biomarker data. A full list is available at GET /v1/biomarkers. Common keys:

KeyNameCommon Unit
vitamin_d_25_ohVitamin D, 25-OHng/mL
ferritinFerritinng/mL
magnesium_rbcMagnesium, RBCmg/dL
hs_crphs-CRPmg/L
ldl_cholesterolLDL Cholesterolmg/dL
hdl_cholesterolHDL Cholesterolmg/dL
total_cholesterolTotal Cholesterolmg/dL
triglyceridesTriglyceridesmg/dL
testosterone_totalTestosterone, Totalng/dL
hemoglobin_a1cHemoglobin A1C%
tshTSHuIU/mL
vitamin_b12Vitamin B12pg/mL
glucose_fastingFasting Glucosemg/dL
insulin_fastingFasting InsulinuIU/mL
creatinineCreatininemg/dL
cortisolCortisolmcg/dL
estradiolEstradiolpg/mL
dhea_sDHEA-Smcg/dL

Unrecognized biomarker keys are ignored and returned in the unrecognized_biomarkers field of the order response.

Error Reference

All errors follow a consistent format:

Error Response
{
  "error": {
    "code": "error_code_here",
    "message": "Human-readable description of what went wrong."
  }
}
HTTP StatusCodeDescription
401authentication_requiredMissing or invalid API key
403forbiddenValid key but lacks permission
403production_not_approvedProduction access not yet approved
404order_not_foundOrder ID does not exist or belongs to another partner
404report_not_foundReport ID does not exist or belongs to another partner
404blood_draw_not_foundBlood draw ID does not exist or belongs to another partner
409report_not_readyReport still processing. Wait for webhook or poll order status.
422validation_errorRequest body failed validation
422invalid_test_scenarioUnknown test_scenario name
422invalid_panelUnknown panel tier
422no_data_providedNeither biomarkers nor pdf_url was provided
429rate_limit_exceededToo many requests. Retry after Retry-After header.
500internal_errorUnexpected server error

Rate Limits

EnvironmentLimitWindow
Sandbox1,000 requestsPer minute
Production100 requestsPer minute

Rate limit headers are included in every response:

Response Headers
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 1709913600

Going Live Checklist

Before requesting production access, verify your integration handles these scenarios:

To request production access, contact your Vitality Blueprint partner manager or email partners@vitalityblueprint.com.

Changelog

DateVersionChanges
2026-03-11v1.1.0-draftAdded biomarker submission flow, blood draw ordering (optional), PDF upload, supported biomarkers reference. Removed patterns (deprecated).
2026-03-08v1.0.0-draftInitial API specification (pre-release)
Have questions? Contact partners@vitalityblueprint.com