Do I need an account or API key?
No. No account, API key, OAuth flow, or billing method is required. The route is read-only, CORS-enabled, and rate limited, so a browser prototype can call it without a proxy.
Production access is free and self-serve with an account. · Synthetic demo · no account needed
Demo
Twelve named synthetic scenarios from two synthetic sources, with no account or API key.
Give an agent or developer one URL. The accountless demo serves twelve named synthetic scenarios from two synthetic sources, Northstar Health System and Quillhaven Medical Group, as platform-shaped records, FHIR R4 resources, a simulated Connect flow, and an MCP endpoint.
Built for: Agents and developers building prototypes, tutorials, and automated tests before creating an account.
Base URL: https://api.finchnode.com/demo/v1
Authentication: No account, API key, OAuth flow, or billing method is required, and a GET request works immediately. Every response is synthetic.
https://api.finchnode.com/demo/mcpcurl 'https://api.finchnode.com/demo/v1/users/patient-demo-001/records?categories=demographics,labs,medications'No account or key. patient-demo-001 is the baseline-adult scenario; https://api.finchnode.com/demo/v1/scenarios lists all twelve.
Expected response: 200 with a platform-shaped synthetic health_record (meta.schemaVersion 2) whose consent and sync metadata are explicitly simulated, with X-FinchNode-Data: synthetic and RateLimit-* response headers.
Synthetic data only. Not for clinical use.
Three ways in for a coding agent: connect the MCP endpoint below, load the OpenAPI document (https://finchnode.com/demo-openapi.json), or fetch this page as markdown (https://finchnode.com/products/demo-api.md). https://finchnode.com/llms.txt lists every product’s markdown twin.
https://api.finchnode.com/demo/mcpclaude mcp add --transport http finchnode-demo https://api.finchnode.com/demo/mcpcodex mcp add finchnode-demo --url https://api.finchnode.com/demo/mcp{
"mcpServers": {
"finchnode-demo": {
"url": "https://api.finchnode.com/demo/mcp"
}
}
}Six record scenarios, four behavior scenarios, and two Connect session outcomes, each with its links, such as patient, records, healthRecord, fhirBundle, fhirSearch, and connect. The exercises and controls fields describe the authenticated sandbox; the accountless demo lists them for reference only and cannot perform them.
curl https://api.finchnode.com/demo/v1/scenariosThe /users/{subject}/records route returns the normalized clinical data shape of the authenticated API, with consent and sync explicitly simulated. The legacy /patients/{patientId}/records route returns category-grouped FHIR resources in a different shape.
curl 'https://api.finchnode.com/demo/v1/users/patient-demo-polypharmacy/records?categories=medications,conditions'Behavior subjects answer with the production error codes: consent-revoked with 410 consent_inactive, consent-partial with 403 consent_scope_exceeded for categories outside its receipt, and rate-limited with 429 rate_limited and Retry-After in alternating time slots (the demo OpenAPI document gives the slot length). Their record-route responses carry Cache-Control: no-store and X-FinchNode-Scenario.
curl -i 'https://api.finchnode.com/demo/v1/users/patient-demo-consent-revoked/records'Search one resource type as a FHIR searchset Bundle, optionally for one scenario subject, or read a whole scenario Bundle.
curl 'https://api.finchnode.com/demo/v1/fhir/Observation?patient=patient-demo-001'The POST response is non-persistent. Add an optional scenario to the body: connect-cancelled and connect-failed end the session cancelled or failed.
curl -X POST https://api.finchnode.com/demo/v1/connect/sessions -H 'Content-Type: application/json' -d '{"external_user_id":"prototype-user-1","categories":["demographics","labs","medications"]}'| Method | Path | OpenAPI operationId |
|---|---|---|
| GET | https://api.finchnode.com/demo/v1/ | getDemoIndex |
| GET | https://api.finchnode.com/demo/v1/health | getDemoHealth |
| GET | https://api.finchnode.com/demo/v1/providers | listDemoProviders |
| GET | https://api.finchnode.com/demo/v1/scenarios | listDemoScenarios |
| GET | https://api.finchnode.com/demo/v1/scenarios/{scenarioId} | getDemoScenario |
| POST | https://api.finchnode.com/demo/v1/connect/sessions | createDemoConnectSession |
| GET | https://api.finchnode.com/demo/v1/patients | listDemoPatients |
| GET | https://api.finchnode.com/demo/v1/patients/{patientId} | getDemoPatient |
| GET | https://api.finchnode.com/demo/v1/patients/{patientId}/records | getDemoPatientRecords |
| GET | https://api.finchnode.com/demo/v1/users/{subject}/records | getDemoHealthRecord |
| GET | https://api.finchnode.com/demo/v1/fhir/metadata | getDemoCapabilityStatement |
| GET | https://api.finchnode.com/demo/v1/fhir/{resourceType} | searchDemoFhirResources |
| GET | https://api.finchnode.com/demo/v1/fhir/{resourceType}/{resourceId} | readDemoFhirResource |
No. No account, API key, OAuth flow, or billing method is required. The route is read-only, CORS-enabled, and rate limited, so a browser prototype can call it without a proxy.
Record scenarios: baseline-adult (patient-demo-001), polypharmacy-senior, pediatric-asthma, multi-source-overlap, sparse-record, and messy-coding. Behavior scenarios: rate-limited, consent-revoked, consent-partial, and source-unavailable. Session scenarios: connect-cancelled and connect-failed. GET /demo/v1/scenarios describes each one, and list_demo_scenarios returns the same list over MCP. Every scenario is fictional.
No. With a FinchNode account, developers get free, self-serve production access to real, patient-authorized records. The public demo cannot access real patient data; real requests require a live key, current patient authorization, and available sources.
consent-revoked answers 410 consent_inactive, consent-partial answers 403 consent_scope_exceeded for categories outside its receipt, and rate-limited answers 429 rate_limited with Retry-After in alternating time slots, whose length the demo OpenAPI document gives. Their record-route responses carry Cache-Control: no-store.