Public API
OResults has a public API for uploading competition data and exchanging punches. It is the same interface our own integrations use, and it is stable: if you are connecting event management software, build against it.
If your software is MeOS, QuickEvent, OE12 or SI-Droid Event, it already speaks to OResults — you do not need this page.
This page covers what each part of the API is for and how to authenticate.
Authentication
Section titled “Authentication”Every endpoint that sends data to OResults authenticates with your event’s API key and nothing else — no account, no token exchange. Find it under Automation on the Set up an event page. Reading punches back over the ROC protocol takes no key at all.
Send it one of three ways, depending on the endpoint:
- the
apiKeytext field of amultipart/form-dataupload - a field in the request body
- the
pwdheader, for the MeOS Online Protocol
Uploads
Section titled “Uploads”Start lists, results and courses are uploaded as multipart/form-data with two fields: apiKey (text) and file (binary). Files may be plain or compressed with gzip, deflate, zlib or zip.
MeOS Online Protocol
Section titled “MeOS Online Protocol”The MeOS Online Protocol (MOP) publishes results, split times and start lists from MeOS to an online service — in our case OResults. It is MeOS’s protocol, not ours: the MeOS documentation is the reference for the format itself.
Request: POST https://api.oresults.eu/meos
- Authentication: your event’s API key, in the
pwdheader - Accepted format: MeOS Online Protocol XML 2.0
- Compression: not supported — send uncompressed
Your OResults event’s start time must match the start time in the sending system, or times will not line up.
Setting MeOS itself up is on the MeOS page.
ROC protocol
Section titled “ROC protocol”The ROC protocol is a plain-text output of punch records, used by most orienteering software to receive live punches. Each orienteering software has its own name for the service that speaks it — Online input, Remote input.
Request: GET https://api.oresults.eu/roc
Parameters:
unitId: OResults event ID (in the URL of your event)lastId: last punch ID (usually filled in automatically by your orienteering software)
Response example:
1;1;2067971;2022-05-21 08:45:192;1;2144039;2022-05-21 09:53:403;1;8636192;2022-05-21 09:53:474;1;2144039;2022-05-21 09:59:17Each row is one punch record. The semicolon-separated values are the punch record ID, control code, SI card and punch timestamp.
Setting it up in your own software is on the MeOS and OE12 pages.
Reference and support
Section titled “Reference and support”The full endpoint reference, with schemas and examples, is the OResults API specification.
Building something and stuck? Email tech@oresults.eu or join our Discord.