The Missing Layer in Healthcare Data Exchange
The platform

Two endpoints in. One typed graph out.

Push any document to the Upload API. Get a typed, coded, source-cited record back from the Convert API, a 15-ontology Encounter graph your agents can call over MCP, REST, FHIR R4, or C-CDA.

The API surface.

Two endpoints do the work. One to ingest, one to convert. Intake, OCR, and encounter detection are handled for you.

Upload API

Ingest any document

Push faxes, scans, PDFs, C-CDA, and HL7 to Curiflow through one endpoint. Intake, OCR, and encounter detection are handled for you.

multipartasync7 channels
POST/v1/upload
curl -X POST https://api.curiflow.com/v1/upload \
-H "Authorization: Bearer $KEY" \
-F "file=@chart_2284.pdf"
 
→ { "document_id": "doc_7f9a", "pages": 47,
"status": "queued" }
Convert API

Get structured FHIR back

Turn any document into typed, coded, FHIR-ready data with every value cited to its source. Serve it over MCP, REST, FHIR R4, or C-CDA.

MCPRESTFHIR R4C-CDA
POST/v1/convert
{
"document_id": "doc_7f9a",
"surface": "fhir"
}
→ { "resourceType": "Bundle", "run_id": "r_7f9a",
"entry": [ Condition, Observation, … ] }
Context graph

15 ontologies. Unified Encounter hub.

One 47-page fax, parsed once into a typed object graph your agents call. Every value is traced back to its exact span on the page.

Point it at your documents.

We'll run a sample of your clinical documents through Upload and Convert live, and serve the graph straight to your agents.