Before
Transcript and notes only. Documentation that fails payer audit when physiology contradicts self-report.
REST API · Session Physiology
Post-session heart-rate and vocal signals in. FHIR R4 evidence out — for behavioral-health platforms and EHRs.
QOAX is the partner API behind Session Physiology. Not a scribe. Not a diagnostic. Clinician decides.
SeroState’s QOAX API accepts post-session wearable and vocal inputs, time-aligns them to the encounter, and returns structured evidence your product can write into the chart. Primary signal is continuous heart rate; vocal patterns when available; EDA when present.
Platforms use it to surface say/body-gap flags, confidence, and signal quality beside the clinical note — without changing how the clinician runs the session.
Scientific foundation → Platform architecture → AI scribe vs session evidence →
{
"physiological_timeline": [ { "t": "41:12", "hr_bpm": null } ],
"risk_flags": [
{ "type": "physio_spike_no_verbal_ack", "confidence": null, "evidence": "segment_41m02s_41m48s" }
],
"signal_quality": { "overall": null },
"coding_support": [
{ "code": "…", "confidence": null }
],
"fhir": { "resourceType": "Bundle", "type": "collection" },
"disposition": "documentation_support_only"
}
Example response — illustrative field shape only. Not live execution. Documentation support, not diagnosis. The clinician retains authority.
curl -X POST https://api.serostate.com/v1/session \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"session_id":"…","audio_ref":"…","wearable_ref":"…"}'
const res = await fetch("https://api.serostate.com/v1/session", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({ session_id, audio_ref, wearable_ref }),
});
if (!res.ok) {
const err = await res.json();
// err: { error: { code, message, request_id } }
throw err;
}
const evidence = await res.json();
import uuid, requests
r = requests.post(
"https://api.serostate.com/v1/session",
headers={
"Authorization": f"Bearer {token}",
"Idempotency-Key": str(uuid.uuid4()),
},
json={"session_id": session_id, "audio_ref": audio_ref, "wearable_ref": wearable_ref},
timeout=60,
)
r.raise_for_status()
evidence = r.json()
How to read these fields
Your clinical team sets the thresholds. We deliver the evidence.
Auth shape: OAuth 2.0 client credentials → Bearer access token.
Error shape: {"error":{"code":"…","message":"…","request_id":"…"}} with HTTP 4xx/5xx.
Idempotency / retry: send Idempotency-Key on POST; retry safe on network timeouts with the same key. Back off on 429/503.
Minimal FHIR mapping: session evidence → Bundle of Observation (physiology/flags) + DocumentReference (report pointer) for partner EHR write-back. Exact profiles on request.
Transcript and notes only. Documentation that fails payer audit when physiology contradicts self-report.
Time-aligned physiology plus transcript. Confidence-scored evidence surfaced inside your existing product.
AI scribe vs session evidence → · Session Physiology definition → · Documentation & reimbursement →
OpenAPI spec, sandbox, and webhooks: on request for qualified engineering teams.
OAuth 2.0 client credentials for authorized platform partners. Scoped to your integration environment with audit logging on all evidence requests.
Sandbox with sample payloads and synthetic streams, on request.
Sample report, fusion protocol, and evidence scoring on Platform. Method and citations on Science.