Reference
Can Oxynet read our files?
23 format ids, detected from the file's content. 20 are exports from metabolimeter software or from a laboratory's own profile of it; 3 are Oxynet's own file shapes. This list is generated from the parser that runs in production, so it cannot say more than the parser does.
API v1 · docs 1.0 · updated 2026-09-22
Formats
23 of 23 format ids
| Vendor | Export | File | Evidence | Format id |
|---|---|---|---|---|
| CORTEX | CORTEX export opening with a 'CPET Results' banner. | — | Vendor named | cortex |
| CORTEX | CORTEX export with German headers ('Messzeit'). | — | Vendor named | cortex_bruce |
| CORTEX | CORTEX export, 'Patient' header variant. | — | Vendor named | cortex_bruce_2 |
| CORTEX | CORTEX export with French headers ('Marqueur'). | — | Vendor named | cortex_bruce_3 |
| CORTEX | MetaSoft Studio export. | Excel-2003 SpreadsheetML (.xml) | Vendor named | cortex_metasoft |
| CORTEX | 'Metabolic Edit' workbook with its tables side by side. | Workbook | Vendor named | cortex_periodico |
| COSMED | COSMED Omnia export, exercise phase only, with the subject block stripped.A site-specific export profile of Omnia. | — | Vendor named | brescia |
| COSMED | COSMED Omnia export, subject block in the leading columns. | — | Vendor named | cosmed |
| PNOE | PNOE ramp-test export from a rowing ergometer. | Semicolon-delimited text | Vendor named | rowing_ben |
| VO2 Master | VO2 Master portable analyser export. | — | Vendor named | VO2Master |
| Unconfirmed | Stacked named tables (5 s averaged, blood pressure, breath by breath), V′E-style channel names, gases in kPa. | Tab-delimited text | Vendor unconfirmed | sectioned_bxb |
| Vyaire (probable) | Tab-delimited text with a Height / Weight / Gender banner. | Tab-delimited .txt | Vendor unconfirmed | vyiare |
| Vyntus / Vyaire | Export with Italian headers ('Polso O2'). | — | Vendor unconfirmed | vintus |
| Not recorded | A hospital laboratory export profile.No example file in the corpus to verify the parser against. Send one before relying on it. | — | Lab export | centro-monzino |
| Not recorded | Time / Load export with a units row and V'E / V'O2 channel names. | CSV | Lab export | low |
| Not recorded | Laboratory export with a 'Temps' clock column. | — | Lab export | mourot |
| Not recorded | Laboratory export with a French subject banner ('NOM :'). | — | Lab export | mourot_cardiac |
| Not recorded | Laboratory export with a 'TEMPS' clock column. | — | Lab export | mourot_COPD |
| Not recorded | German-headed export with Zeit / Watt / V_E channels. | CSV | Lab export | unisbz |
| Not recorded | Breath-by-breath workbook with a two-row header. | Workbook | Lab export | vcu |
| Oxynet | Oxynet canonical JSON: an id and a list of samples {t, VO2, VCO2, VE, ...}. The format to convert into when nothing else reads a file. | JSON | Oxynet format | exercise_threshold_app |
| Oxynet | A synthetic recording generated by Oxynet. | — | Oxynet format | generated_pyoxynet |
| Oxynet | An Oxynet-derived research file: one subject per file, split from a cohort workbook. | — | Oxynet format | monzino_eob |
Vendor named: the parser was built on exports from that vendor's software. Vendor unconfirmed: the export's structure is known, its origin is not. Lab export: a laboratory's export profile whose metabolimeter the repository does not record. The authenticated GET /v1/formats returns the same ids with the parser's own labels.
What “supported” means
| Detection | Automatic, from content. Every candidate parser scores the file; one must clear a threshold and beat the runner-up clearly, or the upload is refused rather than guessed. |
|---|---|
| Units and clocks | Each parser knows its format’s units, per-phase clock resets and decimal conventions. Send the export unchanged. |
| Absent channels | Reported as absent, with the reason. Nothing is back-calculated: no work rate from oxygen uptake, for example. |
| Sampling | Breath by breath or interval averaged. The interval the file arrived at is reported. |
| Versions | A parser was built on example files from specific software versions. Another version of the same vendor’s software may export differently. |
The reliable test
One de-identified export from your system. We run it and return what parsed, what did not and why. Send a representative file, or upload it yourself with a key and read the upload summary.
When nothing reads a file
The refusal (UNSUPPORTED_FORMAT) returns the shape to convert into, and that is the one case where converting a file yourself is correct. It is Oxynet's canonical JSON (format id exercise_threshold_app), the same shape as the synthetic samples. At least 40 rows, and t, VO2, VCO2, VE are required.
{
"id": "a label of your choosing",
"data": [
{ "t": 0.0, "VO2": 800.0, "VCO2": 700.0, "VE": 15.0,
"RF": 22.0, "PetO2": 100.0, "PetCO2": 38.0, "HR": 70.0 }
]
}t | seconds from the start of the recording |
|---|---|
VO2 | mL/min (not L/min) |
VCO2 | mL/min |
VE | L/min |
RF | breaths/min (optional) |
PetO2 | mmHg (optional) |
PetCO2 | mmHg (optional; required for oscillation analysis) |
HR | bpm (optional) |
Read this
VO2 and VCO2 are in mL/min. A column in L/min copied across unchanged is wrong by a factor of a thousand and nothing downstream will notice. State the mapping and units you assumed wherever the result is used.
Not yet documented
A downloadable example export per vendor. Real exports are health data and none is cleared for publication; the synthetic samples are the only files offered.