# Resting 12-Lead ECG (ecg/12-lead) > 12-lead ECG read from signal, PDF or photo: rhythm, QTc, STEMI-equivalents and AI-ECG screens. Upload one resting 12-lead ECG as the electrocardiograph's digital file. One run measures the global intervals and axes on median beats, reads the rhythm, conduction and morphology statements with two held-out statement networks, applies the guideline rules for the critical flags (wide-complex tachycardia, complete heart block, pre-excitation, QTc of 500 ms or more) and checks every lead against the Fourth Universal Definition STEMI thresholds and the STEMI-equivalent patterns. A photo, scan or PDF printout of the paper ECG is first digitised into calibrated lead signals (vector PDFs from their drawing paths, photos and scans by trace segmentation and layout matching), with the paper speed and gain read from the page and a confidence per lead. From a printout the read returns what matches the read of the original signal file: from a photo or scan the heart rate, sinus rhythm, sinus bradycardia, sinus arrhythmia and Q-wave infarcts of undetermined age; from a PDF printout the heart rate, QT and QTc, the QRS axis, the LVH voltages, sinus rhythm, sinus bradycardia, an anterior Q-wave infarct and the normal or abnormal call. The other statements, intervals and the STEMI criteria are listed as not assessable from such input. Model page: https://medrun.ai/models/ecg/12-lead Status: beta · version 1.0.0 · viewer: waveform ## Input One resting 12-lead ECG (10 s) as a DICOM ECG waveform, HL7 aECG XML, GE MUSE XML, WFDB record (.hea + .dat) or CSV with one column per lead, or the paper ECG as a PDF, scan or photo (the whole page, flat and in focus; for a two-page printout upload both pages). Age and sex refine the QTc and ST-elevation thresholds. Accepted: DICOM ECG waveform, HL7 aECG XML, GE MUSE XML, WFDB record (.hea + .dat), CSV, PDF printout, photo or scan, zip. ## Pricing - `ecg/12-lead/interpret`: $0.02 per request - Draft report (opt-in, `options.report`): +$0.02 per run ## Result sections - `#rhythm` Rhythm and conduction (available): Rhythm (sinus, atrial fibrillation or flutter, SVT, junctional, paced, wide-complex tachycardia), ectopy, AV block, bundle-branch and fascicular blocks, pre-excitation, LVH and Q-wave infarcts of undetermined age, each with its SNOMED CT code, score and the measurements it rests on; critical flags in the triage. - `#intervals` Intervals and axes (available): Heart rate, RR, PR, P duration, QRS, QT, QTc (Bazett and Fridericia), P/QRS/T axes from median beats with global fiducials, and the J-point and ST level at J+60 ms in every lead. - `#stemi` STEMI and occlusion MI (available): Fourth Universal Definition ST-elevation criteria per lead with age and sex thresholds, contiguity and reciprocal change, the STEMI-equivalent patterns (posterior, de Winter, aVR pattern, Smith-modified Sgarbossa in LBBB and paced rhythm), the likely culprit territory and the margin to threshold in every lead. - `#digitize` Digitisation (available): Photos, scans and PDF printouts of the paper ECG turned into calibrated lead signals: layout and lead names, paper speed and gain from the page, the device's printed interpretation ignored, a confidence per lead, and the re-rendered 12-lead drawn from the traced samples only. Each statement and measurement is returned from such input only where it matched the read of the original signal file on the digitisation bench (precision 0.85 or more for statements and the overall call; IEC 60601-2-25 limits for intervals); the rest is listed as not assessable. - `#quality` Recording quality (planned): Per-lead noise, baseline wander, saturation and suspected lead reversal. - `#low-ef` Low EF screen (planned): Probability of a left ventricular ejection fraction of 40–45 % or less, with an echocardiography recommendation. - `#structural-heart-disease` Structural heart disease screen (planned): Probability of moderate or greater structural heart disease. - `#compare` Comparison with prior ECG (planned): New or resolved findings against a prior ECG. - `#segment-waves` Wave delineation (planned): Per-beat P, QRS and T boundaries. - `#hyperkalemia` Hyperkalaemia estimate (planned): Estimated serum potassium band from the ECG. - `#af-risk` Future AF risk (planned): Risk of incident atrial fibrillation from a sinus-rhythm ECG. - `#report` Draft report (available): Opt-in draft report (findings, impression, limitations) written from the structured result; every number is validated against it. ## Endpoint `ecg/12-lead/interpret` (run) The full read of one resting 12-lead ECG: rhythm and conduction statements, global intervals and axes, and the STEMI criteria with the leads that meet them. Docs: https://medrun.ai/models/ecg/12-lead/api · OpenAPI: https://api.medrun.ai/v1/models/ecg/12-lead/interpret/openapi.json ### Input schema - `files` (array; required): One resting 12-lead ECG: a DICOM ECG waveform, HL7 aECG or GE MUSE XML, a WFDB record (.hea and .dat), a CSV file, a PDF printout, or photos or scans of the paper ECG (every page of one ECG), or a zip of them. `file_…` ids from /v1/uploads or https URLs. - `clinical_context` (object): Optional. Age and sex set the QTc and ST-elevation thresholds when the file does not carry them; never names, IDs or dates. - `age_years` (number): Age (years) - `sex` (string; one of female, male, other, unknown): Sex - `indication` (string): For example "chest pain for 2 hours" or "QTc check before starting a QT-prolonging drug". - `options` (object): Options - `report` (boolean; default false): Adds a draft ECG report written from the structured result (English). +$0.02 per run. - `paper_speed_mm_s` (number; one of 25, 50): For a PDF, scan or photo whose paper speed should not be read from the page. - `gain_mm_mv` (number; one of 5, 10, 20): For a PDF, scan or photo whose calibration pulse is not printed. - `sampling_rate_hz` (number): For CSV files that do not state their sampling rate. - `return` (array; default ["json"]): JSON is always returned. ### Example (cURL) ```bash response=$(curl --request POST \ --url https://api.medrun.ai/v1/run/ecg/12-lead/interpret \ --header "Authorization: Bearer $MEDRUN_KEY" \ --header "Content-Type: application/json" \ --data '{ "input": { "files": [ "file_01K6R4X2Q9Y7T3V5W8Z0A1B2C3" ], "options": { "report": false } } }') REQUEST_ID=$(echo "$response" | jq -r .id) ``` ## Output The MedRun result envelope: https://medrun.ai/docs/result-envelope