1. RunSignup
  2. API
  3. Documentation

API Access

API calls require api_key and api_secret parameters in the URL. Be sure to include "https" in front of all API calls to keep your API credentials secure.

Timezones

IMPORTANT! All times in the API are in Eastern Time unless otherwise noted.

Datatypes

All fields will have an associated datatype. Below are the field types used in the API.

Data Type Description Valid Values
string Character string.
password A password string.
int Signed integer.
uint Unsigned integer.
float Floating point number.
bool Boolean value. T, F
id_list Comma separated list of integer IDs.
string_list Comma separated list of integer strings.
format Response or request format. You can submit GRU files from RunScore and The Race Director by specifying CSV. Not all methods support each format. The preferred type is `json`. xml, json, csv
date Date formatted as "YYYY-mm-dd", a timestamp, or one of the strings "today" and "tomorrow".
time 24-hr time formatted as "hh:mm:ss".
unix_timestamp Unix timestamp.
datetime Date and time formatted as "YYYY-mm-dd hh:mm:ss" where time is in 24-hour format.
gender Gender as either "M" or "F". M, F
phone Phone number formatted as "xxx-xxx-xxxx".
state Two letter state or province abbreviation.
country Two letter ISO 3166-1 alpha-2 country code. US, AD, AE, AF, AG, AI, AL, AM, AO, AQ, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BQ, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, ID, IE, IL, IM, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, SS, ST, SV, SX, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, XK, YE, YT, ZA, ZM, ZW
distance_units Units for distance: K: km, M: miles, y: yards, and m: meters. K, M, y, m
event_type Event type:
running_race - Run or Run/Walk
virtual_race - Virtual Race / Challenge
nonprofit_event - Nonprofit Event
running_only - Run Only
walking_only - Walk Only
race_walk - Race Walk
wheelchair - Wheelchair Race
triathlon - Triathlon
duathlon - Duathlon
bike_race - Bike Race
bike_ride - Bike Ride
mountain_bike_race - Mountain Bike Race
gravel_grinder - Gravel Grinder
fundraising_ride - Fundraising Ride
trail_race - Trail Race
open_course_trail - Open Course Trail
ultra - Ultra
hike - Hike
obstacle_course - Obstacle Course
adventure_race - Adventure Race
swim - Swim
swim_run - SwimRun
aqua_bike - Aquabike
ski - Ski
paddle_sports - Paddle Sports
disc_golf - Disc Golf
clinic - Clinic
expo - Expo
skate - Skating
ruck - Ruck
other - Other
running_race, virtual_race, nonprofit_event, running_only, walking_only, race_walk, wheelchair, triathlon, duathlon, bike_race, bike_ride, mountain_bike_race, gravel_grinder, fundraising_ride, trail_race, open_course_trail, ultra, hike, obstacle_course, adventure_race, swim, swim_run, aqua_bike, ski, paddle_sports, disc_golf, clinic, expo, skate, ruck, other

Errors

If there is an issue with your request, you may get responses such as below.

List of Error Codes
<error>
  <error_code>6</error_code>
  <error_msg>Key authentication failed</error_msg>
</error>
<error>
  <error_code>3</error_code>
  <error_msg>Invalid parameters</error_msg>
  <param_missing>
    <param_name>api_key</param_name>
  </param_missing>
  <param_missing>
    <param_name>api_secret</param_name>
  </param_missing>
</error>

OpenAPI Specification

Each RunSignup API is accompanied by an OpenAPI 3.0 specification that describes all available endpoints, request/response schemas, and authentication requirements.

Access OpenAPI Resources:

For more information about OpenAPI, visit the Swagger Documentation or the OpenAPI Specification Repository.

RunSignUp OpenAPI Extensions

The RunSignup OpenAPI specification includes several custom extensions to provide enhanced functionality and better integration with our platform. These extensions offer rich metadata for improved tooling support, including enhanced code generation capabilities and AI-assisted development workflows.

Extension Description
x-permissions Documents access control requirements for each endpoint, specifying which user types can access the resource. Used throughout the API to indicate whether endpoints require race director privileges, timer access, or are available to all users.
Example: {"x-permissions": ["race_directors", "timers"]}
x-response-field-inclusion If a response parameter has this extension added, it means that parameter will only be included in the response when the GET parameters specified are set to the indicated value. The requires property can specify additional parameters that must also be present for the field to be included. Commonly used to conditionally include detailed information, custom fields, or additional metadata based on request parameters.
Example: {"x-response-field-inclusion": [{"request-parameter": "include_details", "value": "T", "requires": ["user_id"]}]}
x-currency-symbol Provides the currency symbol to use. This is often used with x-decimal-places, x-min-value, and x-max-value extensions (see example) to provide comprehensive currency formatting metadata including symbol, decimal places, and validation constraints. Used extensively in pricing-related APIs to ensure proper currency display and validation across different regions and currencies.
Example: {"x-currency-symbol": "$", "x-decimal-places": 2, "x-min-value": 0, "x-max-value": 999999.99}

Related Currency Extensions:
Extension Description
x-decimal-places Specifies the number of decimal places to display for currency values. Typically 2 for most currencies, but can vary (e.g., 0 for Japanese Yen).
x-min-value Defines the minimum allowed value for currency fields. Used for validation to prevent negative amounts or values below a threshold.
x-max-value Defines the maximum allowed value for currency fields. Used for validation to prevent unreasonably large amounts.
x-address-fields Documents address field mappings and validation rules for structured address data. Used to provide clear mapping between display labels and address field names. In the example below, the street address will be in the address_line_1 field.
Example: {"x-address-fields": {"street": "address_line_1", "city": "city", "state": "state", "zipcode": "zip_code"}}
x-key-info Documents dynamic key object structures with type and pattern information. Used in APIs where response objects have dynamic keys (like event IDs, division IDs, or time-based identifiers) that follow specific patterns and contain structured data. In the example below, the keys of the JSON object will be the event ID.
Example: {"x-key-info": {"type": "integer", "description": "Race event ID"}}
x-pattern-properties Documents pattern-based property validation using regular expressions. Unlike x-key-info which documents the structure of dynamic object keys, x-pattern-properties defines validation rules for properties whose names follow specific patterns (like split times, custom field values, or category-specific data). This extension is used when you have multiple properties with similar naming patterns rather than a single dynamic key structure. In the example below, any property matching the pattern "split-" followed by digits and "-place" will be validated as a string type.
Example: {"x-pattern-properties": {"split-\\d+-place": {"type": "string"}}}
x-key-naming-convention Documents key naming conventions for consistent code generation. Used in complex response objects to explain the structure and meaning of dynamic JSON keys, particularly in endpoints where object keys represent specific business logic or data relationships. In the example below, the JSON keys will be division IDs (integers) and their values will be finisher counts (integers).
Example: {"x-key-naming-convention": "Properties are division IDs (integers) mapping to finisher counts (integers)"}

API Reference

The API Reference lists the available resources that can be accessed via the RunSignup API.

Client Libraries and Examples

For a quick start, download our PHP client library. Also, take a look at our API examples at https://github.com/RunSignUp-Team/OpenSource/tree/master/RunSignUpApiExamples. An example application of the API for race timing is described in https://runsignup.wordpress.com/2012/08/13/mobile-cloud-timer-app/.

Results Posting

This section describes the general process for using the API to post race results. There are variations you can make to this process depending on your needs. For example, you may use the API keys for a partner instead of authenticating a user with OAuth. This example assumes that you will download the registration id for each participant and map finishers to their registration id.

One-Time Setup
  1. Go to the API Keys page and register your application. This will give you an OAuth Key and Secret that you will use when connecting to the API on behalf of a race director or timer.
Posting Results
  1. Use the OAuth endpoints listed on the API Keys page and your application's OAuth key and secret to authenticate the user.
  2. Get races for the user to let them select the appropriate race and event. Set the events parameter to "T" so you get the events with each race.
  3. Download participants for the selected event into your timing system. The participants are returned in pages, so you need to get all the pages. You can set results_per_page as you wish, but it may be no larger than 2,500.
  4. Create a result set for the event and store the returned result set id. You should set the name of the result set (e.g. "Live Results", "Official Results", etc.) You can hide the results by setting public_results to "F".
    You can also supply the name and URL of the source for the results. This will be displayed to users who view the results. You might consider using this to link to the timer's website.
  5. Post results by sending the registration id, place, clock time, and (optional) chip time for each runner.
Advanced Features

Once you have this completed, be sure to check out our API Methods for more advanced features:

  • Set up splits (e.g. Mile Markers, Triathlon Splits) and post them in real-time.
  • Set up divisions (e.g. Age Groups, Clydesdale, Athena) and post division results (or let us automatically calculate division results).
  • Add custom fields to the results. You can put any content you want in these fields and runners will be able to view them with the rest of the results.

Authentication

RunSignup users can be authenticated by your application or website using OAuth and the RunSignup API. The RunSignup OAuth Integration Guide describes how to do this.

If you continue to use this site, you consent to use all cookies. We use cookies to offer you a better browsing experience. Read how we use cookies and how you can control them by visiting our Privacy Policy.

If you continue to use this site, you consent to use all cookies.