Patient-authorized EHR integration
Demo API reference
The keyless demo API: synthetic records with no account.
Discover the public demo API
GET /
Check demo API availability
GET /health
List fictional sample providers
GET /providers
List named synthetic scenarios
GET /scenarios
The scenario manifest: what each scenario exercises, its subject and Bundle, its behavior or session outcome, and links. No clinical data. The controls and exercises fields describe the authenticated FinchNode sandbox; the accountless demo cannot perform them.
Get one named synthetic scenario
GET /scenarios/{scenarioId}
One manifest entry with its links. The controls and exercises fields describe the authenticated FinchNode sandbox; the accountless demo cannot perform them.
scenarioIdstring (required)
Simulate a Connect session
POST /connect/sessions
List synthetic patients
GET /patients
One entry per record scenario, in manifest order. Behavior-scenario subjects are listed by /scenarios.
Get the synthetic patient
GET /patients/{patientId}
patientIdstring (required)
Get legacy categorized FHIR resources
GET /patients/{patientId}/records
Compatibility endpoint: object demo_record with grouped FHIR resources in record. No removal is scheduled. Use /users/{subject}/records for normalized platform-shaped data. For a behavior subject, a scenario error (429, 410, or 403) is returned once categories are validated; this compatibility route ignores other query parameters, such as cursor, for every subject.
patientIdstring (required)categoriesstring: Comma-separated subset of available categories.
Get a platform-shaped synthetic health record
GET /users/{subject}/records
Versioned /demo/v1 endpoint with meta.schemaVersion 2. Uses the existing normalized record field projection over the named scenario Bundles; the default subject is the baseline-adult scenario. Behavior scenarios use the production error codes and envelope shapes: rate-limited returns 429 rate_limited in alternating 2-second slots, consent-revoked returns 410 consent_inactive, and consent-partial returns 403 consent_scope_exceeded for categories outside its receipt. source-unavailable returns the partial-sync envelope (syncStatus partial with a source_unavailable warning). For a behavior subject, a scenario error (429, 410, or 403) is returned before query parameters other than categories are checked, so an unsupported parameter such as cursor is reported (400 invalid_query) only when the scenario lets the request through. Platform authorization and ingestion are unchanged. Consent and sync are simulated. All ten platform categories are accepted; documents and claims are empty in these fixtures. Unrequested sections are omitted. No pagination or change-feed parameters are supported.
subjectstring (required)categoriesstring: Comma-separated platform categories. Omit to return all categories (the granted categories for consent-partial).
Get the sample FHIR capability statement
GET /fhir/metadata
The FHIR routes model the synthetic EHR itself, so consent and rate-limit scenario behaviors apply only to the FinchNode record routes (/users/{subject}/records and /patients/{patientId}/records).
Search one resource type across the synthetic scenarios
GET /fhir/{resourceType}
Searches every scenario Bundle. The FHIR routes model the synthetic EHR itself, so consent and rate-limit scenario behaviors apply only to the FinchNode record routes (/users/{subject}/records and /patients/{patientId}/records).
resourceTypestring (required)patientstring: A scenario subject: returns that subject's resources of this type from every scenario Bundle that references it. Omit it to return every resource of this type in the baseline-adult Bundle, unfiltered, which also includes resources that reference no patient (such as Organization and Practitioner). Omitting it is therefore not the same as passing patient-demo-001.
Read one sample FHIR resource
GET /fhir/{resourceType}/{resourceId}
Reads a resource from any scenario Bundle; resourceType Bundle with a scenario bundleId returns that whole Bundle. The FHIR routes model the synthetic EHR itself, so consent and rate-limit scenario behaviors apply only to the FinchNode record routes (/users/{subject}/records and /patients/{patientId}/records).
resourceTypestring (required)resourceIdstring (required)