Внутренний REST API: принимает цифровую запись, ставит задание в очередь и отдаёт JSON-заключение и PDF-отчёт. Один вызов на запись.
Сервис слушает только внутренний адрес
127.0.0.1:8000. Наружу его выводит ваш backend, которому выдан
ключ. Ключ нельзя встраивать в JavaScript и передавать в строке запроса.
export BASE=http://127.0.0.1:8000
export KEY=<ваш ключ>
# 1. отправить запись
curl -H "X-API-Key: $KEY" -F 'file=@record.npz' "$BASE/v1/jobs"
# {"id":"...","status":"queued","status_url":"...","result_url":"...","pdf_url":"..."}
# 2. дождаться готовности
curl -H "X-API-Key: $KEY" "$BASE/v1/jobs/$JOB"
# 3. забрать заключение и отчёт
curl -H "X-API-Key: $KEY" "$BASE/v1/jobs/$JOB/result"
curl -H "X-API-Key: $KEY" "$BASE/v1/jobs/$JOB/pdf" -o report.pdf
Если передать interview=true, задание перейдёт в состояние
awaiting_interview: до 15 адаптивных вопросов о самочувствии
с вариантами «да / скорее да / не знаю / скорее нет / нет». Опрос добавляет
контекст срочности и не увеличивает баллы ЭКГ. Его можно пропустить
вызовом POST /v1/jobs/{id}/finish.
signal — матрица 12×N без NaN и бесконечностей, 2–60 секунд.
fs — целая частота дискретизации, 100–1000 Гц.
lead_names — 12 уникальных названий отведений.
units — mV, uV или V.
До 10 МиБ на файл, до 32 незавершённых заданий в очереди. Фотографии, PDF, произвольные архивы и неполные WFDB-наборы не принимаются. Повторная загрузка создаёт отдельное задание.
| Код | Когда |
|---|---|
| 202 | Задание принято в очередь |
| 401 | Нет или неверен ключ доступа |
| 409 | Результат или PDF запрошен до готовности |
| 413 | Файл больше допустимого размера |
| 415 | Неподдерживаемый формат файла |
| 429 | Очередь заполнена |
| 503 | Обработчик остановлен или мало места на диске |
Кроме диагноза и светофора ответ содержит поля, по которым видно,
насколько результату можно верить: качество входа, доступность измерений
и предупреждения о расхождениях между анализаторами. Значение
complete означает пригодность анализа, а не отсутствие
заболеваний; пропущенный интервал не означает норму.