Send the hospital report
Record your radiologist's own report of a study, so it sits beside the AI read on your dashboard and the two are compared.
Once your radiologist has reported a study you submitted, send their report with PUT /studies/{study_id}/hospital-report. It appears on your VitalView dashboard beside the AI read, and the two reports are compared there once the read is complete. You can send it at any time after the submit, before or after the read finishes.
This is separate from report on the study object, which is always the AI read.
Send
curl -s -X PUT "https://api.vitalview.ai/v1/studies/a1b2c3d4/hospital-report" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{"text": "CT brain. Acute left subdural haematoma, 8 mm, with 3 mm midline shift."}'
Response (202):
{
"study_id": "a1b2c3d4",
"status": "processing",
"error": null,
"submitted_at": "2026-10-26T09:12:44Z",
"updated_at": "2026-10-26T09:12:44Z"
}
| Field | Required | Notes |
|---|---|---|
text | yes | The report as plain text or markdown, up to 30,000 characters |
Patient identifiers are removed from the text before it is stored, and only that text is kept. Send the report as your radiologist signed it; there is no need to strip names first.
Sending again replaces the report, and the comparison is redone against the new text.
Check that it was accepted
curl -s "https://api.vitalview.ai/v1/studies/a1b2c3d4/hospital-report" -H "X-API-Key: $KEY"
The response has the same shape as the PUT. status is one of:
| Status | Meaning |
|---|---|
processing | Received; not yet on the dashboard |
accepted | On your dashboard beside the AI read |
refused | Not stored. error says what to do; send the report again |
The response never contains the report text. A study you have not sent a report for answers 404 hospital_report_not_found.
Errors
| HTTP | Code | When | What to do |
|---|---|---|---|
| 404 | study_not_found | Unknown study id for your org | Check the study_id from the submit response |
| 409 | hospital_report_processing | The previous report for this study is still processing | Wait until the GET is no longer processing, then send again |
| 422 | validation_error | text is missing, empty or longer than 30,000 characters | See details |
| 503 | hospital_report_unavailable | Reports cannot be accepted right now | Retry with backoff |
Sending a report counts towards the same hourly write limit as submitting a study.
Deleting the study with DELETE /studies/{study_id} deletes its hospital report and the comparison too.
Next: Errors & status codes