Changelog
API version history and the integration roadmap.
v1.2 (October 2026)
One request submits a study, and one request returns everything about it.
POST /studiestakes the file as multipart form data, stores it and starts the read. It returns the study object, the same shape asGET /studies/{id}, withstatus: queued. A JSON body is refused with400 validation_error.- A study that cannot be read is not kept:
422 no_processable_series,series_not_found,scan_type_undetectedandbody_part_mismatchare returned from the submit, and the sender resubmits with the corrected fields. - Removed: the presigned-URL variant of
POST /studies,GET /studies/{id}/upload, the three/uploads/multipartroutes,POST /studies/{id}/process, and theauto_processfield.409 already_processingno longer occurs. patient.sexis nowpatient.genderon every response. Values are unchanged:M,F,O.- The submit takes the patient as
patient[name],patient[dob]andpatient[gender], the same object the responses return. The flatpatient_name,patient_dobandpatient_genderfields are gone. GET /studies/{id}carries the result:reportisnulluntil the read completes, then holdsmarkdown,findings,impression,sections,figures,unavailable_figure_numbers,html_url,generated_at,completion_statusandreview_required. The top-levelreport_markdown,figuresandprotocolfields are gone.- Figures gain
location: the DICOMseries_uid,plane,sop_instance_uidandinstance_numberof the slice shown, and the marked point in patient coordinates, so a figure can be opened in your own viewer.location.markscarries the shapes drawn on the figure (circle, line or outline, each with afindingormirrorrole) in the same coordinates. report.markdowncites figures as[Fig. N]and no longer embeds image links; the figures are inreport.figures, andreport.htmlembeds them.- Removed:
GET /studies/{id}/report,/findings,/imagesand/series.GET /studies/{id}/report.htmlremains. The sectionlabeland the constantauthorityfield are gone. vendor_refis removed: it is no longer accepted on submit or returned anywhere.study_idis the handle; keep your own mapping to your accession number.- The callback body is the study object, the same as
GET /studies/{id}, plus"event": "study.completed".
v1.1 (October 2026)
The contract was tidied before partner integrations are frozen. Everything removed was either always empty or described storage rather than the study.
- One status set everywhere:
uploaded,queued,processing,complete,error.materializingis reported asprocessing. - Timestamps are always
YYYY-MM-DDTHH:MM:SSZ; an unknown time isnull. POST /studies: the upload block no longer carriess3_prefixor per-filepath.POST /studies/{id}/process:job_idremoved;study_idis the only handle.GET /studies/{id}: the integerfigures/imagescounts are gone;figuresis the list of cited figures once complete.GET /studies/{id}/report:report_pdf_url,report_url_expires_in,run_version,schema_versionandevidence_urlremoved. Figures are{ number, caption, url }.GET /studies/{id}/findings: typed shape{ study_id, generated_at, review_required, report { findings, impression }, findings [ { id, label, text, figures } ] }.GET /studies/{id}/images:preview_urlremoved; entries are{ number, caption, url }.GET /studies/{id}/evidenceremoved;/imagesand/reportcarry the figures.DELETE /studies/{id}: the free-textdeletedlist removed;deleted_objectsis the number to record.GET /studies/{id}/upload:pathremoved;statusrenamedupload_status.- Multipart
completeandabortreturn{ study_id, filename, ... }instead of{ ok, path }. - Errors: unknown routes and methods now use the error envelope;
validation_error.detailsis[{ field, message }].
v1 (July 2026)
Initial release of the Vendor API at https://api.vitalview.ai/v1.
- API-key authentication (
X-API-Key), organization-scoped access POST /studies: create a study and receive presigned DICOM upload URLsPOST /studies/{id}/process: implicit series detection and dispatchGET /studies,GET /studies/{id}: study list and per-stage statusGET /studies/{id}/report: draft report markdown and HTML with figuresGET /studies/{id}/findings: structured findingsGET /studies/{id}/images: key images- OpenAPI reference at api.vitalview.ai/v1/docs
Roadmap
Planned for future releases, in rough order:
- Completion webhooks: push notification to your callback URL when a study completes, replacing polling
- Multipart uploads through /v1 for very large single files
- Signed image URLs with configurable expiry
- Scoped keys: read-only keys for viewer integrations
- Cursor pagination on
GET /studies - HL7 FHIR: DiagnosticReport and ImagingStudy resource mapping
- Usage export: per-study metering reports for reconciliation
Integration feedback shapes this list. Write to we@vitalview.ai.