APIDocs

The Scribara API.

REST, webhook, and MCP. Build on top of the encounter loop — ingest visits, query the audit log, register custom tools for the agent runtime.

Authentication

All Scribara API calls require a bearer token. Tokens are scoped to a tenant and a set of operations. Issue and rotate keys under Admin → API Keys.

curl https://api.scribara.com/v1/encounters \
  -H "Authorization: Bearer sbr_live_••••••••••••" \
  -H "Scribara-Tenant: pacific_cardio"

Versioning

The API is versioned by URL prefix (/v1). Breaking changes ship in new majors with a minimum 12-month deprecation window for the previous major.

Rate limits

Default tenant limit is 60 requests per second sustained, 300 burst. Per-endpoint limits documented in each response's X-Scribara-RateLimit-* headers.

Encounters

An encounter is the central resource. Create one to start a visit; the agent runtime takes over from there.

POST /v1/encounters

{
  "provider_id": "prv_eh",
  "patient_ref": "epic://pat_18421",
  "specialty": "cardiology",
  "consent": { "mode": "verbal", "witnessed_at": "2026-05-28T14:32:11Z" }
}

→ 201 Created
{
  "id": "enc_01HW7AB...",
  "state": "LISTEN",
  "stream_url": "https://api.scribara.com/v1/encounters/enc_01HW7AB.../stream"
}

Notes

Once VERIFY succeeds, a note.drafted event fires. Retrieve the draft, the structured fields, and the per-line evidence map.

GET /v1/encounters/{id}/note

→ 200 OK
{
  "format": "soap",
  "sections": { "hpi": "...", "ros": "...", "exam": "...", "ap": "..." },
  "confidence": 0.94,
  "evidence": [ { "field": "ap.line_2", "transcript_offset_ms": 184_120 } ]
}

Codes

Coding suggestions include the predicted codes, modifiers, the level-of-service rationale, and the lines of transcript that justify each code.

Prior auths

Submit a draft auth to a payer via Waystar/Availity, or download it as a PDF for manual submission. Status flows through the encounter via webhooks.

Webhooks

All Scribara events are available as webhook deliveries, signed with HMAC-SHA256 over the raw body.

# event payload
{
  "type": "encounter.signed",
  "id": "evt_01HW...",
  "data": { "encounter_id": "enc_01HW7AB...", "signed_by": "prv_eh" }
}

SSE streams

For low-latency in-product use, subscribe to the encounter SSE stream to receive partial transcripts, agent state transitions, and confidence updates as they happen.

SDKs

First-party SDKs are open source under Apache 2.0:

# TypeScript
npm install @scribara/sdk

# Python
pip install scribara
import { Scribara } from "@scribara/sdk"

const sbr = new Scribara({ apiKey: process.env.SCRIBARA_KEY })

const enc = await sbr.encounters.create({
  providerId: "prv_eh",
  specialty: "cardiology"
})

for await (const ev of sbr.encounters.stream(enc.id)) {
  if (ev.type === "note.drafted") {
    await sbr.encounters.sign(enc.id)
  }
}

MCP tools

Register your own tools into the Scribara agent runtime via the Model Context Protocol. Tools are scoped per workflow and per role.