Skip to content

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.

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 apiKey text field of a multipart/form-data upload
  • a field in the request body
  • the pwd header, for the MeOS Online Protocol

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.

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 pwd header
  • 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.

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:19
2;1;2144039;2022-05-21 09:53:40
3;1;8636192;2022-05-21 09:53:47
4;1;2144039;2022-05-21 09:59:17

Each 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.

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.