Production access is free and self-serve with an account. · Synthetic demo · no account needed

FinchNode

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.

  • scenarioId string (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}

  • patientId string (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.

  • patientId string (required)
  • categories string: 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.

  • subject string (required)
  • categories string: 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).

  • resourceType string (required)
  • patient string: 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).

  • resourceType string (required)
  • resourceId string (required)