Send a clinical question and receive an AI-generated answer.
By default the response is a Server-Sent Events stream of flat JSON events with a type discriminator (text-delta, data-references, finish, …). See the streaming guide for the full event catalog. Set stream: false to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under vendor_metadata and echoes your request metadata unchanged.
Save the workflow-run-id event’s workflowRunId (streaming) or vendor_metadata.workflow_run_id (non-streaming) — you can use either to resume the stream via GET /api/chat/v2/stream/ if your connection drops.
Each cited reference includes: paperId, pmid, doi, title, journal, firstAuthor, year, studyTypes, evidenceTier, isGuideline, journalTier, citationCount, citationTrend, isLandmark, and isOpenAccess.
POST
/
api
/
chat
/
v2
cURL
curl -N -X POST https://www.verahealth.ai/api/chat/v2 \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "What is the first-line treatment for hypertension?",
"metadata": {
"source": "your-integration",
"thread_id": "thr_demo",
"message_id": "msg_001",
"user_id": "user_demo",
"timestamp": "2026-06-01T12:00:00Z"
}
}'
const metadata = {
source: 'your-integration',
thread_id: 'thr_demo',
message_id: 'msg_001',
user_id: 'user_demo',
timestamp: new Date().toISOString(),
};
const response = await fetch('https://www.verahealth.ai/api/chat/v2', {
method: 'POST',
headers: {
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
question: 'What is the first-line treatment for hypertension?',
metadata,
}),
});
if (!response.ok) {
throw new Error(`Request failed: ${response.status}`);
}
let workflowRunId = null;
let answer = '';
const reader = response.body.getReader();
const decoder = new TextDecoder();
let buffer = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const frames = buffer.split('\n\n');
buffer = frames.pop() ?? '';
for (const frame of frames) {
const line = frame.trim();
if (!line.startsWith('data: ')) continue;
const event = JSON.parse(line.slice(6));
switch (event.type) {
case 'workflow-run-id':
workflowRunId = event.workflowRunId; // save for reconnection
break;
case 'text-delta':
answer += event.delta;
break;
case 'data-references':
console.log('References:', event.data);
break;
case 'data-stop':
console.warn('Stopped:', event.data.message);
break;
case 'finish':
console.log('Done.');
break;
}
}
}
console.log('Answer:', answer);
import json
from datetime import datetime, timezone
import requests
url = 'https://www.verahealth.ai/api/chat/v2'
headers = {
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
}
payload = {
'question': 'What is the first-line treatment for hypertension?',
'metadata': {
'source': 'your-integration',
'thread_id': 'thr_demo',
'message_id': 'msg_001',
'user_id': 'user_demo',
'timestamp': datetime.now(timezone.utc).isoformat(),
},
}
with requests.post(url, headers=headers, json=payload, stream=True) as response:
response.raise_for_status()
workflow_run_id = None
answer = ''
for raw in response.iter_lines(decode_unicode=True):
if not raw or not raw.startswith('data: '):
continue
event = json.loads(raw[6:])
etype = event.get('type')
if etype == 'workflow-run-id':
workflow_run_id = event['workflowRunId'] # save for reconnection
elif etype == 'text-delta':
answer += event['delta']
elif etype == 'data-stop':
print('Stopped:', event['data']['message'])
elif etype == 'finish':
print('Done:', event)
print('Answer:', answer)
If true (default), the response is an SSE stream. If false, the response is a single JSON payload returned once the answer is complete.
Response
When stream is true (default), the response is a Server-Sent Events stream (Content-Type: text/event-stream). Each frame is data: {JSON}\n\n and carries a top-level type discriminator. See the streaming guide for the full event catalog.
When stream is false, the response is a single JSON payload (Content-Type: application/json) returned once the answer is fully generated. It carries your request metadata echoed byte-identical, and groups Vera-specific fields (references, progress, workflow_run_id, doi_reference_map, evidence_levels, suggested_questions) under vendor_metadata. See the application/json example below.
Streaming event types
Event
Description
thread-info
First event. Carries threadId and messageId.
workflow-run-id
Carries workflowRunId — save it to resume the stream.
text-start / text-delta / text-end
Answer text. Concatenate each delta to build the full markdown answer.
data-references
Cited papers with metadata.
data-evidence-levels
Map of paper_id / doi / pmid → EvidenceLevel (study type, Oxford level, strength assessment) for cited references. Emitted as evidence becomes available; may be emitted multiple times during a stream. See the EvidenceLevel schema.
data-doi-reference-map
Maps inline [1], [2] markers to DOI/PMID URLs. Last emission has isFinal: true.
data-stop
Vera declined the request. Branch on data.code: content_policy_stop or question_too_long. No answer text follows, but finish still arrives with status: "complete".
finish
Terminal event. Close the connection after this.
Response headers (streaming only)
Header
Description
x-thread-id
UUID of the thread created for this request.
x-message-id
UUID of the message being generated.
x-workflow-run-id
Run id — use it to resume via GET /api/chat/v2/stream/{runId}.
SSE stream of flat JSON events. Each event has a type discriminator. See the streaming guide for the full event catalog.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Vera Health API","colors":{"primary":"#1b779b","light":"#1b779b","dark":"#1b779b"},"logo":{"light":"https://mintcdn.com/verahealth/HD6VTjX99KEXZuHX/docs/logo/light.svg?fit=max\u0026auto=format\u0026n=HD6VTjX99KEXZuHX\u0026q=85\u0026s=049f1671d10aff9d90fc9bfd59b229e5","dark":"https://mintcdn.com/verahealth/HD6VTjX99KEXZuHX/docs/logo/dark.svg?fit=max\u0026auto=format\u0026n=HD6VTjX99KEXZuHX\u0026q=85\u0026s=bd7a88c24205ac440c4bedb01c8e87ed","href":"https://verahealth.ai"},"favicon":"https://mintlify.s3.us-west-1.amazonaws.com/verahealth/favicon.ico","api":{"playground":{}},"footer":{"socials":{"x":"https://x.com/verahealth","linkedin":"https://linkedin.com/company/vera-health"}},"search":{},"contextual":{"options":["copy"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"verahealth","hasAudioNarration":false,"actualSubdomain":"verahealth","customDomains":["docs.verahealth.ai"],"gitSource":{"type":"github","owner":"vera-health","repo":"verahealth","deployBranch":"main","contentDirectory":"apps/web","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae3e66af3259673132d1a01","collectionId":"03399ab6-86c0-4fa3-b2f9-84c25e5fa944","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae3e66af3259673132d1a01"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae3e66af3259673132d1a01","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Documentation","count":7},{"language":"default","tag":"API Reference","count":6},{"language":"default","tag":"Endpoints","count":6},{"language":"default","tag":"Chat API","count":3},{"language":"default","tag":"v2","count":3},{"language":"default","tag":"Agentic API (preview)","count":2},{"language":"default","tag":"Get Started","count":2},{"language":"default","tag":"v3","count":2},{"language":"default","tag":"v1","count":1}]},"assistantConfig":{"enableStarterQuestions":false},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles/globals.css","content":"@import 'tailwindcss';@import 'tw-animate-css';@import 'shadcn/tailwind.css';@import 'katex/dist/katex.min.css' layer(base);@import 'streamdown/styles.css' layer(base);@config '../tailwind.config.js';@layer base{[role=button]:not(:disabled),button:not(:disabled){cursor:pointer}}@layer base{*,::after,::backdrop,::before,::file-selector-button{border-color:var(--color-gray-200, currentcolor)}}@utility document-wave-dim{transition:opacity 200ms cubic-bezier(.23,1,.32,1)}@utility dash-v{width:1px;background-size:1px 16px;background-image:repeating-linear-gradient(to bottom,var(--dash, rgb(19 25 42 / 0.1)) 0 12px,transparent 12px 16px)}@utility dash-h{height:1px;background-size:16px 1px;background-image:repeating-linear-gradient(to right,var(--dash, rgb(19 25 42 / 0.1)) 0 12px,transparent 12px 16px)}@utility dash-flow-r{animation-direction:reverse}@utility fade-edges{mask-image:linear-gradient(to right,transparent,#000 var(--fade-l),#000 calc(100% - var(--fade-r)),transparent);animation-name:fade-l,fade-r;animation-duration:auto;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(self inline),scroll(self inline);animation-range:0 40px,calc(100% - 40px) 100%}@utility hatch-light{background-image:repeating-linear-gradient(135deg,rgb(255 255 255/.03) 0 .7px,transparent .7px 5.3px)}@utility hatch{background-image:repeating-linear-gradient(45deg,var(--hatch, rgb(19 25 42 / 0.08)) 0 1px,transparent 1px 7px)}@layer base{:root{--sat:env(safe-area-inset-top);--sar:env(safe-area-inset-right);--sab:env(safe-area-inset-bottom);--sal:env(safe-area-inset-left);--scrollbar-width:6px;--scrollbar-thumb:rgba(0, 0, 0, 0.2);--scrollbar-thumb-hover:rgba(0, 0, 0, 0.35);--scrollbar-track:transparent;--tool-panel-width:100vw;--tool-panel-push:0px;--accent-green:#7aaf2c;--accent-green-soft:#e5efdb;--brand:#416284;--background:oklch(1 0 0);--foreground:#13192a;--popover:oklch(1 0 0);--popover-foreground:#13192a;--primary:#13192a;--primary-foreground:oklch(0.985 0 0);--secondary:#f6f6fa;--secondary-foreground:#13192a;--muted:oklch(0.97 0 0);--muted-foreground:oklch(0.556 0 0);--accent:oklch(0.97 0 0);--accent-foreground:oklch(0.205 0 0);--destructive:oklch(0.577 0.245 27.325);--border:oklch(0.922 0 0);--input:oklch(0.922 0 0);--ring:oklch(0.708 0 0)}@media (min-width:768px){:root{--tool-panel-width:min(680px, 48vw)}:root[data-tool-panel-open]{--tool-panel-push:var(--tool-panel-width)}}:root[data-tool-panel-resizing]{user-select:none;-webkit-user-select:none}:root[data-tool-panel-resizing] *{cursor:col-resize!important;transition:none!important}.dark{--scrollbar-thumb:rgba(255, 255, 255, 0.2);--scrollbar-thumb-hover:rgba(255, 255, 255, 0.35);--background:oklch(0.145 0 0);--foreground:oklch(0.985 0 0);--popover:oklch(0.205 0 0);--popover-foreground:oklch(0.985 0 0);--primary:oklch(0.922 0 0);--primary-foreground:oklch(0.205 0 0);--secondary:oklch(0.269 0 0);--secondary-foreground:oklch(0.985 0 0);--muted:oklch(0.269 0 0);--muted-foreground:oklch(0.708 0 0);--accent:oklch(0.269 0 0);--accent-foreground:oklch(0.985 0 0);--destructive:oklch(0.704 0.191 22.216);--border:oklch(1 0 0 / 10%);--input:oklch(1 0 0 / 15%);--ring:oklch(0.556 0 0)}}@layer components{@keyframes documentWaveShimmer{to{transform:translateX(250%)}}@keyframes documentWaveErase{to{transform:translateX(100%)}}@keyframes documentWaveHold{to{transform:translateX(-100%)}}@keyframes documentWaveGlint{to{transform:translateX(283.34%)}}@keyframes documentWaveFade{to{opacity:0}}}@layer utilities{*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}::-webkit-scrollbar{width:var(--scrollbar-width);height:var(--scrollbar-width)}::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:10px}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}::-webkit-scrollbar-corner{background:0 0}.overflow-x-auto::-webkit-scrollbar,.scrollbar-hide::-webkit-scrollbar{display:none}@media (min-width:1024px){body{padding:0}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn{animation:fadeIn .5s ease-out forwards}@keyframes toolReveal{0%{opacity:0}to{opacity:1}}.animate-toolReveal{animation:toolReveal .3s ease-out forwards}@keyframes inquiryReveal{0%{grid-template-rows:0fr;opacity:0}to{grid-template-rows:1fr;opacity:1}}.animate-inquiryReveal{display:grid;grid-template-rows:1fr;animation:inquiryReveal .32s cubic-bezier(.22,.61,.36,1) forwards}@media (prefers-reduced-motion:reduce){.animate-inquiryReveal{animation:none}}@keyframes answerReveal{0%{opacity:0}to{opacity:1}}.animate-answerReveal{animation:answerReveal .4s ease-out forwards}@keyframes fadeInUp{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.prose blockquote{font-style:normal!important;font-weight:400!important;quotes:none!important}.animate-fadeInUp{animation:fadeInUp .2s ease-out forwards}@keyframes fadeInDown{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fadeInDown{animation:fadeInDown .2s ease-out forwards}@keyframes typing{0%{opacity:.5}to{opacity:1}}.animate-typing{animation:typing .5s infinite alternate}@keyframes typingDot{0%,60%,to{opacity:.25;transform:scale(.85)}30%{opacity:1;transform:scale(1)}}@keyframes stream-word-fade{0%{opacity:0}to{opacity:1}}.stream-word{animation:stream-word-fade .6s ease-out forwards}.ios-safe-sidebar{padding-top:calc(var(--sat) + 1rem)}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.landing-page-scroll-fix{min-height:100vh}.tiptap{outline:0}.template-editor table.template-table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.8125rem;table-layout:fixed}.template-editor .template-table td,.template-editor .template-table th{border:1px solid var(--color-gray-300);padding:.375rem .625rem;text-align:left;vertical-align:top;min-width:2rem}.template-editor .template-table th{font-weight:600;background:var(--color-gray-50)}.template-editor .template-table td p,.template-editor .template-table th p{margin:0}.template-editor .template-table .selectedCell{background:var(--color-blue-50)}.dark .template-editor .template-table td,.dark .template-editor .template-table th{border-color:var(--color-gray-600)}.dark .template-editor .template-table th{background:var(--color-gray-700)}.dark .template-editor .template-table .selectedCell{background:theme('colors.blue.900/30%')}.template-editor img{max-width:100%;height:auto;border-radius:6px;margin:.5rem 0}@keyframes bounceDown{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(25%);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes gradientSweep{0%{background-position:100% 0}to{background-position:-100% 0}}[cmdk-group-heading]{padding:8px 12px 4px;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--color-gray-400);user-select:none}[cmdk-group]+[cmdk-group]{border-top:1px solid var(--color-gray-100);margin-top:4px;padding-top:4px}[cmdk-item][data-selected=true]{background:theme('colors.gray.100/80%')}[cmdk-dialog] [cmdk-input]::placeholder{color:var(--color-gray-400)}[cmdk-dialog]>[cmdk-root]{width:100%;display:flex;justify-content:center}@keyframes drug-card-highlight-pulse{0%,to{transform:scale(1);outline-color:transparent}20%{transform:scale(1.008);outline-color:color-mix(in oklab,var(--brand) 50%,transparent)}60%{transform:scale(1);outline-color:color-mix(in oklab,var(--brand) 25%,transparent)}}.drug-card-highlight{animation:drug-card-highlight-pulse 1.2s cubic-bezier(.22,1,.36,1);border-radius:inherit;outline:2px solid transparent;outline-offset:-2px}@keyframes accent-shimmer-sweep{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes agent-step-shimmer{0%{background-position:150% 0}to{background-position:-150% 0}}.agent-skeleton-shimmer{background-image:linear-gradient(90deg,var(--muted) 0%,var(--muted) 35%,color-mix(in oklab,var(--muted-foreground) 14%,transparent) 50%,var(--muted) 65%,var(--muted) 100%);background-size:200% 100%;animation:agent-step-shimmer 1.8s ease-in-out infinite}@keyframes agent-vera-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(.8);opacity:.45}}.agent-vera-pulse{animation:agent-vera-pulse 2s ease-in-out infinite}@keyframes agent-caret-blink{50%{opacity:0}}.agent-caret-blink{animation:agent-caret-blink 1s step-end infinite}@keyframes agent-figure-draw{0%{stroke-dashoffset:48;opacity:1}55%,80%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}.agent-figure-draw{stroke-dasharray:48;animation:agent-figure-draw 1.8s ease-in-out infinite}.slide-glyph-grow-down,.slide-glyph-grow-x,.slide-glyph-grow-y,.slide-glyph-rise{transform-box:fill-box;animation-duration:450ms;animation-timing-function:cubic-bezier(.23,1,.32,1);animation-fill-mode:both}.slide-glyph-grow-x{transform-origin:left center;animation-name:slide-glyph-grow-x}.slide-glyph-grow-y{transform-origin:center bottom;animation-name:slide-glyph-grow-y}.slide-glyph-rise{animation-name:slide-glyph-rise}.slide-glyph-grow-down{transform-origin:center top;animation-name:slide-glyph-grow-y}@keyframes slide-glyph-grow-x{0%{transform:scaleX(.001)}}@keyframes slide-glyph-grow-y{0%{transform:scaleY(.001)}}@keyframes slide-glyph-rise{0%{opacity:0;transform:translateY(3px)}}@media (prefers-reduced-motion:reduce){.agent-caret-blink,.agent-figure-draw,.agent-skeleton-shimmer,.agent-vera-pulse,.slide-glyph-grow-down,.slide-glyph-grow-x,.slide-glyph-grow-y,.slide-glyph-rise{animation:none}}.agent-step-shimmer{background-image:linear-gradient(90deg,#9aa6b8 0,#9aa6b8 35%,#1f2a37 50%,#9aa6b8 65%,#9aa6b8 100%);background-size:200% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:agent-step-shimmer 1.8s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.agent-step-shimmer{animation:none;color:#4b5563;-webkit-text-fill-color:#4b5563}}@keyframes sd-dropIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){[data-sd-animate]{animation:none}}@keyframes hero-marquee{to{transform:translateX(calc(-50% - 1.25rem))}}@keyframes retrieve-drift{0%,to{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(-24px,-16px,0) scale(1.08)}}@keyframes tab-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes dash-flow{to{background-position:16px 16px}}@property --fade-l{syntax:'\u003clength>';inherits:false;initial-value:0}@property --fade-r{syntax:'\u003clength>';inherits:false;initial-value:40px}@keyframes fade-l{to{--fade-l:40px}}@keyframes fade-r{to{--fade-r:0px}}}@font-face{font-family:\"Carlito\";src:url(/fonts/slide-preview/Carlito-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:\"Carlito\";src:url(/fonts/slide-preview/Carlito-Bold.ttf) format(\"truetype\");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:\"Carlito\";src:url(/fonts/slide-preview/Carlito-Italic.ttf) format(\"truetype\");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:\"Carlito\";src:url(/fonts/slide-preview/Carlito-BoldItalic.ttf) format(\"truetype\");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:\"Caladea\";src:url(/fonts/slide-preview/Caladea-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:\"Caladea\";src:url(/fonts/slide-preview/Caladea-Bold.ttf) format(\"truetype\");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:\"Caladea\";src:url(/fonts/slide-preview/Caladea-Italic.ttf) format(\"truetype\");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:\"Caladea\";src:url(/fonts/slide-preview/Caladea-BoldItalic.ttf) format(\"truetype\");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:\"Liberation Sans\";src:url(/fonts/slide-preview/LiberationSans-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:\"Liberation Sans\";src:url(/fonts/slide-preview/LiberationSans-Bold.ttf) format(\"truetype\");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:\"Liberation Sans\";src:url(/fonts/slide-preview/LiberationSans-Italic.ttf) format(\"truetype\");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:\"Liberation Sans\";src:url(/fonts/slide-preview/LiberationSans-BoldItalic.ttf) format(\"truetype\");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:\"Liberation Serif\";src:url(/fonts/slide-preview/LiberationSerif-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:\"Liberation Serif\";src:url(/fonts/slide-preview/LiberationSerif-Bold.ttf) format(\"truetype\");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:\"Liberation Serif\";src:url(/fonts/slide-preview/LiberationSerif-Italic.ttf) format(\"truetype\");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:\"Liberation Serif\";src:url(/fonts/slide-preview/LiberationSerif-BoldItalic.ttf) format(\"truetype\");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:\"Liberation Mono\";src:url(/fonts/slide-preview/LiberationMono-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:\"Liberation Mono\";src:url(/fonts/slide-preview/LiberationMono-Bold.ttf) format(\"truetype\");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:\"Liberation Mono\";src:url(/fonts/slide-preview/LiberationMono-Italic.ttf) format(\"truetype\");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:\"Liberation Mono\";src:url(/fonts/slide-preview/LiberationMono-BoldItalic.ttf) format(\"truetype\");font-weight:700;font-style:italic;font-display:swap}"},{"filePath":"features/creator-program/components/creator-program.css","content":".vcc-root{--font-serif:var(--font-season), Georgia, serif;--font-display-alt:var(--font-jetbrains-mono), ui-monospace, monospace;--accent:#1b779b;--vera-cyan:#72d7ff;--grey-50:#f7fafc;--grey-300:#c0c9d5;--grey-400:#8090a6;--grey-500:#486081;--grey-600:#37475e;--grey-700:#364152;--grey-900:#222831;--ink:#22262d;--hero-dark:#2c3645;--bg-surface:#ffffff;--border-soft:#e4eaf2;--fw-light:300;--container:1200px;background:var(--bg-surface);color:var(--ink);font-family:var(--font-sans)}.vcc-root *,.vcc-root ::after,.vcc-root ::before{box-sizing:border-box}.vcc-root img{display:block}.vcc-root h1,.vcc-root h2,.vcc-root h3,.vcc-root h4{margin:0;color:var(--grey-900)}.vcc-root p{color:var(--grey-700);line-height:1.5}.vcc-root .eyebrow{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--grey-500)}.vcc-root .serif-accent{font-family:var(--font-serif);font-style:italic;font-weight:450;letter-spacing:-.01em;color:var(--grey-900)}.vcc-root ::selection{background:rgba(27,119,155,.18);color:var(--grey-900)}.vcc-root .container{max-width:var(--container);margin:0 auto;padding:0 32px}.vcc-root .container.narrow{max-width:820px}.vcc-root .section{padding:88px 0}.vcc-root .section.band{background:var(--grey-50);border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft)}.vcc-root .section-head{max-width:720px;margin:0 0 48px;display:flex;flex-direction:column;gap:12px}.vcc-root .section-head.is-center{margin-left:auto;margin-right:auto;text-align:center;align-items:center}.vcc-root .section-head h2{font-size:42px;font-weight:var(--fw-light);letter-spacing:-.018em;line-height:1.08;color:var(--grey-900)}.vcc-root .hero h1 .serif-accent,.vcc-root .section-head h2 .serif-accent{font-weight:450}.vcc-root .section-head p{margin:0;font-size:17px;line-height:1.55;color:var(--grey-500);max-width:640px}.vcc-root .hero{padding:80px 0 96px;position:relative;overflow:hidden}.vcc-root .hero-inner{max-width:800px;margin:0 auto;text-align:center;display:flex;flex-direction:column;align-items:center}.vcc-root .hero h1{font-size:60px;font-weight:var(--fw-light);line-height:1.04;letter-spacing:-.022em}.vcc-root .hero-sub{margin:22px auto 0;max-width:520px;font-size:18px;line-height:1.55;color:var(--grey-500)}.vcc-root .hero-chips,.vcc-root .hero-cta{display:flex;flex-wrap:wrap;justify-content:center}.vcc-root .hero-cta{gap:12px;margin-top:32px}.vcc-root .hero-chips{list-style:none;margin:32px 0 0;padding:0;gap:10px 22px}.vcc-root .hero-chips li{display:flex;align-items:center;gap:7px;font-size:13.5px;color:var(--grey-500)}.vcc-root .hero-chips svg{color:var(--accent);font-size:15px}.vcc-root .plat-tabs{margin-bottom:28px}.vcc-root .payout-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:28px;align-items:start}.vcc-root .tier-note{margin:0;padding:0 12px 12px;font-size:12.5px;color:var(--grey-400);line-height:1.5}.vcc-root .est-label{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--grey-400)}.vcc-root .est-readout{display:flex;align-items:center;gap:16px;margin:18px 0 22px}.vcc-root .est-pay,.vcc-root .est-reach,.vcc-root .rules-col ul{display:flex;flex-direction:column;gap:2px}.vcc-root .est-num{font-family:var(--font-display-alt);font-size:34px;font-weight:500;letter-spacing:-.02em;color:var(--grey-900);line-height:1}.vcc-root .est-num.accent{color:var(--accent)}.vcc-root .est-unit{font-size:12px;color:var(--grey-400)}.vcc-root .est-arrow{font-size:18px;color:var(--grey-300)}.vcc-root .est-foot{margin:18px 0 0;font-size:13px;color:var(--grey-500);line-height:1.55}.vcc-fm-body h3,.vcc-root .est-foot strong,.vcc-root .hero h1,.vcc-root .step h4{color:var(--grey-900)}.vcc-root .steps-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}.vcc-root .step-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.vcc-root .step-n{font-family:var(--font-display-alt);font-size:13px;font-weight:600;letter-spacing:.08em;color:var(--accent)}.vcc-root .step-top svg{font-size:22px;color:var(--grey-400)}.vcc-root .step h4{margin:0 0 8px;font-size:15.5px;font-weight:600;line-height:1.25}.vcc-root .idea-card p,.vcc-root .role-card p,.vcc-root .step p{margin:0;font-size:13px;line-height:1.55;color:var(--grey-500)}.vcc-root .idea-grid,.vcc-root .role-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.vcc-root .idea-card svg{font-size:26px;color:var(--accent)}.vcc-root .idea-card h4{margin:16px 0 8px;font-size:17px;font-weight:600;color:var(--grey-900)}.vcc-root .idea-card p,.vcc-root .role-card p{font-size:14px}.vcc-root .role-grid{gap:18px}.vcc-root .role-card{display:flex;gap:14px;align-items:flex-start}.vcc-root .comp-card h4,.vcc-root .role-card h4{margin:0 0 5px;font-size:15px;font-weight:600;color:var(--grey-900)}.vcc-root .role-card p{font-size:13px;line-height:1.5}.vcc-root .roles-foot{margin:24px 0 0}.vcc-fm-intro li,.vcc-root .roles-foot p{display:flex;gap:10px;color:var(--grey-700)}.vcc-root .roles-foot p{align-items:center;justify-content:center;margin:0;text-align:center;font-size:15px}.vcc-root .roles-foot svg{flex:0 0 auto}.vcc-root .comp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.vcc-root .comp-top{display:flex;align-items:center;gap:12px;margin-bottom:14px}.vcc-root .comp-card h4{margin:0 0 8px;font-size:18px}.vcc-fm-intro>p,.vcc-root .comp-card p{margin:0;font-size:14px;line-height:1.6;color:var(--grey-500)}.vcc-root .rules-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.vcc-root .rules-col h4{display:flex;align-items:center;gap:9px;margin:0 0 16px;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--grey-900)}.vcc-root .roles-foot svg,.vcc-root .rules-col h4 svg{font-size:18px;color:var(--accent)}.vcc-root .rules-col ul{list-style:none;margin:0;padding:0;gap:12px}.vcc-root .rules-col li{position:relative;padding-left:20px;font-size:14px;line-height:1.5;color:var(--grey-600)}.vcc-root .rules-col li::before{content:\"\";position:absolute;left:0;top:8px;width:7px;height:7px;border-radius:50%;background:color-mix(in srgb,var(--accent) 40%,var(--grey-300))}.vcc-root .handles-strip{margin-top:26px}.vcc-root .hs-row{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.vcc-root .hs-label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--grey-500);flex:0 0 auto}.vcc-fm-intro li svg,.vcc-root .hs-label svg{color:var(--accent);font-size:16px}.vcc-fm-intro ul,.vcc-root .hs-list{list-style:none;margin:0;padding:0;display:flex}.vcc-root .hs-list{flex-wrap:wrap;gap:10px 14px;flex:1}.vcc-root .hs-p{font-weight:600;color:var(--grey-900)}.vcc-root .hs-h{color:var(--accent);font-variant-numeric:tabular-nums}.vcc-root .submit{background:var(--hero-dark);padding:96px 0;position:relative;overflow:hidden}.vcc-root .submit::before{content:\"\";position:absolute;inset:0;background:radial-gradient(60% 70% at 50% -10%,color-mix(in srgb,var(--vera-cyan) 16%,transparent),transparent 60%);pointer-events:none}.vcc-root .submit-inner{position:relative;max-width:720px;margin:0 auto;text-align:center;color:#fff}.vcc-root .eyebrow.on-dark{color:var(--vera-cyan)}.vcc-root .submit-inner h2{font-size:44px;font-weight:var(--fw-light);letter-spacing:-.02em;line-height:1.08;color:#fff;margin:14px 0 0}.vcc-root .submit-inner h2 .serif-accent{color:#fff;font-weight:450}.vcc-root .submit-inner>p{font-size:17px;line-height:1.55;color:rgba(255,255,255,.72);max-width:560px;margin:18px auto 0}.vcc-root .submit-btns{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:34px 0 0}.vcc-root .submit-foot{margin:26px 0 0;font-size:13px;color:rgba(255,255,255,.5)}.vcc-fm{--accent:#1b779b;--grey-500:#486081;--grey-700:#364152;--grey-900:#222831;--fw-light:300;font-family:var(--font-sans),ui-sans-serif,system-ui,sans-serif}.vcc-fm-progress{padding:8px 32px 0 0}.vcc-fm-body{padding-top:14px}.vcc-fm-body h3{margin:0 0 18px;font-size:23px;font-weight:var(--fw-light);letter-spacing:-.015em}.vcc-fm-intro{padding-top:4px}.vcc-fm-eyebrow{font-size:11px;font-weight:700;letter-spacing:.12em;color:var(--accent)}.vcc-fm-intro h3{margin:12px 0;font-size:28px}.vcc-fm-intro>p{margin:0 0 18px;font-size:15px}.vcc-fm-intro ul{flex-direction:column;gap:11px}.vcc-fm-intro li{align-items:flex-start;font-size:14px;line-height:1.45}.vcc-fm-intro li svg{margin-top:2px;flex:0 0 auto}.vcc-fm-regions{margin:36px 0 12px}.vcc-ff,.vcc-fm-fields{display:flex;flex-direction:column;gap:16px}.vcc-ff{gap:8px}.vcc-ff-label{font-size:14px;font-weight:500;color:var(--grey-900)}.vcc-ff-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.vcc-fm-error{margin-top:12px}@media (max-width:1000px){.vcc-root .idea-grid,.vcc-root .role-grid,.vcc-root .rules-grid,.vcc-root .steps-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:880px){.vcc-root .comp-grid,.vcc-root .payout-layout{grid-template-columns:1fr}.vcc-root .hero h1{font-size:46px}.vcc-root .section-head h2{font-size:34px}}@media (max-width:600px){.vcc-root .container{padding:0 20px}.vcc-root .section{padding:60px 0}.vcc-root .idea-grid,.vcc-root .role-grid,.vcc-root .rules-grid,.vcc-root .steps-grid{grid-template-columns:1fr}.vcc-root .hero h1{font-size:38px}}@media (max-width:520px){.vcc-ff-row{grid-template-columns:1fr}}"},{"filePath":"features/marketing/components/books/BookPageTabs.module.css","content":".anchor,.overlay{position:absolute;pointer-events:none}.overlay{inset:0;container-type:inline-size}.anchor{transform-origin:50% 50%;height:0}.anchor:focus-within{z-index:1}.target{--target-size:44px;--flag-height:clamp(5px, 1.27cqw, 10px);--flag-turn:-0.5deg;--flag-shape:polygon(0 65%, 100% 40%, 100% 70%, 0 100%);--target-offset:-50%;--paper-anchor:50%;position:absolute;top:0;left:50%;display:flex;width:max(100%,var(--target-size));min-width:var(--target-size);pointer-events:auto;touch-action:manipulation;transform:translate(-50%,var(--target-offset))}.target[data-target-side=above]{--target-offset:-100%;--paper-anchor:100%}.target[data-target-side=below]{--target-offset:calc(0px - var(--flag-height) - 8px);--paper-anchor:calc(var(--flag-height) + 8px)}.target:has(:focus-visible){--flag-turn:-2.25deg;--flag-shape:polygon(0 5%, 100% 5%, 100% 70%, 0 100%)}.hit{position:relative;display:block;width:100%;height:var(--target-size)}.paper{position:absolute;left:50%;top:calc(var(--paper-anchor) - var(--flag-height));width:var(--flag-width);height:var(--flag-height);margin-left:calc(var(--flag-width)/-2);overflow:hidden;pointer-events:none;background:linear-gradient(100deg,#d9c578 0,#eddda0 18%,#f3e6af 66%,#e3cf8b 100%);box-shadow:inset 0 .5px 0 rgb(255 255 239/65%),inset 0 -.6px 0 rgb(111 86 39/35%);filter:drop-shadow(0 .6px .5px rgb(45 37 21/20%));clip-path:var(--flag-shape);transform:rotate(var(--flag-turn));transform-origin:0 100%;transition:transform 220ms cubic-bezier(.22,1,.36,1),clip-path 240ms cubic-bezier(.22,1,.36,1)}.paper::before{content:\"\";position:absolute;inset:0;background:repeating-linear-gradient(112deg,transparent 0 1px,rgb(116 88 41/4%) 1px 2px,transparent 2px 4px)}.paper::after{content:\"\";position:absolute;top:8%;right:0;width:9%;height:62%;background:linear-gradient(135deg,rgb(255 251 208/60%),rgb(167 137 72/16%));clip-path:polygon(0 0,100% 100%,0 100%)}@media (min-width:1024px) and (pointer:fine){.target{--target-size:32px}}@media (hover:hover) and (pointer:fine){.target:hover{--flag-turn:-2.25deg;--flag-shape:polygon(0 5%, 100% 5%, 100% 70%, 0 100%)}}.target[data-pinned=true]{--flag-turn:-3deg;--flag-shape:polygon(0 0, 100% 0, 100% 75%, 0 100%)}@media (prefers-reduced-motion:reduce){.paper{transition:none}}"},{"filePath":"features/marketing/components/books/BookProcessFlow.module.css","content":".flow{width:100%;max-width:1224px;margin:32px auto 0;padding-top:48px}.grid{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;gap:40px}.card{position:relative;min-width:0;width:100%;max-width:480px}@media (min-width:1024px){.flow{margin-top:24px;padding-top:112px}.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.card{max-width:none}}"},{"filePath":"features/marketing/components/books/BookScrollScene.module.css","content":".track{position:relative;margin-top:48px}.board,.runway,.scene{position:relative}.scene{padding:0 16px}.board{width:100%;max-width:789px;aspect-ratio:789/350;margin:0 auto}.artwork{display:block;width:100%;height:100%;overflow:visible;user-select:none;pointer-events:none}.shelf{position:relative;margin:0 auto;width:min(100%,1274px);height:1px;background:#e7e8ea}.headingGap{height:40px}.intro{position:relative;margin:20px auto 0;max-width:760px;padding:0 16px;text-align:center}@media (min-width:1024px){.track{margin-top:64px}.scene{padding:0 24px}}@media (min-width:1024px) and (min-height:640px) and (pointer:fine) and (prefers-reduced-motion:no-preference){.runway[data-motion=true]{height:611px}.runway[data-motion=true] .scene{position:sticky;top:clamp(88px,12svh,130px)}}"},{"filePath":"features/marketing/components/hero/CalcCardPreview.module.css","content":"@keyframes score-update{0%{opacity:.5;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.card{display:grid;grid-template-rows:36px minmax(0,1fr) 32px;box-sizing:border-box;width:100%;height:100%;overflow:hidden;border:1px solid #dfe4ea;border-radius:6px;background:#fff;color:#111827;font-family:var(--font-sans),Arial,sans-serif;text-align:left;box-shadow:0 2px 5px rgb(17 24 39/.04)}.headerRow{display:flex;border-bottom:1px solid #edf0f4}.header{display:flex;align-items:center;align-self:stretch;gap:5px;width:100%;padding:0 8px;color:#111827;cursor:pointer;text-align:left;transition:background-color 140ms ease}.header:hover{background:#f6fafc}.icon{display:grid;flex:0 0 19px;height:21px;place-items:center;border:1px solid #dfe8ed;border-radius:4px;background:linear-gradient(135deg,#eaf4f8,#dceaf2)}.heading{min-width:0}.title{font-size:10px;font-weight:650;line-height:14px;letter-spacing:-.25px;white-space:nowrap}.inputs,.row{display:grid;min-height:0}.inputs{padding:2px 8px}.row{grid-template-columns:minmax(0,1fr) 84px;align-items:center;gap:3px}.row+.row{border-top:1px solid #f0f2f5}.label{font-size:7px;font-weight:500;line-height:8.5px}.options{display:flex;align-items:stretch;gap:1px;height:20px;padding:1px;border:1px solid #e5e7eb;border-radius:4px;background:#f8fafb}.option,.optionCell{display:flex;flex:1 1 0;min-width:0}.option{flex:1 1 auto;align-items:center;align-self:stretch;justify-content:center;gap:2px;border-radius:2px;color:#667080;font-size:7.5px;font-weight:500;line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums}.option[data-selected]{background:#111827;color:#fff;box-shadow:0 1px 2px rgb(17 24 39/.06)}.points{font-size:5.5px;opacity:.6}.result{display:flex;align-items:center;justify-content:space-between;gap:5px;padding:0 8px;border-top:1px solid #e5e7eb;background:#f8fafb}.resultLabel{color:#667080;font-size:6.5px;font-weight:500;line-height:10px}.resultValue{display:flex;align-items:baseline;gap:3px}.score{font-size:19px;font-weight:400;line-height:1;letter-spacing:-.8px;font-variant-numeric:tabular-nums}.unit{color:#788291;font-size:5.5px}.option{padding:0;cursor:pointer;transition:background-color 140ms ease,color 140ms ease,box-shadow 140ms ease}.option:not([data-selected]):hover{background:#e8eff4;color:#111827}.score>span{display:inline-block;animation:score-update 180ms ease-out}@media (prefers-reduced-motion:reduce){.header,.option{transition:none}.score>span{animation:none}}"},{"filePath":"features/marketing/components/hero/HeroBooks.module.css","content":".frame{position:relative;width:158px;height:227px;pointer-events:none;perspective:700px;clip-path:inset(-1px 0 -1px 0)}.closedBook,.journal,.openBook{position:absolute;bottom:-1px}.closedImage,.journalImage,.openImage{width:100%;height:100%}.openBook{z-index:1;transform-origin:50% 100%}.openCover,.openLeaf,.openPages{position:absolute;inset:0;pointer-events:none}.openLeaf{transform-origin:33% 100%}.openCover{transform-origin:100% 100%;backface-visibility:hidden}.pageMarker{position:absolute;z-index:2;left:-9px;top:28%;display:flex;width:32px;height:32px;pointer-events:auto;touch-action:manipulation}.pageMarker[data-hidden=true]{pointer-events:none;visibility:hidden}.markerHit{position:relative;align-self:stretch;width:100%}.markerPaper{position:absolute;left:4px;top:calc(50% - 3.5px);width:17px;height:7px;border-radius:.4px .3px .7px .4px;background:repeating-linear-gradient(91deg,transparent 0 2px,#9b84350a 2px 2.5px),linear-gradient(100deg,#f8e9ae 0,#f1dfa0 68%,#d6bf79 100%);box-shadow:0 .35px .3px #fff8d9 inset,0 .7px .8px #34281729;transform:rotate(-3deg);transform-origin:100% 50%;transition:transform 700ms cubic-bezier(.25,1,.5,1),box-shadow 700ms ease;pointer-events:none}.markerPaper::after{position:absolute;top:0;left:0;width:2.3px;height:2px;background:linear-gradient(145deg,#fff3c3,#e7d393);clip-path:polygon(0 0,100% 0,0 100%);content:\"\"}@media (hover:hover){.pageMarker:hover .markerPaper{transform:translateX(-1px) rotate(-5deg);box-shadow:0 .35px .3px #fff8d9 inset,0 1px 1.2px #34281729}}.pageMarker button[aria-pressed=true] .markerPaper{transform:translateX(-4px) rotate(-9deg);box-shadow:0 .35px .3px #fff8d9 inset,0 1.2px 1.4px #34281729}@media (pointer:coarse){.pageMarker{width:44px;height:44px}}.frame[data-reduce-motion=true] .markerPaper{transition:none}@media (prefers-reduced-motion:reduce){.markerPaper{transition:none}}"},{"filePath":"features/marketing/components/hero/HeroCalculator.module.css","content":".frame{width:158px;height:227px;pointer-events:auto}.surface{width:100%;height:100%}"},{"filePath":"features/marketing/components/hero/HeroGuideline.module.css","content":".frame{position:relative;width:208px;height:277px;pointer-events:none}.surface{position:absolute;left:24px;top:24px;width:160px;height:229px;pointer-events:auto;user-select:none;-webkit-user-select:none;touch-action:pan-y;transform-origin:left bottom;transition:transform 220ms cubic-bezier(.22,1,.36,1);cursor:url(/hero/highlighter-cursor.svg) 9 40,text;outline:0}@media (hover:hover) and (pointer:fine){.surface:focus-visible,.surface:hover,.surface[data-dragging=true]{transform:translateY(-1px)}}.surface:focus-visible{outline:1px solid #a3aab8;outline-offset:4px}.paper{position:absolute;left:-24px;top:-24px;pointer-events:none}.drugFrame,.drugFrame .surface{width:158px;height:227px}.drugFrame .surface{left:0;top:0}.drugFrame .paper{left:0;top:0}.drugFrame .tools{left:auto;right:0;top:235px}.tools{position:absolute;left:24px;top:261px;display:flex;align-items:center;gap:12px;white-space:nowrap;opacity:0;transform:translateY(-3px);transition:opacity 180ms ease,transform 180ms ease}.frame:focus-within .tools,.frame:hover .tools{opacity:1;transform:translateY(0)}.hint{display:inline-flex;align-items:center;gap:6px;color:#636976;font-size:10px;line-height:20px;letter-spacing:.01em}.hint i{width:10px;height:6px;background:#f9de4b;transform:skewX(-12deg);border-radius:1px}.clear{display:flex;pointer-events:auto}@media (prefers-reduced-motion:reduce){.surface,.tools{transition:none}.surface:focus-visible,.surface:hover,.surface[data-dragging=true]{transform:none}}"},{"filePath":"features/marketing/components/home/BenchmarkSection.module.css","content":".section{position:relative;scroll-margin-top:56px;background:#fff;color:#13192a}.edges,.panel{margin-inline:auto}.edges{position:absolute;inset:0;width:min(calc(100% - 16px),1272px);pointer-events:none}.panel{position:relative;display:flex;flex-direction:column;width:min(100%,1272px);padding:56px 24px 64px}.header{max-width:840px}.start{display:block;height:0;flex:none}.viewport{display:flex;flex:1;flex-direction:column;min-height:0}.eyebrow{margin-bottom:16px;font-family:var(--font-geist-mono),monospace;font-size:11px;line-height:1.5;letter-spacing:.09em;text-transform:uppercase;color:#737984}.heading{font-family:var(--font-season),Georgia,serif;font-size:clamp(34px,3.3vw,48px);line-height:1.1;letter-spacing:-.035em;text-wrap:balance}.body{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:clamp(40px,5vw,72px);align-items:center;margin-top:40px}.perspectives{min-width:0}.quotes{display:grid;gap:56px}.quote{margin:0}.quoteText{position:relative;padding-top:38px;font-family:var(--font-sans),sans-serif;font-size:clamp(22px,1.8vw,26px);font-weight:400;line-height:1.45;letter-spacing:-.01em;text-wrap:pretty}.quoteMark{position:absolute;top:-8px;left:-3px;color:#b8bdc5;font-family:var(--font-season),Georgia,serif;font-size:84px;line-height:1}.attribution{display:grid;gap:6px;margin-top:28px}.author{font-size:15px;font-weight:500;line-height:1.45}.role{max-width:460px;font-size:13px;line-height:1.5;color:#6c7280}.sourceLink{display:inline-flex;align-items:center;gap:18px;margin-top:30px;padding-block:8px;font-size:13px;border-bottom:1px solid #cbd0d5}.sourceLink svg{width:18px;height:18px;stroke:currentColor;stroke-width:1.25}.sourceLink:hover{border-color:currentColor}.sourceLink:focus-visible{outline:2px solid #13192a;outline-offset:6px}.chart{position:relative;margin:0;min-width:0}.metric{max-width:440px;margin-bottom:30px;font-family:var(--font-geist-mono),monospace;font-size:10px;line-height:1.6;letter-spacing:.04em;color:#6c7280}.scores{display:grid;gap:22px}.scoreLabel{display:flex;align-items:center;justify-content:space-between;gap:16px}.model{display:inline-flex;align-items:center;gap:12px;font-size:15px;line-height:1.3}.logo{display:grid;place-items:center;width:28px;height:30px;flex:0 0 28px}.logo img{width:auto;height:auto;max-width:28px;max-height:30px}.score{font-size:22px;line-height:1;letter-spacing:-.045em;font-variant-numeric:tabular-nums}.percent{margin-left:3px;font-size:.64em;letter-spacing:0}.leadRow{margin-bottom:7px}.leadRow .score{font-size:46px;font-weight:500}.leadRow .model{font-size:17px}.leadRow .logo{width:32px;flex-basis:32px}.leadRow .logo img{max-width:36px;max-height:36px}.track{height:10px;margin-top:13px;background:#f0f1f3}.bar{height:100%;width:var(--score);transform-origin:left center;background:#9099a6}.leadRow .track{height:14px;margin-top:17px}.leadRow .bar,.legendBetter::before{background:#1b2c42}.peerRow{color:#656d7b}.peerRow .logo{filter:grayscale(1);opacity:.7}.modelIdentity{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:8px;row-gap:2px}.modelVersion{font-size:11px;color:#7b818c;letter-spacing:0}.comparisons{display:grid;gap:48px}.comparisonChart{min-width:0;margin:0}.comparisonHeading{display:grid;gap:6px;margin-bottom:26px}.benchmarkName{font-family:var(--font-season),Georgia,serif;font-size:29px;line-height:1.15;letter-spacing:-.02em}.comparisonHeading .metric{margin:0}.metricHighlight{font-weight:600;color:#13192a}.benchmarkSource{color:#656d7b;text-decoration:underline;text-underline-offset:3px}.benchmarkSource:hover{color:#13192a}.benchmarkSource:focus-visible{outline:2px solid #13192a;outline-offset:4px}.section[data-benchmark-ready] .comparisons{gap:0}.section[data-benchmark-ready] .comparisonChart{grid-area:1/1;align-self:center;visibility:hidden;opacity:0;pointer-events:none}.section[data-benchmark-ready][data-benchmark-stage=\"0\"] .comparisonChart:first-child,.section[data-benchmark-ready][data-benchmark-stage=\"1\"] .comparisonChart:nth-child(2){visibility:visible;opacity:1;pointer-events:auto}.quoteControls button,.sample{font-family:var(--font-geist-mono),monospace}.sample{margin-top:28px;padding-top:17px;border-top:1px solid #e3e5e8;font-size:10px;line-height:1.7;color:#7b818c}.chartContext{margin-top:24px;font-size:15px;line-height:1.65;color:#737a86}.introduction{max-width:500px;font-size:18px;line-height:1.6}.navigation{display:none}.quoteControls{display:flex;gap:6px}.quoteControls button{display:grid;place-items:center;width:40px;height:40px;padding:0;border-radius:50%;font-size:11px;color:#808792;transition:color 180ms ease,background-color 180ms ease}.quoteControls button[aria-pressed=true]{background:#13192a;color:#fff}.quoteControls button:focus-visible{outline:2px solid #13192a;outline-offset:3px}.section[data-benchmark-ready] .quotes{gap:0}.section[data-benchmark-ready] .quote{grid-area:1/1;align-self:center;opacity:0;pointer-events:none}.section[data-benchmark-ready][data-benchmark-stage=\"0\"] .quote:first-child,.section[data-benchmark-ready][data-benchmark-stage=\"1\"] .quote:nth-child(2){opacity:1;pointer-events:auto}.section[data-benchmark-ready] .navigation{display:flex;align-items:center;margin-top:28px}.section:not([data-benchmark-motion]) .progress,.section:not([data-benchmark-motion]) .scrollHint,.section:not([data-benchmark-motion]) .stage{display:none}@media (min-width:1024px){.section[data-benchmark-ready][data-benchmark-comparisons] .perspectives{grid-area:1/1}.section[data-benchmark-ready][data-benchmark-comparisons] .chart{grid-area:1/2}.section[data-benchmark-ready][data-benchmark-comparisons][data-benchmark-stage=\"0\"] .body{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}.section[data-benchmark-ready][data-benchmark-comparisons][data-benchmark-stage=\"0\"] .perspectives{grid-column:2}.section[data-benchmark-ready][data-benchmark-comparisons][data-benchmark-stage=\"0\"] .chart{grid-column:1}.section[data-benchmark-motion][data-benchmark-comparisons][data-benchmark-stage=\"0\"] .comparisonChart:nth-child(2),.section[data-benchmark-motion][data-benchmark-comparisons][data-benchmark-stage=\"0\"] .quote:nth-child(2),.section[data-benchmark-motion][data-benchmark-comparisons][data-benchmark-stage=\"1\"] .comparisonChart:first-child,.section[data-benchmark-motion][data-benchmark-comparisons][data-benchmark-stage=\"1\"] .quote:first-child{transition:none}}@media (prefers-reduced-motion:no-preference){.section[data-benchmark-motion] .comparisonChart{transform:translateY(-8px);transition:opacity 140ms ease,transform 140ms ease,visibility 0s 140ms}.section[data-benchmark-motion] .comparisonChart:nth-child(2),.section[data-benchmark-motion] .quote:nth-child(2){transform:translateY(12px)}.section[data-benchmark-motion][data-benchmark-stage=\"0\"] .comparisonChart:first-child,.section[data-benchmark-motion][data-benchmark-stage=\"1\"] .comparisonChart:nth-child(2){transform:translateY(0);transition:opacity 300ms 160ms ease,transform 400ms 160ms cubic-bezier(.22,1,.36,1),visibility 0s}.section[data-benchmark-motion]{height:calc(230svh - 56px)}.section[data-benchmark-motion] .panel{position:sticky;top:56px;height:calc(100svh - 56px);padding-block:clamp(28px,4.6svh,56px) 26px}.section[data-benchmark-motion] .body{flex:1;margin-top:20px;padding-block:12px 24px}.section[data-benchmark-motion] .quotes{gap:0}.section[data-benchmark-motion] .quote{grid-area:1/1;align-self:center;opacity:0;transform:translateY(-8px);transition:opacity 140ms ease,transform 140ms ease}.section[data-benchmark-stage=\"0\"] .quote:first-child,.section[data-benchmark-stage=\"1\"] .quote:nth-child(2){opacity:1;transform:translateY(0);transition:opacity 300ms 160ms ease,transform 400ms 160ms cubic-bezier(.22,1,.36,1)}.section[data-benchmark-motion]:not([data-benchmark-comparisons]) .peerRow{opacity:0;transform:translateY(8px);transition:opacity 140ms ease,transform 180ms ease}.section[data-benchmark-motion]:not([data-benchmark-comparisons]) .peerRow .bar{transform:scaleX(0);transition:transform 180ms ease}.section[data-benchmark-stage=\"1\"]:not([data-benchmark-comparisons]) .peerRow{opacity:1;transform:none;transition:opacity 360ms var(--row-delay, 180ms) ease,transform 480ms var(--row-delay, 180ms) cubic-bezier(.22,1,.36,1)}.section[data-benchmark-stage=\"1\"]:not([data-benchmark-comparisons]) .peerRow:nth-child(3){--row-delay:230ms}.section[data-benchmark-stage=\"1\"]:not([data-benchmark-comparisons]) .peerRow:nth-child(4){--row-delay:280ms}.section[data-benchmark-stage=\"1\"]:not([data-benchmark-comparisons]) .peerRow .bar{transform:scaleX(1);transition:transform 580ms var(--row-delay, 180ms) cubic-bezier(.22,1,.36,1)}.section[data-benchmark-motion] .chartContext{position:absolute;top:178px;left:0;right:24px;max-width:405px;margin:0;opacity:0;transform:translateY(-6px);transition:opacity 140ms ease,transform 140ms ease}.section[data-benchmark-stage=\"0\"] .chartContext{opacity:1;transform:none;transition:opacity 300ms 180ms ease,transform 350ms 180ms ease}.section[data-benchmark-motion] .navigation{display:flex;align-items:center;margin-top:0;gap:22px;font-family:var(--font-geist-mono),monospace;font-size:10px;line-height:1.5;color:#8b9099}.stage{position:relative;display:flex;align-items:center;gap:10px}.stageDivider{width:15px;height:1px;background:#c4c8ce;transform:rotate(-55deg)}.firstNumber{color:#13192a}.secondNumber{position:absolute;left:0;color:#13192a}.progress{position:relative;width:80px;height:1px;background:#e1e3e7}.progress span{display:block;width:100%;height:100%;background:#13192a;transform-origin:left;transform:scaleX(var(--story-progress, 0))}.scrollHint{position:relative;display:grid;grid-template-columns:auto 16px;gap:12px;align-items:center;margin-left:auto}.firstHint,.secondHint{grid-area:1/1;text-align:right}.firstHint,.firstNumber,.secondHint,.secondNumber{opacity:0;transition:opacity 100ms ease}.section[data-benchmark-stage=\"0\"] .firstHint,.section[data-benchmark-stage=\"0\"] .firstNumber,.section[data-benchmark-stage=\"1\"] .secondHint,.section[data-benchmark-stage=\"1\"] .secondNumber{opacity:1;transition-delay:160ms}.scrollHint svg{grid-column:2;width:14px;height:14px;stroke:#777e88;stroke-width:1}}@media (max-width:1023px){.panel{padding:48px 24px 56px}.body{grid-template-columns:1fr;gap:32px;margin-top:32px}.heading{max-width:660px}.quoteText{font-size:clamp(22px,3.2vw,26px)}.quotes{gap:42px}.quote+.quote{padding-top:30px;border-top:1px solid #e3e5e8}.chart{order:-1;max-width:620px;width:100%}.metric{font-size:10px}}@media (min-width:1024px) and (max-height:820px){.heading{font-size:38px;max-width:700px}.eyebrow{margin-bottom:10px}.quoteText{font-size:clamp(22px,1.8vw,26px);line-height:1.4;padding-top:32px}.attribution{margin-top:20px}.metric{margin-bottom:22px}.scores{gap:17px}.sample{margin-top:20px;padding-top:13px}}@media (max-width:479px){.panel{padding-inline:20px}.heading{font-size:34px}.leadRow .score{font-size:40px}.sample{font-size:9px}}@media (max-width:639px){.edges{width:100%}}@media (min-width:1024px){.section[data-benchmark-motion] .quoteControls{display:none}}@media (max-width:1023px){.section[data-benchmark-ready] .quote+.quote{padding-top:0;border:0}.section[data-benchmark-ready] .chartContext{font-size:13px}.section[data-benchmark-ready] .heading{font-size:clamp(30px,5.8vw,38px)}.section[data-benchmark-ready] .metric{margin-bottom:13px;font-size:9px}.section[data-benchmark-ready] .scores{gap:12px}.section[data-benchmark-ready] .leadRow{margin-bottom:0}.section[data-benchmark-ready] .leadRow .score{font-size:34px}.section[data-benchmark-ready] .leadRow .model{font-size:15px}.section[data-benchmark-ready] .score{font-size:19px}.section[data-benchmark-ready] .model{font-size:13px;gap:9px}.section[data-benchmark-ready] .modelVersion{font-size:10px}.section[data-benchmark-ready] .comparisonHeading{margin-bottom:16px;gap:4px}.section[data-benchmark-ready] .comparisonHeading .metric{margin-bottom:0}.section[data-benchmark-ready] .benchmarkName{font-size:25px}.section[data-benchmark-ready] .logo{width:23px;height:24px;flex-basis:23px}.section[data-benchmark-ready] .logo img{max-width:22px;max-height:24px}.section[data-benchmark-ready] .leadRow .logo img{max-width:29px;max-height:29px}.section[data-benchmark-ready] .track{height:6px;margin-top:8px}.section[data-benchmark-ready] .leadRow .track{height:9px;margin-top:10px}.section[data-benchmark-ready] .sample{margin-top:14px;padding-top:11px;font-size:9px}.section[data-benchmark-ready] .quoteText{font-size:clamp(20px,4.8vw,24px);padding-top:26px;line-height:1.4}.section[data-benchmark-ready] .quoteMark{font-size:64px;top:-7px}.section[data-benchmark-ready] .attribution{margin-top:18px;gap:4px}.section[data-benchmark-ready] .author{font-size:13px}.section[data-benchmark-ready] .role{font-size:11px;line-height:1.5}.section[data-benchmark-ready] .sourceLink{margin-top:16px;font-size:12px;padding-block:6px}.section[data-benchmark-motion] .panel{position:relative;top:auto;height:100%;padding-top:32px;padding-bottom:0}.section[data-benchmark-motion] .header{padding-bottom:28px}.section[data-benchmark-motion] .viewport{position:sticky;top:56px;height:calc(100svh - 56px);flex:none;padding-block:20px 12px}.section[data-benchmark-motion] .body{flex:1;align-content:center;align-items:center;gap:clamp(20px,3.2svh,34px);margin-top:0;padding-block:0 10px}.section[data-benchmark-motion] .chartContext{top:110px;right:0;max-width:100%;line-height:1.6}.section[data-benchmark-motion] .navigation{gap:12px}.section[data-benchmark-motion] .stage{display:none}.section[data-benchmark-motion] .progress{width:42px}.section[data-benchmark-motion] .scrollHint{font-size:9px;gap:7px}}@media (max-width:1023px) and (max-height:819px){.section[data-benchmark-ready] .quoteText{font-size:20px;line-height:1.4}.section[data-benchmark-ready] .scores{gap:9px}.section[data-benchmark-ready] .sample{margin-top:11px;padding-top:9px}.section[data-benchmark-motion] .body{gap:18px}.section[data-benchmark-motion] .viewport{padding-block:12px 8px}}.headToHead{--label-width:180px;display:grid;gap:18px}.matchup{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px;margin-left:calc(var(--label-width) + 20px)}.veraMark{width:auto;height:26px}.opponentPicker{flex-shrink:0;max-width:100%;margin-left:auto}.opponentOption{display:inline-flex;align-items:center;gap:7px}.opponentOption img{width:auto;height:16px}[data-checked] .opponentOption img{filter:brightness(0) invert(1)}.legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin-left:calc(var(--label-width) + 20px);font-family:var(--font-geist-mono),monospace;font-size:10px;line-height:1.6;color:#6c7280}.legend span::before{content:\"\";display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:2px;vertical-align:-1px}.legendEqual::before{background:#e4e7eb}.legendWorse::before{background:#9099a6}.measures{display:grid;gap:14px}.measure{display:grid;grid-template-columns:var(--label-width) minmax(0,1fr);align-items:end;column-gap:20px}.measureLabel{display:grid;gap:2px;font-size:15px;line-height:1.3}.judge{font-family:var(--font-geist-mono),monospace;font-size:10px;color:#7b818c}.splitTrack{display:grid;gap:5px}.shares{position:relative;height:1.2em;font-size:13px;line-height:1.2;color:#656d7b;font-variant-numeric:tabular-nums}.shares span{position:absolute;left:clamp(2.2ch,var(--center),calc(100% - 2.2ch));transform:translateX(-50%);white-space:nowrap}.shares span:first-child{color:#13192a}.split{display:grid;grid-template-columns:var(--split);height:10px;overflow:hidden;border-radius:2px}.split span:nth-child(1){background:#1b2c42}.split span:nth-child(2){background:#e4e7eb}.split span:nth-child(3){background:#9099a6}.headToHead+.sample{margin-top:20px;padding-top:13px}@media (min-width:1024px) and (max-height:960px),(max-width:1023px){.judge{display:none}.measures{gap:10px}}@media (prefers-reduced-motion:no-preference){.split{transition:grid-template-columns 480ms cubic-bezier(.22,1,.36,1)}.shares span{transition:left 480ms cubic-bezier(.22,1,.36,1)}}@media (max-width:1023px){.headToHead{--label-width:132px;gap:14px}.measureLabel{font-size:13px}.legend{font-size:9px}.split{height:8px}.shares{font-size:12px}}@media (max-width:599px){.legend,.matchup{margin-left:0}.measure{grid-template-columns:minmax(0,1fr);row-gap:4px}.veraMark{height:18px}.opponentOption img{height:14px}.shares{font-size:11px}}"},{"filePath":"features/marketing/components/home/QuoteSection.module.css","content":".figure{position:relative;max-width:1272px;margin-inline:auto;color:#141a2b}.content,.partnership{display:flex;flex-direction:column}.content{min-height:76svh;justify-content:center;gap:64px;padding:clamp(72px,8svh,104px) 56px}.partnership{align-items:flex-start;gap:32px}.partnerIdentity{width:fit-content;max-width:100%;padding-bottom:32px;border-bottom:1px solid #e2e4e8}.partnerHeading{width:720px;max-width:100%;font-size:clamp(30px,2.6vw,36px);line-height:1.16;letter-spacing:-.025em;text-wrap:balance}.partnerLogo{width:320px;max-width:100%;height:auto;flex-shrink:0}.testimonial{display:grid;grid-template-columns:384px minmax(0,1fr);grid-template-areas:\"portrait quote\" \"portrait attribution\";grid-template-rows:max-content 1fr;align-items:start;align-content:start;gap:28px 72px}.quote{grid-area:quote;position:relative;margin:0;font-family:var(--font-sans),sans-serif;font-size:clamp(24px,2vw,28px);font-weight:400;line-height:1.5;letter-spacing:-.01em}.quote p{text-indent:1.02em;text-wrap:pretty}.quoteMark{position:absolute;top:.06em;left:0;width:.68em;height:.64em;fill:currentColor}.storyLink{display:inline-flex;min-height:44px;align-items:center;gap:20px;padding-bottom:6px;border-bottom:1px solid #c8cdd5;color:inherit;font-size:16px;line-height:1.4;text-decoration:none;transition:border-color 180ms ease}.storyLink svg{transition:transform 180ms ease}.storyLink:hover{border-color:currentColor}.storyLink:hover svg{transform:translateX(3px)}.storyLink:focus-visible{outline:2px solid #0064b5;outline-offset:6px}.author{grid-area:attribution;display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;justify-content:space-between;gap:28px}.portrait{grid-area:portrait;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover}.authorName{font-size:18px;line-height:1.4}.authorRole{margin-top:8px;max-width:34em;color:#686d7b;font-size:14px;line-height:1.55;text-transform:none}@media (max-width:1023px){.content{gap:48px;padding:64px 32px}.testimonial{grid-template-columns:256px minmax(0,1fr);gap:28px 40px}}@media (max-width:767px){.content{min-height:calc(100svh - 3.5rem);gap:clamp(20px,4svh,40px);padding:clamp(24px,5svh,56px) 24px}.partnership{gap:clamp(16px,2.5svh,24px)}.partnerIdentity{padding-bottom:clamp(16px,2.5svh,24px)}.partnerHeading{font-size:clamp(22px,3.8svh,30px)}.partnerLogo{width:clamp(168px,26svh,220px);max-width:100%}.testimonial{grid-template-columns:auto minmax(0,1fr);grid-template-areas:\"quote quote\" \"portrait attribution\";grid-template-rows:auto;gap:clamp(20px,3.5svh,28px) 16px}.quote{font-size:clamp(16px,min(5.6vw,2.9svh),26px);line-height:1.45}.author{gap:clamp(12px,2svh,28px)}.portrait{width:clamp(64px,13svh,120px);max-width:100%}.authorName{font-size:17px}.authorRole{font-size:13px}}.testimonial[data-has-portrait=false]{grid-template-columns:minmax(0,1fr);grid-template-areas:\"quote\" \"attribution\";grid-template-rows:auto}@media (prefers-reduced-motion:reduce){.storyLink,.storyLink svg{transition:none}.storyLink:hover svg{transform:none}}@media (max-width:374px){.content{padding-inline:20px}.authorName{font-size:16px}.storyLink{gap:10px;font-size:14px}}"},{"filePath":"features/marketing/components/shell/PageJourney.module.css","content":".page{position:relative;display:flex;flex:1;flex-direction:column;min-width:0}.overlay{position:absolute;z-index:10;top:0;left:0;pointer-events:none;overflow:hidden}.routeBase,.routeInk{stroke-width:1}.frameBase,.frameInk,.mask,.routeBase,.routeInk{fill:none;vector-effect:non-scaling-stroke}.frameBase,.routeBase,.routeInk{stroke-dasharray:12 5}.frameBase,.routeBase{stroke:#d8dade}.routeInk{stroke:#13192a}.frameBase,.frameInk{stroke-width:.75}.frameInk{stroke:#898c95}.mask{stroke:#fff;stroke-width:4;stroke-dasharray:1;stroke-dashoffset:1}.light .frameBase,.light .routeBase{stroke:#ffffff26}.light .routeInk{stroke:#f4f3ef}.light .frameInk{stroke:rgb(244 243 239/.7)}.page[data-journey-ready] [data-journey-grid=council],.page[data-journey-ready] [data-journey-grid=council]>li{border-color:transparent}.page[data-journey-ready] [data-journey-section=council] :global(.dash-v),.page[data-journey-ready] [data-journey-section=security] :global(.dash-h),.page[data-journey-ready] [data-journey-section=security] :global(.dash-v){opacity:0}.page[data-journey-ready] [data-journey-heading]{color:rgb(19 25 42/calc(.55 + var(--journey-ink, 1)*.45))}.page[data-journey-ready] [data-journey-name]{color:rgb(19 25 42/calc(.7 + var(--journey-ink, 1)*.3));transition:none}.page[data-journey-ready] :global(.journey-security-mark){opacity:calc(.45 + var(--journey-ink, 1)*.55);transition:none}.page[data-journey-ready] [data-journey-section=council] [data-journey-node] :focus-visible [data-journey-name],.page[data-journey-ready] [data-journey-section=council] [data-journey-node]:hover [data-journey-name],.page[data-journey-ready] [data-journey-section=council] [data-journey-node][data-selected] [data-journey-name]{color:#fff}.page[data-journey-ready] [data-journey-node] a:focus-visible :global(.journey-security-mark),.page[data-journey-ready] [data-journey-node] a:hover :global(.journey-security-mark){opacity:1}@media (prefers-reduced-motion:reduce){.mask{stroke-dashoffset:0!important}.page[data-journey-ready] [data-journey-heading],.page[data-journey-ready] [data-journey-name]{--journey-ink:1!important}.page[data-journey-ready] :global(.journey-security-mark){opacity:1}}"},{"filePath":"features/marketing/components/hero/HeroTrialMatch.module.css","content":"@keyframes recruiting{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(2.8)}}.frame{width:158px;height:227px;pointer-events:auto}.card{display:grid;grid-template-rows:28px auto minmax(0,1fr) 32px;box-sizing:border-box;width:100%;height:100%;overflow:hidden;border:1px solid #dfe4ea;border-radius:6px;background:#fff;color:#111827;font-family:var(--font-sans),Arial,sans-serif;text-align:left;box-shadow:0 2px 5px rgb(17 24 39/.04)}.header,.status{display:flex;align-items:center;gap:4px}.header{justify-content:space-between;padding:0 8px;border-bottom:1px solid #edf0f4}.status{color:#15803d;font-size:7px;font-weight:600;line-height:1}.dot,.dot::after{border-radius:50%;background:#22c55e}.dot{position:relative;width:5px;height:5px}.dot::after{position:absolute;inset:0;content:\"\";animation:recruiting 1.8s ease-out infinite}.frame[data-reduce-motion=true] .dot::after{animation:none}.phase{padding:2px 4px;border:1px solid #e5e7eb;border-radius:3px;color:#667080;font-size:6px;font-weight:500;line-height:1;white-space:nowrap}.study{padding:7px 8px 6px;border-bottom:1px solid #edf0f4}.title{font-size:10px;font-weight:650;line-height:12px;letter-spacing:-.25px}.patient{margin-top:3px;color:#6b7280;font-size:6.5px;line-height:9px}.criteria{display:grid;grid-template-rows:repeat(3,minmax(0,1fr));min-height:0;padding:2px 8px}.criterion{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:7px;font-weight:500;line-height:8.5px}.criterion+.criterion{border-top:1px solid #f0f2f5}.mark{display:grid;flex:0 0 11px;height:11px}.outcome,.pending{display:grid;grid-area:1/1;place-items:center}.pending{color:#c4cad3}.outcome[data-met=true]{color:#16a34a}.outcome[data-met=false]{color:#d97706}.footer{display:flex;border-top:1px solid #e5e7eb;background:#f8fafb}.footerHit{display:flex;align-items:center;align-self:stretch;justify-content:space-between;gap:4px;width:100%;padding:0 8px;color:#667080;cursor:pointer;transition:background-color 140ms ease,color 140ms ease}.footerHit:hover{background:#eef3f6;color:#111827}.result{color:#111827;font-size:8.5px;font-weight:600;line-height:1}"}],"page":{"pagePath":"api-reference/v2/send-a-chat-message","slug":"/api-reference/v2/send-a-chat-message","pageMetadata":{"title":"Send a chat message","description":"Send a clinical question and receive an AI-generated answer.\n\nBy default the response is a Server-Sent Events stream of flat JSON events with a `type` discriminator (`text-delta`, `data-references`, `finish`, …). See the [streaming guide](/docs/guides/streaming) for the full event catalog. Set `stream: false` to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under `vendor_metadata` and echoes your request `metadata` unchanged.\n\nSave the `workflow-run-id` event's `workflowRunId` (streaming) or `vendor_metadata.workflow_run_id` (non-streaming) — you can use either to resume the stream via [GET /api/chat/v2/stream/{runId}](/api-reference/v2/resume-a-chat-stream) if your connection drops.\n\nEach cited reference includes: `paperId`, `pmid`, `doi`, `title`, `journal`, `firstAuthor`, `year`, `studyTypes`, `evidenceTier`, `isGuideline`, `journalTier`, `citationCount`, `citationTrend`, `isLandmark`, and `isOpenAccess`.","deprecated":null,"version":null,"openapi":"/docs/api-reference/openapi.json post /api/chat/v2","href":"/api-reference/v2/send-a-chat-message","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Send a clinical question and receive an AI-generated answer.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"By default the response is a Server-Sent Events stream of flat JSON events with a \", _jsx(_components.code, {\n children: \"type\"\n }), \" discriminator (\", _jsx(_components.code, {\n children: \"text-delta\"\n }), \", \", _jsx(_components.code, {\n children: \"data-references\"\n }), \", \", _jsx(_components.code, {\n children: \"finish\"\n }), \", …). See the \", _jsx(_components.a, {\n href: \"/docs/guides/streaming\",\n children: \"streaming guide\"\n }), \" for the full event catalog. Set \", _jsx(_components.code, {\n children: \"stream: false\"\n }), \" to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under \", _jsx(_components.code, {\n children: \"vendor_metadata\"\n }), \" and echoes your request \", _jsx(_components.code, {\n children: \"metadata\"\n }), \" unchanged.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Save the \", _jsx(_components.code, {\n children: \"workflow-run-id\"\n }), \" event’s \", _jsx(_components.code, {\n children: \"workflowRunId\"\n }), \" (streaming) or \", _jsx(_components.code, {\n children: \"vendor_metadata.workflow_run_id\"\n }), \" (non-streaming) — you can use either to resume the stream via \", _jsx(_components.a, {\n href: \"/api-reference/v2/resume-a-chat-stream\",\n children: \"GET /api/chat/v2/stream/\"\n }), \" if your connection drops.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Each cited reference includes: \", _jsx(_components.code, {\n children: \"paperId\"\n }), \", \", _jsx(_components.code, {\n children: \"pmid\"\n }), \", \", _jsx(_components.code, {\n children: \"doi\"\n }), \", \", _jsx(_components.code, {\n children: \"title\"\n }), \", \", _jsx(_components.code, {\n children: \"journal\"\n }), \", \", _jsx(_components.code, {\n children: \"firstAuthor\"\n }), \", \", _jsx(_components.code, {\n children: \"year\"\n }), \", \", _jsx(_components.code, {\n children: \"studyTypes\"\n }), \", \", _jsx(_components.code, {\n children: \"evidenceTier\"\n }), \", \", _jsx(_components.code, {\n children: \"isGuideline\"\n }), \", \", _jsx(_components.code, {\n children: \"journalTier\"\n }), \", \", _jsx(_components.code, {\n children: \"citationCount\"\n }), \", \", _jsx(_components.code, {\n children: \"citationTrend\"\n }), \", \", _jsx(_components.code, {\n children: \"isLandmark\"\n }), \", and \", _jsx(_components.code, {\n children: \"isOpenAccess\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Send a chat message","description":"Send a clinical question and receive an AI-generated answer.\n\nBy default the response is a Server-Sent Events stream of flat JSON events with a `type` discriminator (`text-delta`, `data-references`, `finish`, …). See the [streaming guide](/docs/guides/streaming) for the full event catalog. Set `stream: false` to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under `vendor_metadata` and echoes your request `metadata` unchanged.\n\nSave the `workflow-run-id` event's `workflowRunId` (streaming) or `vendor_metadata.workflow_run_id` (non-streaming) — you can use either to resume the stream via [GET /api/chat/v2/stream/{runId}](/api-reference/v2/resume-a-chat-stream) if your connection drops.\n\nEach cited reference includes: `paperId`, `pmid`, `doi`, `title`, `journal`, `firstAuthor`, `year`, `studyTypes`, `evidenceTier`, `isGuideline`, `journalTier`, `citationCount`, `citationTrend`, `isLandmark`, and `isOpenAccess`.","deprecated":null,"version":null,"openapi":"/docs/api-reference/openapi.json post /api/chat/v2","href":"/api-reference/v2/send-a-chat-message","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/verahealth/dd79ecb6cf1fafba/postcss.config.js","/_mintlify/custom/verahealth/0363f9364df89c58/public/sw.js","/_mintlify/custom/verahealth/50c0157abfce544a/tailwind.config.js","/_mintlify/custom/verahealth/6bf4b42e1bf760a9/utils/wavtools/index.js","/_mintlify/custom/verahealth/6b038c8bf6b799a5/utils/wavtools/lib/analysis/audio_analysis.js","/_mintlify/custom/verahealth/ffc92ea3af16bfbf/utils/wavtools/lib/analysis/constants.js","/_mintlify/custom/verahealth/ce2ca954207f8d0f/utils/wavtools/lib/wav_packer.js","/_mintlify/custom/verahealth/a466668660420900/utils/wavtools/lib/wav_recorder.js","/_mintlify/custom/verahealth/d6a065a5987f7a03/utils/wavtools/lib/wav_stream_player.js","/_mintlify/custom/verahealth/c74a2bc2d10f8430/utils/wavtools/lib/worklets/audio_processor.js","/_mintlify/custom/verahealth/405bfed27d88e29c/utils/wavtools/lib/worklets/stream_processor.js"],"openApiReferenceData":{"operation":{"tags":["v2"],"summary":"Send a chat message","description":"Send a clinical question and receive an AI-generated answer.\n\nBy default the response is a Server-Sent Events stream of flat JSON events with a `type` discriminator (`text-delta`, `data-references`, `finish`, …). See the [streaming guide](/docs/guides/streaming) for the full event catalog. Set `stream: false` to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under `vendor_metadata` and echoes your request `metadata` unchanged.\n\nSave the `workflow-run-id` event's `workflowRunId` (streaming) or `vendor_metadata.workflow_run_id` (non-streaming) — you can use either to resume the stream via [GET /api/chat/v2/stream/{runId}](/api-reference/v2/resume-a-chat-stream) if your connection drops.\n\nEach cited reference includes: `paperId`, `pmid`, `doi`, `title`, `journal`, `firstAuthor`, `year`, `studyTypes`, `evidenceTier`, `isGuideline`, `journalTier`, `citationCount`, `citationTrend`, `isLandmark`, and `isOpenAccess`.","operationId":"chatV2","x-codeSamples":[{"lang":"curl","label":"cURL","source":"curl -N -X POST https://www.verahealth.ai/api/chat/v2 \\\n -H \"x-api-key: YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"question\": \"What is the first-line treatment for hypertension?\",\n \"metadata\": {\n \"source\": \"your-integration\",\n \"thread_id\": \"thr_demo\",\n \"message_id\": \"msg_001\",\n \"user_id\": \"user_demo\",\n \"timestamp\": \"2026-06-01T12:00:00Z\"\n }\n }'"},{"lang":"javascript","label":"JavaScript","source":"const metadata = {\n source: 'your-integration',\n thread_id: 'thr_demo',\n message_id: 'msg_001',\n user_id: 'user_demo',\n timestamp: new Date().toISOString(),\n};\n\nconst response = await fetch('https://www.verahealth.ai/api/chat/v2', {\n method: 'POST',\n headers: {\n 'x-api-key': 'YOUR_API_KEY',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n question: 'What is the first-line treatment for hypertension?',\n metadata,\n }),\n});\n\nif (!response.ok) {\n throw new Error(`Request failed: ${response.status}`);\n}\n\nlet workflowRunId = null;\nlet answer = '';\n\nconst reader = response.body.getReader();\nconst decoder = new TextDecoder();\nlet buffer = '';\n\nwhile (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n\n const frames = buffer.split('\\n\\n');\n buffer = frames.pop() ?? '';\n\n for (const frame of frames) {\n const line = frame.trim();\n if (!line.startsWith('data: ')) continue;\n const event = JSON.parse(line.slice(6));\n\n switch (event.type) {\n case 'workflow-run-id':\n workflowRunId = event.workflowRunId; // save for reconnection\n break;\n case 'text-delta':\n answer += event.delta;\n break;\n case 'data-references':\n console.log('References:', event.data);\n break;\n case 'data-stop':\n console.warn('Stopped:', event.data.message);\n break;\n case 'finish':\n console.log('Done.');\n break;\n }\n }\n}\n\nconsole.log('Answer:', answer);"},{"lang":"python","label":"Python","source":"import json\nfrom datetime import datetime, timezone\n\nimport requests\n\nurl = 'https://www.verahealth.ai/api/chat/v2'\nheaders = {\n 'x-api-key': 'YOUR_API_KEY',\n 'Content-Type': 'application/json',\n}\npayload = {\n 'question': 'What is the first-line treatment for hypertension?',\n 'metadata': {\n 'source': 'your-integration',\n 'thread_id': 'thr_demo',\n 'message_id': 'msg_001',\n 'user_id': 'user_demo',\n 'timestamp': datetime.now(timezone.utc).isoformat(),\n },\n}\n\nwith requests.post(url, headers=headers, json=payload, stream=True) as response:\n response.raise_for_status()\n workflow_run_id = None\n answer = ''\n\n for raw in response.iter_lines(decode_unicode=True):\n if not raw or not raw.startswith('data: '):\n continue\n event = json.loads(raw[6:])\n etype = event.get('type')\n\n if etype == 'workflow-run-id':\n workflow_run_id = event['workflowRunId'] # save for reconnection\n elif etype == 'text-delta':\n answer += event['delta']\n elif etype == 'data-stop':\n print('Stopped:', event['data']['message'])\n elif etype == 'finish':\n print('Done:', event)\n\nprint('Answer:', answer)"}],"security":["ea1993ae-1f6b-4574-921d-152b35263539"],"requestBody":"04b792d0-4a75-43f3-8fb5-7ba74a7cb9a7","responses":{"200":"dd2f045c-7b4d-454f-8a57-4b469aa1d3d2","400":"9b31ac3b-0c3e-48d1-8cb7-701d218f9588","401":"f51a03bb-6c10-420c-8eb2-625e9a1df505","413":"92e6665d-1b59-4d48-b993-cf8e4b736e03","422":"3b23d7a0-b13b-4be5-823b-1bdfb450c8d1","429":"906150d6-f7e2-4d93-a9e9-dc8a7eec98e7","500":"221db9c6-48ad-42ab-8178-ad5a7afbe1ba"},"method":"post","type":"path","servers":["3cae262c-2987-49d0-bc10-0e3b1f1a0a46"],"path":"/api/chat/v2","baseUrlOptions":["https://www.verahealth.ai"],"title":"Send a chat message","codeSamples":[{"label":"cURL","lang":"curl","source":"curl -N -X POST https://www.verahealth.ai/api/chat/v2 \\\n -H \"x-api-key: YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"question\": \"What is the first-line treatment for hypertension?\",\n \"metadata\": {\n \"source\": \"your-integration\",\n \"thread_id\": \"thr_demo\",\n \"message_id\": \"msg_001\",\n \"user_id\": \"user_demo\",\n \"timestamp\": \"2026-06-01T12:00:00Z\"\n }\n }'"},{"label":"JavaScript","lang":"javascript","source":"const metadata = {\n source: 'your-integration',\n thread_id: 'thr_demo',\n message_id: 'msg_001',\n user_id: 'user_demo',\n timestamp: new Date().toISOString(),\n};\n\nconst response = await fetch('https://www.verahealth.ai/api/chat/v2', {\n method: 'POST',\n headers: {\n 'x-api-key': 'YOUR_API_KEY',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n question: 'What is the first-line treatment for hypertension?',\n metadata,\n }),\n});\n\nif (!response.ok) {\n throw new Error(`Request failed: ${response.status}`);\n}\n\nlet workflowRunId = null;\nlet answer = '';\n\nconst reader = response.body.getReader();\nconst decoder = new TextDecoder();\nlet buffer = '';\n\nwhile (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n\n const frames = buffer.split('\\n\\n');\n buffer = frames.pop() ?? '';\n\n for (const frame of frames) {\n const line = frame.trim();\n if (!line.startsWith('data: ')) continue;\n const event = JSON.parse(line.slice(6));\n\n switch (event.type) {\n case 'workflow-run-id':\n workflowRunId = event.workflowRunId; // save for reconnection\n break;\n case 'text-delta':\n answer += event.delta;\n break;\n case 'data-references':\n console.log('References:', event.data);\n break;\n case 'data-stop':\n console.warn('Stopped:', event.data.message);\n break;\n case 'finish':\n console.log('Done.');\n break;\n }\n }\n}\n\nconsole.log('Answer:', answer);"},{"label":"Python","lang":"python","source":"import json\nfrom datetime import datetime, timezone\n\nimport requests\n\nurl = 'https://www.verahealth.ai/api/chat/v2'\nheaders = {\n 'x-api-key': 'YOUR_API_KEY',\n 'Content-Type': 'application/json',\n}\npayload = {\n 'question': 'What is the first-line treatment for hypertension?',\n 'metadata': {\n 'source': 'your-integration',\n 'thread_id': 'thr_demo',\n 'message_id': 'msg_001',\n 'user_id': 'user_demo',\n 'timestamp': datetime.now(timezone.utc).isoformat(),\n },\n}\n\nwith requests.post(url, headers=headers, json=payload, stream=True) as response:\n response.raise_for_status()\n workflow_run_id = None\n answer = ''\n\n for raw in response.iter_lines(decode_unicode=True):\n if not raw or not raw.startswith('data: '):\n continue\n event = json.loads(raw[6:])\n etype = event.get('type')\n\n if etype == 'workflow-run-id':\n workflow_run_id = event['workflowRunId'] # save for reconnection\n elif etype == 'text-delta':\n answer += event['delta']\n elif etype == 'data-stop':\n print('Stopped:', event['data']['message'])\n elif etype == 'finish':\n print('Done:', event)\n\nprint('Answer:', answer)"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["question","metadata"],"description":"Request envelope for `POST /api/chat/v2`.","properties":{"question":{"type":"string","description":"The clinical question to answer.","minLength":1,"example":"Is amoxicillin safe with warfarin?","isRequired":true,"uniqueKey":"question","typeLabel":"string"},"metadata":{"type":"object","required":["source","thread_id","message_id","user_id","timestamp"],"description":"Your identifiers and routing fields. Returned **byte-identical** on every response event. Additional fields are accepted and echoed unchanged.","properties":{"source":{"type":"string","description":"Your integration identifier. Echoed back unchanged on the non-streaming response. Pipeline routing is keyed off the API key, not this field — `metadata.source` cannot be used to select another partner's config.","example":"your-integration","isRequired":true,"uniqueKey":"metadata.source","typeLabel":"string"},"thread_id":{"type":"string","description":"Your thread id. Vera does not interpret it.","isRequired":true,"uniqueKey":"metadata.thread_id","typeLabel":"string"},"message_id":{"type":"string","description":"Your message id.","isRequired":true,"uniqueKey":"metadata.message_id","typeLabel":"string"},"user_id":{"type":"string","description":"Your end-user id (not a Vera user id).","isRequired":true,"uniqueKey":"metadata.user_id","typeLabel":"string"},"timestamp":{"type":"string","description":"ISO 8601 timestamp.","example":"2026-06-01T12:00:00Z","isRequired":true,"uniqueKey":"metadata.timestamp","typeLabel":"string"},"type":{"type":"string","enum":["metadata"],"uniqueKey":"metadata.type","typeLabel":"enum\u003cstring>"},"variation":{"type":"string","description":"Free-form experiment / prompt variation tag.","uniqueKey":"metadata.variation","typeLabel":"string"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"metadata","typeLabel":"object"},"context":{"oneOf":[{"type":"string","description":"Optional prior conversation. Accepts either a free-form string or an array of `{role, content}` turns (recommended).","uniqueKey":"context.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["user","assistant"],"isRequired":true,"uniqueKey":"context.oneOf.1.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"context.oneOf.1.items.[INDEX].content","typeLabel":"string"}},"uniqueKey":"context.oneOf.1.items.[INDEX]","typeLabel":"object"},"description":"Optional prior conversation. Accepts either a free-form string or an array of `{role, content}` turns (recommended).","uniqueKey":"context.oneOf.1","typeLabel":"object[]"}],"uniqueKey":"context","typeLabel":"string | object[]"},"stream":{"type":"boolean","description":"If `true` (default), the response is an SSE stream. If `false`, the response is a single JSON payload returned once the answer is complete.","default":true,"uniqueKey":"stream","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"simple_question":{"title":"simple_question","value":{"question":"What is the first-line treatment for hypertension?","metadata":{"source":"your-integration","thread_id":"thr_demo","message_id":"msg_001","user_id":"user_demo","timestamp":"2026-06-01T12:00:00Z"}}},"non_streaming":{"title":"non_streaming","value":{"question":"Is amoxicillin safe with warfarin?","metadata":{"source":"your-integration","thread_id":"thr_abc","message_id":"msg_002","user_id":"user_123","timestamp":"2026-06-01T12:00:00Z"},"stream":false}},"with_context":{"title":"with_context","value":{"question":"What about other penicillins?","context":[{"role":"user","content":"Is amoxicillin safe with warfarin?"},{"role":"assistant","content":"Amoxicillin can interact with warfarin..."}],"metadata":{"source":"your-integration","thread_id":"thr_abc","message_id":"msg_003","user_id":"user_123","timestamp":"2026-06-01T12:01:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"dd2f045c-7b4d-454f-8a57-4b469aa1d3d2":{"description":"When `stream` is `true` (default), the response is a Server-Sent Events stream (`Content-Type: text/event-stream`). Each frame is `data: {JSON}\\n\\n` and carries a top-level `type` discriminator. See the [streaming guide](/docs/guides/streaming) for the full event catalog.\n\nWhen `stream` is `false`, the response is a single JSON payload (`Content-Type: application/json`) returned once the answer is fully generated. It carries your request `metadata` echoed byte-identical, and groups Vera-specific fields (`references`, `progress`, `workflow_run_id`, `doi_reference_map`, `evidence_levels`, `suggested_questions`) under `vendor_metadata`. See the `application/json` example below.\n\n## Streaming event types\n\n| Event | Description |\n|-------|-------------|\n| `thread-info` | First event. Carries `threadId` and `messageId`. |\n| `workflow-run-id` | Carries `workflowRunId` — save it to resume the stream. |\n| `text-start` / `text-delta` / `text-end` | Answer text. Concatenate each `delta` to build the full markdown answer. |\n| `data-references` | Cited papers with metadata. |\n| `data-evidence-levels` | Map of `paper_id` / `doi` / `pmid` → `EvidenceLevel` (study type, Oxford level, strength assessment) for cited references. Emitted as evidence becomes available; may be emitted multiple times during a stream. See the `EvidenceLevel` schema. |\n| `data-doi-reference-map` | Maps inline `[1]`, `[2]` markers to DOI/PMID URLs. Last emission has `isFinal: true`. |\n| `data-stop` | Vera declined the request. Branch on `data.code`: `content_policy_stop` or `question_too_long`. No answer text follows, but `finish` still arrives with `status: \"complete\"`. |\n| `finish` | Terminal event. Close the connection after this. |\n\n## Response headers (streaming only)\n\n| Header | Description |\n|--------|-------------|\n| `x-thread-id` | UUID of the thread created for this request. |\n| `x-message-id` | UUID of the message being generated. |\n| `x-workflow-run-id` | Run id — use it to resume via `GET /api/chat/v2/stream/{runId}`. |","headers":{"x-thread-id":{"description":"UUID of the newly created thread (streaming responses only).","schema":{"type":"string","format":"uuid"}},"x-message-id":{"description":"UUID of the message being generated (streaming responses only).","schema":{"type":"string","format":"uuid"}},"x-workflow-run-id":{"description":"Run id for `GET /api/chat/v2/stream/{runId}` reconnect (streaming responses only).","schema":{"type":"string"}}},"content":{"text/event-stream":{"schema":{"type":"string","description":"SSE stream of flat JSON events. Each event has a `type` discriminator. See the streaming guide for the full event catalog.","uniqueKey":"","typeLabel":"string"},"examples":{"thread_info":{"title":"thread_info","value":"data: {\"type\":\"thread-info\",\"threadId\":\"550e8400-e29b-41d4-a716-446655440000\",\"messageId\":\"660f9500-e29b-41d4-a716-446655440001\"}\n\n"},"workflow_run_id":{"title":"workflow_run_id","value":"data: {\"type\":\"workflow-run-id\",\"workflowRunId\":\"wf_01H9YABC...\"}\n\n"},"text_delta":{"title":"text_delta","value":"data: {\"type\":\"text-delta\",\"id\":\"uuid\",\"delta\":\"The first-line treatment for hypertension typically includes...\",\"sequence\":1}\n\n"},"finish":{"title":"finish","value":"data: {\"type\":\"finish\",\"status\":\"complete\",\"messageId\":\"660f9500-...\",\"saved\":true,\"referencesCount\":35}\n\n"}},"exampleType":"examples"},"application/json":{"schema":{"type":"object","required":["answer","metadata","vendor_metadata"],"description":"Returned when `stream` is `false`.","properties":{"answer":{"type":"string","description":"The complete answer text (markdown).","isRequired":true,"uniqueKey":"answer","typeLabel":"string"},"metadata":{"type":"object","required":["source","thread_id","message_id","user_id","timestamp"],"description":"Your identifiers and routing fields. Returned **byte-identical** on every response event. Additional fields are accepted and echoed unchanged.","properties":{"source":{"type":"string","description":"Your integration identifier. Echoed back unchanged on the non-streaming response. Pipeline routing is keyed off the API key, not this field — `metadata.source` cannot be used to select another partner's config.","example":"your-integration","isRequired":true,"uniqueKey":"metadata.source","typeLabel":"string"},"thread_id":{"type":"string","description":"Your thread id. Vera does not interpret it.","isRequired":true,"uniqueKey":"metadata.thread_id","typeLabel":"string"},"message_id":{"type":"string","description":"Your message id.","isRequired":true,"uniqueKey":"metadata.message_id","typeLabel":"string"},"user_id":{"type":"string","description":"Your end-user id (not a Vera user id).","isRequired":true,"uniqueKey":"metadata.user_id","typeLabel":"string"},"timestamp":{"type":"string","description":"ISO 8601 timestamp.","example":"2026-06-01T12:00:00Z","isRequired":true,"uniqueKey":"metadata.timestamp","typeLabel":"string"},"type":{"type":"string","enum":["metadata"],"uniqueKey":"metadata.type","typeLabel":"enum\u003cstring>"},"variation":{"type":"string","description":"Free-form experiment / prompt variation tag.","uniqueKey":"metadata.variation","typeLabel":"string"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"metadata","typeLabel":"object"},"vendor_metadata":{"type":"object","description":"Vera-owned provider data. Structure may evolve.","properties":{"type":{"type":"string","enum":["vendor_metadata"],"uniqueKey":"vendor_metadata.type","typeLabel":"enum\u003cstring>"},"workflow_run_id":{"type":"string","description":"Run id — used for `GET /api/chat/v2/stream/{runId}` reconnect.","uniqueKey":"vendor_metadata.workflow_run_id","typeLabel":"string"},"thread_id":{"type":"string","description":"Vera-side thread UUID.","uniqueKey":"vendor_metadata.thread_id","typeLabel":"string"},"message_id":{"type":"string","description":"Vera-side message UUID.","uniqueKey":"vendor_metadata.message_id","typeLabel":"string"},"references":{"type":"array","items":{"type":"object","uniqueKey":"vendor_metadata.references.items.[INDEX]","typeLabel":"object"},"description":"Cited papers with metadata.","uniqueKey":"vendor_metadata.references","typeLabel":"object[]"},"progress":{"type":"object","properties":{"steps":{"type":"array","items":{"type":"object","uniqueKey":"vendor_metadata.progress.steps.items.[INDEX]","typeLabel":"object"},"uniqueKey":"vendor_metadata.progress.steps","typeLabel":"object[]"}},"uniqueKey":"vendor_metadata.progress","typeLabel":"object"},"doi_reference_map":{"type":"object","description":"Maps inline citation numbers in the answer to DOI/PMID URLs.","uniqueKey":"vendor_metadata.doi_reference_map","typeLabel":"object"},"evidence_levels":{"type":"object","description":"Map keyed by `paper_id`, `doi`, and `pmid` (each cited reference appears under all the keys it carries) → `EvidenceLevel`. Populated from offline-graded `paper_loe` data with a legacy fallback for pre-Babylon refs.","additionalProperties":{"type":"object","description":"Structured Level-of-Evidence assessment for a cited paper. Populated from the offline `paper_loe` table (Babylon refs) or the legacy `references.evidence_level` JSONB (pre-Babylon refs, mapped through the v1→v2 transformer).\n\n**Rollout note:** during the v1→v2 client rollout window the server also emits the deprecated v1 fields (`study_characteristics.design`, `study_characteristics.multicenter`, `study_characteristics.randomized`, top-level `strength_factors`) derived from the v2 fields so old clients keep rendering chips. New integrations should ignore the deprecated fields.","required":["schema_version","summary","study_characteristics","quality_assessment","strength_tags","strength_notes","limitations","overall_strength"],"properties":{"schema_version":{"type":"integer","enum":[2],"description":"Wire-format version. Bumped when the shape changes.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.schema_version","typeLabel":"enum\u003cinteger>"},"summary":{"type":"string","description":"Long-form natural-language summary of the paper's methodology and evidence quality.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.summary","typeLabel":"string"},"study_characteristics":{"type":"object","required":["study_types","design_label","design_label_components","is_guideline","oxford_level","sample_size","follow_up_duration","population"],"properties":{"study_types":{"type":"array","items":{"type":"string","enum":["rct","cohort","case_control","cross_sectional","case_report","diagnostic_accuracy","systematic_review","meta_analysis","guideline","narrative_review","editorial","preclinical"],"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.study_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Primary-first canonical study-type enums. May be empty when no enum fits — in that case `design_label` carries the description.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.study_types","typeLabel":"enum\u003cstring>[]"},"design_label":{"oneOf":[{"type":"string","description":"Free-form design phrase. Set when `study_types=[]` or as a supplement to the enum array.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.design_label.oneOf.0","typeLabel":"string"},{"type":"null","description":"Free-form design phrase. Set when `study_types=[]` or as a supplement to the enum array.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.design_label.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.design_label","typeLabel":"string | null"},"design_label_components":{"type":"array","items":{"type":"string","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.design_label_components.items.[INDEX]","typeLabel":"string"},"description":"Server-formatted display components for the design row: `study_types` mapped through the canonical English label map plus `design_label` appended (if set). Render directly — as chips, or joined with ' · ' for a single-line label. Clients should not duplicate this formatting.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.design_label_components","typeLabel":"string[]"},"is_guideline":{"type":"boolean","description":"Pre-computed: true when this paper should be rendered as a guideline (either `study_types` contains 'guideline' or `design_label` mentions it). Clients use this to hide Oxford-level chips since Oxford CEBM levels do not apply to guidelines.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.is_guideline","typeLabel":"boolean"},"oxford_level":{"type":"string","enum":["1a","1b","1c","2a","2b","2c","3a","3b","4","5"],"description":"Oxford CEBM level. Not meaningful for guidelines.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.oxford_level","typeLabel":"enum\u003cstring>"},"sample_size":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.sample_size.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.sample_size.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.sample_size","typeLabel":"integer | null"},"follow_up_duration":{"oneOf":[{"type":"string","description":"Free-form, e.g. '12 weeks', '3.2 years'.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.follow_up_duration.oneOf.0","typeLabel":"string"},{"type":"null","description":"Free-form, e.g. '12 weeks', '3.2 years'.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.follow_up_duration.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.follow_up_duration","typeLabel":"string | null"},"population":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.population.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.population.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.population","typeLabel":"string | null"},"design":{"oneOf":[{"type":"string","deprecated":true,"description":"Deprecated. Use `study_types[0]` / `design_label`. Server-derived for v1 client back-compat during rollout.","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.design.oneOf.0","typeLabel":"string"},{"type":"null","deprecated":true,"description":"Deprecated. Use `study_types[0]` / `design_label`. Server-derived for v1 client back-compat during rollout.","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.design.oneOf.1","typeLabel":"null"}],"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.design","typeLabel":"string | null"},"multicenter":{"oneOf":[{"type":"boolean","deprecated":true,"description":"Deprecated. Derived from `strength_tags.includes(\"multicenter\")`.","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.multicenter.oneOf.0","typeLabel":"boolean"},{"type":"null","deprecated":true,"description":"Deprecated. Derived from `strength_tags.includes(\"multicenter\")`.","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.multicenter.oneOf.1","typeLabel":"null"}],"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.multicenter","typeLabel":"boolean | null"},"randomized":{"oneOf":[{"type":"boolean","deprecated":true,"description":"Deprecated. Derived from `study_types.includes(\"rct\")`.","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.randomized.oneOf.0","typeLabel":"boolean"},{"type":"null","deprecated":true,"description":"Deprecated. Derived from `study_types.includes(\"rct\")`.","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.randomized.oneOf.1","typeLabel":"null"}],"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics.randomized","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.study_characteristics","typeLabel":"object"},"quality_assessment":{"type":"object","required":["risk_of_bias","precision","confounding_adjustment"],"properties":{"risk_of_bias":{"type":"string","enum":["Low","Moderate","High","Unknown"],"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.quality_assessment.risk_of_bias","typeLabel":"enum\u003cstring>"},"precision":{"type":"string","enum":["High","Moderate","Low","Unknown"],"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.quality_assessment.precision","typeLabel":"enum\u003cstring>"},"confounding_adjustment":{"type":"string","enum":["Adjusted","Unadjusted","Not applicable","Unknown"],"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.quality_assessment.confounding_adjustment","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.quality_assessment","typeLabel":"object"},"strength_tags":{"type":"array","items":{"type":"string","enum":["adjusted_analysis","blinded","duplicate_review","effect_size_ci","evidence_based_guideline","external_validation","formal_sr_methodology","large_sample","long_followup","matched_controls","multicenter","prospective","randomized","registered_protocol","rob_assessment","subgroup_sensitivity","validated_measures"],"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.strength_tags.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Canonical strength-tag enums. Render via the client-side label map (`formatStrengthTag`).","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.strength_tags","typeLabel":"enum\u003cstring>[]"},"strength_notes":{"type":"array","items":{"type":"string","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.strength_notes.items.[INDEX]","typeLabel":"string"},"description":"Free-form notes that complement `strength_tags`. Rendered after the formatted tags in the snapshot view.","isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.strength_notes","typeLabel":"string[]"},"limitations":{"type":"array","items":{"type":"string","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.limitations.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.limitations","typeLabel":"string[]"},"overall_strength":{"type":"string","enum":["Very High","High","Moderate","Low"],"isRequired":true,"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.overall_strength","typeLabel":"enum\u003cstring>"},"strength_factors":{"type":"array","items":{"type":"string","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.strength_factors.items.[INDEX]","typeLabel":"string"},"deprecated":true,"description":"Deprecated alias of `strength_tags`. Populated identically during the rollout window.","uniqueKey":"vendor_metadata.evidence_levels.additionalProperties.strength_factors","typeLabel":"string[]"}},"uniqueKey":"vendor_metadata.evidence_levels.additionalProperties","typeLabel":"object"},"uniqueKey":"vendor_metadata.evidence_levels","typeLabel":"object"},"usage":{"type":"object","description":"Token counts for answer generation (input and output). Either may be null if the provider did not report it. Covers answer generation, not auxiliary retrieval/classification calls.","properties":{"input_tokens":{"oneOf":[{"type":"integer","uniqueKey":"vendor_metadata.usage.input_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"vendor_metadata.usage.input_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"vendor_metadata.usage.input_tokens","typeLabel":"integer | null"},"output_tokens":{"oneOf":[{"type":"integer","uniqueKey":"vendor_metadata.usage.output_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"vendor_metadata.usage.output_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"vendor_metadata.usage.output_tokens","typeLabel":"integer | null"}},"uniqueKey":"vendor_metadata.usage","typeLabel":"object"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"vendor_metadata","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"non_streaming":{"title":"non_streaming","value":{"answer":"Amoxicillin can interact with warfarin by displacing it from plasma proteins and altering gut flora that produce vitamin K...","metadata":{"source":"your-integration","thread_id":"thr_abc","message_id":"msg_002","user_id":"user_123","timestamp":"2026-06-01T12:00:00Z"},"vendor_metadata":{"type":"vendor_metadata","workflow_run_id":"run_123","thread_id":"550e8400-e29b-41d4-a716-446655440000","message_id":"660f9500-e29b-41d4-a716-446655440001","references":[{"paperId":"517a102c-ca7a-4db2-8184-293656b3589e","pmid":"37654321","doi":"10.1378/chest.11-2295","title":"ACCP Guidelines on Antithrombotic Therapy","journal":"Chest","firstAuthor":"Smith J","year":2012,"studyTypes":["guideline"],"evidenceTier":0,"isGuideline":true,"journalTier":"top","citationCount":482,"citationTrend":"stable","isLandmark":true,"isOpenAccess":true}],"doi_reference_map":{"referenceMap":{"1":"https://doi.org/10.1378/chest.11-2295"},"totalReferences":1,"isFinal":true}}}}},"exampleType":"examples"}},"exampleType":"examples"},"9b31ac3b-0c3e-48d1-8cb7-701d218f9588":{"description":"Bad request — the body is not valid JSON or failed validation. `metadata` is echoed when present in the request.","content":{"application/json":{"schema":{"type":"object","required":["error","metadata"],"description":"Error envelope. `metadata` is the request metadata echoed back when present (null otherwise).","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_request_body","unauthorized","content_policy_stop","question_too_long","stream_failure","internal_error"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"metadata":{"oneOf":[{"type":"object","description":"Your identifiers and routing fields. Returned **byte-identical** on every response event. Additional fields are accepted and echoed unchanged.","required":["source","thread_id","message_id","user_id","timestamp"],"properties":{"source":{"type":"string","description":"Your integration identifier. Echoed back unchanged on the non-streaming response. Pipeline routing is keyed off the API key, not this field — `metadata.source` cannot be used to select another partner's config.","example":"your-integration","isRequired":true,"uniqueKey":"metadata.oneOf.0.source","typeLabel":"string"},"thread_id":{"type":"string","description":"Your thread id. Vera does not interpret it.","isRequired":true,"uniqueKey":"metadata.oneOf.0.thread_id","typeLabel":"string"},"message_id":{"type":"string","description":"Your message id.","isRequired":true,"uniqueKey":"metadata.oneOf.0.message_id","typeLabel":"string"},"user_id":{"type":"string","description":"Your end-user id (not a Vera user id).","isRequired":true,"uniqueKey":"metadata.oneOf.0.user_id","typeLabel":"string"},"timestamp":{"type":"string","description":"ISO 8601 timestamp.","example":"2026-06-01T12:00:00Z","isRequired":true,"uniqueKey":"metadata.oneOf.0.timestamp","typeLabel":"string"},"type":{"type":"string","enum":["metadata"],"uniqueKey":"metadata.oneOf.0.type","typeLabel":"enum\u003cstring>"},"variation":{"type":"string","description":"Free-form experiment / prompt variation tag.","uniqueKey":"metadata.oneOf.0.variation","typeLabel":"string"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"metadata.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"metadata.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"metadata","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"invalid_body":{"title":"invalid_body","value":{"error":{"code":"invalid_request_body","message":"metadata.thread_id is required"},"metadata":{"source":"your-integration","thread_id":"","message_id":"msg_002","user_id":"user_123","timestamp":"2026-06-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"f51a03bb-6c10-420c-8eb2-625e9a1df505":{"description":"Unauthorized - missing or invalid x-api-key. Emitted by the auth layer before the route; the body is the plain-text string \"Unauthorized\" (not JSON, no metadata echo).","content":{"text/plain":{"schema":{"type":"string","example":"Unauthorized","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"Unauthorized"}},"exampleType":"generated"}},"exampleType":"generated"},"92e6665d-1b59-4d48-b993-cf8e4b736e03":{"description":"`question` exceeds 200,000 characters. Shorten it and retry; retrying unchanged will fail again. Non-streaming only — the streaming path reports this as a `data-stop` event with `code: \"question_too_long\"`.","content":{"application/json":{"schema":{"type":"object","required":["error","metadata"],"description":"Error envelope. `metadata` is the request metadata echoed back when present (null otherwise).","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_request_body","unauthorized","content_policy_stop","question_too_long","stream_failure","internal_error"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"metadata":{"oneOf":[{"type":"object","description":"Your identifiers and routing fields. Returned **byte-identical** on every response event. Additional fields are accepted and echoed unchanged.","required":["source","thread_id","message_id","user_id","timestamp"],"properties":{"source":{"type":"string","description":"Your integration identifier. Echoed back unchanged on the non-streaming response. Pipeline routing is keyed off the API key, not this field — `metadata.source` cannot be used to select another partner's config.","example":"your-integration","isRequired":true,"uniqueKey":"metadata.oneOf.0.source","typeLabel":"string"},"thread_id":{"type":"string","description":"Your thread id. Vera does not interpret it.","isRequired":true,"uniqueKey":"metadata.oneOf.0.thread_id","typeLabel":"string"},"message_id":{"type":"string","description":"Your message id.","isRequired":true,"uniqueKey":"metadata.oneOf.0.message_id","typeLabel":"string"},"user_id":{"type":"string","description":"Your end-user id (not a Vera user id).","isRequired":true,"uniqueKey":"metadata.oneOf.0.user_id","typeLabel":"string"},"timestamp":{"type":"string","description":"ISO 8601 timestamp.","example":"2026-06-01T12:00:00Z","isRequired":true,"uniqueKey":"metadata.oneOf.0.timestamp","typeLabel":"string"},"type":{"type":"string","enum":["metadata"],"uniqueKey":"metadata.oneOf.0.type","typeLabel":"enum\u003cstring>"},"variation":{"type":"string","description":"Free-form experiment / prompt variation tag.","uniqueKey":"metadata.oneOf.0.variation","typeLabel":"string"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"metadata.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"metadata.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"metadata","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"question_too_long","message":"Your query is 12,431 characters too long."},"metadata":{"source":"your-integration","thread_id":"thr_abc","message_id":"msg_002","user_id":"user_123","timestamp":"2026-06-01T12:00:00Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"question_too_long","message":"Your query is 12,431 characters too long."},"metadata":{"source":"your-integration","thread_id":"thr_abc","message_id":"msg_002","user_id":"user_123","timestamp":"2026-06-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"3b23d7a0-b13b-4be5-823b-1bdfb450c8d1":{"description":"The request was blocked by our content policy. Retrying unchanged will fail again. Non-streaming only — the streaming path reports this as a `data-stop` event with `code: \"content_policy_stop\"`.","content":{"application/json":{"schema":{"type":"object","required":["error","metadata"],"description":"Error envelope. `metadata` is the request metadata echoed back when present (null otherwise).","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_request_body","unauthorized","content_policy_stop","question_too_long","stream_failure","internal_error"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"metadata":{"oneOf":[{"type":"object","description":"Your identifiers and routing fields. Returned **byte-identical** on every response event. Additional fields are accepted and echoed unchanged.","required":["source","thread_id","message_id","user_id","timestamp"],"properties":{"source":{"type":"string","description":"Your integration identifier. Echoed back unchanged on the non-streaming response. Pipeline routing is keyed off the API key, not this field — `metadata.source` cannot be used to select another partner's config.","example":"your-integration","isRequired":true,"uniqueKey":"metadata.oneOf.0.source","typeLabel":"string"},"thread_id":{"type":"string","description":"Your thread id. Vera does not interpret it.","isRequired":true,"uniqueKey":"metadata.oneOf.0.thread_id","typeLabel":"string"},"message_id":{"type":"string","description":"Your message id.","isRequired":true,"uniqueKey":"metadata.oneOf.0.message_id","typeLabel":"string"},"user_id":{"type":"string","description":"Your end-user id (not a Vera user id).","isRequired":true,"uniqueKey":"metadata.oneOf.0.user_id","typeLabel":"string"},"timestamp":{"type":"string","description":"ISO 8601 timestamp.","example":"2026-06-01T12:00:00Z","isRequired":true,"uniqueKey":"metadata.oneOf.0.timestamp","typeLabel":"string"},"type":{"type":"string","enum":["metadata"],"uniqueKey":"metadata.oneOf.0.type","typeLabel":"enum\u003cstring>"},"variation":{"type":"string","description":"Free-form experiment / prompt variation tag.","uniqueKey":"metadata.oneOf.0.variation","typeLabel":"string"}},"additionalProperties":true,"isRequired":true,"uniqueKey":"metadata.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"metadata.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"metadata","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"content_policy_stop","message":"This request violates our Terms of Service. Please try again if you believe this is an error."},"metadata":{"source":"your-integration","thread_id":"thr_abc","message_id":"msg_002","user_id":"user_123","timestamp":"2026-06-01T12:00:00Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"content_policy_stop","message":"This request violates our Terms of Service. Please try again if you believe this is an error."},"metadata":{"source":"your-integration","thread_id":"thr_abc","message_id":"msg_002","user_id":"user_123","timestamp":"2026-06-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"906150d6-f7e2-4d93-a9e9-dc8a7eec98e7":{"description":"Rate limit exceeded for this API key. Retry after the Retry-After interval.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"RateLimit-Limit":{"description":"Max requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"description":"Rate-limit error body. Emitted by the auth layer, so it carries no `metadata` echo (unlike the ChatError envelope).","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["rate_limited"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"rate_limited","message":"Rate limit exceeded. Retry after the interval in the Retry-After header."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"rate_limited","message":"Rate limit exceeded. Retry after the interval in the Retry-After header."}}}},"exampleType":"examples"}},"exampleType":"examples"},"221db9c6-48ad-42ab-8178-ad5a7afbe1ba":{"description":"Internal server error - An unexpected error occurred","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","description":"Detailed error message","uniqueKey":"message","typeLabel":"string"},"details":{"type":"string","description":"Additional error details","uniqueKey":"details","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Internal server error","message":"An unexpected error occurred while processing your request"},"examples":{"Example":{"title":"Example","value":{"error":"Internal server error","message":"An unexpected error occurred while processing your request"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"ea1993ae-1f6b-4574-921d-152b35263539":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key for authentication. Contact support@verahealth.ai to obtain your API key.","scopes":[],"schemeName":"apiKeyAuth"}}},"servers":{"3cae262c-2987-49d0-bc10-0e3b1f1a0a46":{"url":"https://www.verahealth.ai","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key for authentication. Contact support@verahealth.ai to obtain your API key.","scopes":[],"schemeName":"apiKeyAuth"},"schema":{"title":"x-api-key","type":"string","description":"API key for authentication. Contact support@verahealth.ai to obtain your API key.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyAuth","name":"x-api-key"}],"title":"apiKeyAuth"}]},"originalFileLocation":"docs/api-reference/openapi.json"},"subdomain":"verahealth","siteName":"Vera Health API","title":"Send a chat message - Vera Health API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T15:54:13.481Z","originalFileLocation":"api-reference/v2/send-a-chat-message.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Send a clinical question and receive an AI-generated answer. By default the response is a Server-Sent Events stream of flat JSON events with a type discriminator (text-delta, data-references, finish, …). See the streaming guide for the full event catalog. Set stream: false to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under vendor_metadata and echoes your request metadata unchanged. Save the workflow-run-id event\u0026#x27;s workflowRunId (streaming) or vendor_metadata.workflow_run_id (non-streaming) — you can use either to resume the stream via GET /api/chat/v2/stream/{runId} if your connection drops. Each cited reference includes: paperId, pmid, doi, title, journal, firstAuthor, year, studyTypes, evidenceTier, isGuideline, journalTier, citationCount, citationTrend, isLandmark, and isOpenAccess.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Vera Health API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/x-icon\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/verahealth/favicon.ico\">\u003clink data-mint-head rel=\"icon\" type=\"image/x-icon\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/verahealth/favicon.ico\">\u003clink data-mint-head rel=\"icon\" type=\"image/x-icon\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/verahealth/favicon.ico\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/verahealth/favicon.ico\">\u003cmeta data-mint-head property=\"og:title\" content=\"Send a chat message - Vera Health API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Send a clinical question and receive an AI-generated answer. By default the response is a Server-Sent Events stream of flat JSON events with a type discriminator (text-delta, data-references, finish, …). See the streaming guide for the full event catalog. Set stream: false to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under vendor_metadata and echoes your request metadata unchanged. Save the workflow-run-id event\u0026#x27;s workflowRunId (streaming) or vendor_metadata.workflow_run_id (non-streaming) — you can use either to resume the stream via GET /api/chat/v2/stream/{runId} if your connection drops. Each cited reference includes: paperId, pmid, doi, title, journal, firstAuthor, year, studyTypes, evidenceTier, isGuideline, journalTier, citationCount, citationTrend, isLandmark, and isOpenAccess.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vera Health API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://verahealth.mintlify.app/_mintlify/api/og/v2?division=v2\u0026amp;title=Send+a+chat+message\u0026amp;description=Send+a+clinical+question+and+receive+an+AI-generated+answer.%0A%0ABy+default+the+response+is+a+Server-Sent+Events+stream+of+flat+JSON+events+with+a+%60type%60+discrimin\u0026amp;theme=352d28514ef71a7c2656dc39\u0026amp;signature=b2eefa97d820cc4f0c0eae9e573db1469d69b1d2ed60728a67ddd639ef71476a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Send a chat message - Vera Health API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Send a clinical question and receive an AI-generated answer. By default the response is a Server-Sent Events stream of flat JSON events with a type discriminator (text-delta, data-references, finish, …). See the streaming guide for the full event catalog. Set stream: false to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under vendor_metadata and echoes your request metadata unchanged. Save the workflow-run-id event\u0026#x27;s workflowRunId (streaming) or vendor_metadata.workflow_run_id (non-streaming) — you can use either to resume the stream via GET /api/chat/v2/stream/{runId} if your connection drops. Each cited reference includes: paperId, pmid, doi, title, journal, firstAuthor, year, studyTypes, evidenceTier, isGuideline, journalTier, citationCount, citationTrend, isLandmark, and isOpenAccess.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://verahealth.mintlify.app/_mintlify/api/og/v2?division=v2\u0026amp;title=Send+a+chat+message\u0026amp;description=Send+a+clinical+question+and+receive+an+AI-generated+answer.%0A%0ABy+default+the+response+is+a+Server-Sent+Events+stream+of+flat+JSON+events+with+a+%60type%60+discrimin\u0026amp;theme=352d28514ef71a7c2656dc39\u0026amp;signature=b2eefa97d820cc4f0c0eae9e573db1469d69b1d2ed60728a67ddd639ef71476a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/verahealth/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Vera Health API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1b779b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/v2/send-a-chat-message.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.verahealth.ai/#organization\",\"name\":\"Vera Health API\",\"url\":\"https://docs.verahealth.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/verahealth/HD6VTjX99KEXZuHX/docs/logo/light.svg?fit=max\u0026auto=format\u0026n=HD6VTjX99KEXZuHX\u0026q=85\u0026s=049f1671d10aff9d90fc9bfd59b229e5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.verahealth.ai#website\",\"name\":\"Vera Health API\",\"url\":\"https://docs.verahealth.ai\",\"publisher\":{\"@id\":\"https://docs.verahealth.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message#webpage\",\"url\":\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message\",\"name\":\"Send a chat message\",\"description\":\"Send a clinical question and receive an AI-generated answer. By default the response is a Server-Sent Events stream of flat JSON events with a type discriminator (text-delta, data-references, finish, …). See the streaming guide for the full event catalog. Set stream: false to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under vendor_metadata and echoes your request metadata unchanged. Save the workflow-run-id event's workflowRunId (streaming) or vendor_metadata.workflow_run_id (non-streaming) — you can use either to resume the stream via GET /api/chat/v2/stream/{runId} if your connection drops. Each cited reference includes: paperId, pmid, doi, title, journal, firstAuthor, year, studyTypes, evidenceTier, isGuideline, journalTier, citationCount, citationTrend, isLandmark, and isOpenAccess.\",\"dateModified\":\"2026-10-29T15:54:13.481Z\",\"isPartOf\":{\"@id\":\"https://docs.verahealth.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.verahealth.ai/api-reference/v1/chat\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Send a chat message\",\"item\":\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message#apireference\",\"headline\":\"Send a chat message\",\"name\":\"Send a chat message\",\"description\":\"Send a clinical question and receive an AI-generated answer. By default the response is a Server-Sent Events stream of flat JSON events with a type discriminator (text-delta, data-references, finish, …). See the streaming guide for the full event catalog. Set stream: false to receive a single JSON payload instead — the non-streaming response groups Vera-specific fields under vendor_metadata and echoes your request metadata unchanged. Save the workflow-run-id event's workflowRunId (streaming) or vendor_metadata.workflow_run_id (non-streaming) — you can use either to resume the stream via GET /api/chat/v2/stream/{runId} if your connection drops. Each cited reference includes: paperId, pmid, doi, title, journal, firstAuthor, year, studyTypes, evidenceTier, isGuideline, journalTier, citationCount, citationTrend, isLandmark, and isOpenAccess.\",\"url\":\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message\",\"mainEntityOfPage\":{\"@id\":\"https://docs.verahealth.ai/api-reference/v2/send-a-chat-message#webpage\"},\"dateModified\":\"2026-10-29T15:54:13.481Z\",\"publisher\":{\"@id\":\"https://docs.verahealth.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.verahealth.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Vera Health API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Vera Health API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs"}]},{"tab":"API Reference","groups":[{"group":"Endpoints","icon":"code","pages":[{"group":"v1","pages":[{"title":"Chat","description":"Send a medical question and receive an answer as a Server-Sent Events (SSE) stream. The stream contains answer text, DOI/PMID citation mappings, reference metadata, and suggested follow-up questions.\n\nNew integrations should use [POST /api/chat/v2](/api-reference/v2/send-a-chat-message).","deprecated":true,"version":null,"openapi":"/docs/api-reference/openapi.json post /api/chat/v1","href":"/api-reference/v1/chat"}]},{"group":"v2","pages":[{"title":"Send a chat message","deprecated":null,"version":null,"openapi":"/docs/api-reference/openapi.json post /api/chat/v2","href":"/api-reference/v2/send-a-chat-message"},{"title":"Resume a chat stream","description":"Reconnect to an in-flight or recently completed chat stream started by `POST /api/chat/v2`. Any events buffered during the disconnect are replayed, then live events continue.\n\nThe response uses the same SSE event format as `POST /api/chat/v2`.\n\n### Obtaining `runId`\n\nThe run ID is delivered in the original `POST /api/chat/v2` stream as a `workflow-run-id` event:\n\n```json\n{\"type\": \"workflow-run-id\", \"workflowRunId\": \"wf_01H9Y...\"}\n```\n\n### Authorization\n\nThe caller must present the same API key that started the run. Calls from any other key return **404**.","deprecated":null,"version":null,"openapi":"/docs/api-reference/openapi.json get /api/chat/v2/stream/{runId}","href":"/api-reference/v2/resume-a-chat-stream"},{"title":"Get your rate-limit quotas","deprecated":null,"version":null,"openapi":"/docs/api-reference/openapi.json get /api/chat/v2/quotas","href":"/api-reference/v2/get-your-rate-limit-quotas"}]},{"group":"v3","pages":[{"title":"Ask the agent with a chosen tool set","deprecated":null,"version":null,"openapi":"/docs/api-reference/openapi.json post /api/chat/v3","href":"/api-reference/v3/ask-the-agent-with-a-chosen-tool-set"},{"title":"Reconnect to an agentic stream","deprecated":null,"version":null,"openapi":"/docs/api-reference/openapi.json get /api/chat/v3/threads/{threadId}/stream","href":"/api-reference/v3/reconnect-to-an-agentic-stream"}]}]}]}]},"basePath":"","title":"Send a chat message - Vera Health API","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}