Skip to content

No authentication. It never calls an OCR provider: it reports the snapshot that a check every 5 minutes records, cached for 60 seconds, so it can be up to about 6 minutes old.

{
"status": "ok",
"version": "0.1.0",
"ocr_provider": "ok",
"ocr_providers": { "image": "novita", "pdf": "openparser" },
"ocr_models": {
"available": ["novita/deepseek-ocr-2", "novita/paddleocr-vl", "openparser/paddleocr-vl-1.6", "…"],
"auto": { "image": ["novita/deepseek-ocr-2", "openparser/paddleocr-vl-1.6"], "pdf": ["openparser/paddleocr-vl-1.6"] }
},
"checked_at": "2026-10-09T10:05:00.000Z",
"ocr_provider_checks": {
"novita": { "status": "operational", "latency_ms": 640 },
"openparser": { "status": "operational", "latency_ms": 340 }
}
}
Field Meaning
ocr_provider ok when every configured provider is operational; degraded when one is not (conversions still run, OCR failures become warnings) or none is configured; unknown when there is no recent check.
ocr_providers Provider tried first for pictures and for PDF pages with ocr_model=auto.
ocr_models.available The ocr_model values this server accepts.
ocr_models.auto The auto fallback chains for pictures and PDF pages.
checked_at When the last check ran; null before the first one.
ocr_provider_checks Per provider: operational, degraded, major_outage or unknown, and the last latency.

The response has Cache-Control: public, max-age=60 and is not rate limited, so monitoring can poll it.

status.md.tlelabs.com shows the API and each OCR provider over the last hour, 24 hours and 30 days. The same data is JSON at https://status.md.tlelabs.com/api/status (CORS allowed).

A provider is degraded after one failed check or a check slower than 10 seconds, and major_outage after two failures in a row.