This API is used by Race Result, RunScore, Race Day Scoring, and Race Director. Visit Live Race Results for more infomation about how these timing software options can improve your race. For Agee Race Timing and Laurel Timing, please see this API Documentation.
This API was designed specifically for the Director software to allow certain timers and directors integration into our Race Entry data with the Director.
The Login action must be called first as it returns the key/secret pair that is required for the other endpoints.
All responses are returned in JSON format.
*All test endpoints start with https://demo.raceentry.com/rest
*All production endpoints start with https://www.raceentry.com/rest
API users can be created for users who are already in the Race Entry user database. Only an authorized Race Entry API partner (timer) can use this feature.
An API user's credentials (key and token) expire after 24 hours. When a user's credentials are expired, the API will return a 102 error code. For this reason, an API user should be logged in before using the API if their last login was longer than 24 hours from the current login.
If an API user is logged in with this feature, a new key and token are returned and should be saved to the user.
| ENDPOINT | POST FIELDS | RESPONSE | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
/login This will return your temporary key/secret pair (valid for 24 hours). Note: Subsequent calls will invalidate previous key/secret pair and give you a new pair. http://demo.raceentry.com/rest/login |
|
Success: Response code: 200
{
"tmp_key":"KEY_HASH", "tmp_secret":"SECRET_HASH", "user":{ "user":{ "user_id":"1", "first_name":"John", "middle_name":null, "last_name":"Doe", "email":"john.doe@example.com", "address":[], "dob":null, "gender":null, "phone":5552356789, "profile_image_url":null, } } } The tmp_key is hashed in our database, so it is important to save this key and associate it with the user before discarding the response data! Failure: Response Code: 200
{ "error":{ "error_code":102, "error_msg":"E-mail or password invalid" } } |
This endpoint will return a list of all the races that the logged in user (determined by the key/secret pair) has permission to access. If a start and end date are provided, it will filter the results accordingly. The race_id found in response to this endpoint will be the id needed for all endpoints that include "/race/{id}"
| ENDPOINT | RESPONSE |
GET /raceshttp://demo.raceentry.com/rest/races?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&start_date=2026-04-01&end_date=2026-04-30 http://demo.raceentry.com/rest/races?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH |
Success: Response code: 200
{
"races": [ { "race": { "race_id": 21, "name": "City Fun Run", "last_date": "04/17/2026", "last_end_date": "04/17/2026", "next_date": "04/17/2026", "next_end_date": "04/17/2026", "is_draft_race": "F", "is_private_race": "F", "is_registration_open": "F", "created": "04/17/2025 15:51", "last_modified": "04/29/2025 10:09", "description": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><p>Fun for the whole family!</p></body></html>\n", "url": "http://raceentry.com/city-fun-run/race-info", "external_race_url": null, "external_results_url": null, "fb_page_id": null, "fb_event_id": null, "address": { "street": "123 Main St", "street2": null, "city": "Provo", "state": "UT", "zipcode": "84601", "country_code": "USA" }, "timezone": "America/Denver", "logo_url": "https://cfimages.raceentry.com/test/logo/city-fun-run-registration-logo-21.jpg?v=1745428804", "can_use_registration_api": "F", "real_time_notifications_enabled": "F", "events": [], "race_event_days": [ { "race_event_days_id": 21, "start_date": "04/17/2026", "end_date": "04/17/2026" } ] } } ] } |
|---|
These are the endpoints that will return information about and set certain settings for participants. They will only give information about races that the user (determined by the key/secret pair) has permission to access.
| Parameter | Format | Value | Effect | Applies To |
|---|---|---|---|---|
| tmp_key | string | Returned from login API call | Allows authorized access to API endponts | ALL (required) |
| tmp_secret | string | Returned from login API call | Allows authorized access to API endponts | ALL (required) |
| modified_after_timestamp | integer | Unix timestamp | Only returns participants who were modified after this timestamp. If a timestamp is not provided, the current time will be used. |
GET /participants (required) GET /removed_participants (required) |
| ENDPOINT | RESPONSE | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET race/{id}/participantsReturns a list of races and their participants that have been added or modified since the provided modified_after_timestamp. http://demo.raceentry.com/rest/race/{id}/participants?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&modified_after_timestamp=1745485200 |
Success: Response code: 200
[
{ "event": { "event_id": 16, "participants": [] }, "participants": [ { "user": { "user_id": 30, "first_name": "John", "middle_name": null, "last_name": "Doe", "email": "john.doe@example.com", "address": { "street": "123 Main St", "city": "Provo", "state": "UT", "zipcode": "84601", "country_code": "USA" }, "dob": "1990-05-05", "gender": "M", "phone": "5555555555", "profile_image_url": null }, "registration_id": 30, "event_id": 16, "rsu_transaction_id": null, "transaction_id": null, "bib_num": 50004, "chip_num": 50004, "age": 35, "registration_date": "04/24/2025 10:22", "team_id": null, "team_name": null, "team_type_id": null, "team_type": null, "team_gender": null, "team_bib_num": null, "last_modified": 1745877909, "imported": "T", "race_fee": "$0.00", "offline_payment_amount": "$0.00", "processing_fee": "$0.00", "processing_fee_paid_by_user": "$0.00", "processing_fee_paid_by_race": "$0.00", "partner_fee": "$0.00", "affiliate_profit": "$0.00", "extra_fees": "$0.00", "amount_paid": "$0.00", "usatf_discount_amount_in_cents": "$0.00", "usatf_discount_additional_field": null, "giveaway": null, "giveaway_option_id": null, "race_corral_id": null, "race_corral_name": null, "checked_in": "F", "checkin_date": null, "checked_in_by_user_id": null }, { "user": { "user_id": 29, "first_name": "Jane", "middle_name": null, "last_name": "Doe", "email": "jane.doe@example.com", "address": { "street": "123 Main St", "city": "Provo", "state": "UT", "zipcode": "84601", "country_code": "USA" }, "dob": "2000-04-13", "gender": "F", "phone": "5555555555", "profile_image_url": null }, "registration_id": 29, "event_id": 16, "rsu_transaction_id": null, "transaction_id": null, "bib_num": 50003, "chip_num": 50003, "age": 25, "registration_date": "04/24/2025 09:59", "team_id": null, "team_name": null, "team_type_id": null, "team_type": null, "team_gender": null, "team_bib_num": null, "last_modified": 1745877909, "imported": "T", "race_fee": "$0.00", "offline_payment_amount": "$0.00", "processing_fee": "$0.00", "processing_fee_paid_by_user": "$0.00", "processing_fee_paid_by_race": "$0.00", "partner_fee": "$0.00", "affiliate_profit": "$0.00", "extra_fees": "$0.00", "amount_paid": "$0.00", "usatf_discount_amount_in_cents": "$0.00", "usatf_discount_additional_field": null, "giveaway": null, "giveaway_option_id": null, "race_corral_id": null, "race_corral_name": null, "checked_in": "F", "checkin_date": null, "checked_in_by_user_id": null }, ] }, { "event": { "event_id": 67, "participants": [] }, "participants": [ { "user": { "user_id": 71, "first_name": "Bob", "middle_name": null, "last_name": "Smith", "email": "bob.smith@example.com", "address": { "street": "456 Main St", "city": "Orem", "state": "UT", "zipcode": "84057", "country_code": "USA" }, "dob": "1989-01-01", "gender": "", "phone": "5555555555", "profile_image_url": null }, "registration_id": 71, "event_id": 67, "rsu_transaction_id": null, "transaction_id": null, "bib_num": 50007, "chip_num": 50007, "age": 36, "registration_date": "04/11/2025 16:53", "team_id": null, "team_name": null, "team_type_id": null, "team_type": null, "team_gender": null, "team_bib_num": null, "last_modified": 1757631211, "imported": "F", "race_fee": "$0.00", "offline_payment_amount": "$0.00", "processing_fee": "$0.00", "processing_fee_paid_by_user": "$0.00", "processing_fee_paid_by_race": "$0.00", "partner_fee": "$0.00", "affiliate_profit": "$0.00", "extra_fees": "$0.00", "amount_paid": "$0.00", "usatf_discount_amount_in_cents": "$0.00", "usatf_discount_additional_field": null, "giveaway": null, "giveaway_option_id": null, "race_corral_id": null, "race_corral_name": null, "checked_in": "F", "checkin_date": null, "checked_in_by_user_id": null }, ] } ] |
||||||||||||||||||||||||||||||||||||||||||
POST race/{id}/participantsUsed to add or modify participant(s). http://demo.raceentry.com/rest/race/{id}/participants?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH
|
Success: Response code: 200
{
"participants": [ { "registration_id": "73" }, { "registration_id": "74" } ] } |
||||||||||||||||||||||||||||||||||||||||||
POST race/{id}/switch_participant_eventsUsed to switch participant(s) from one event to another http://demo.raceentry.com/rest/race/{id}/switch_participant_events?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH
|
Success: Response code: 200
{ "participants": [ { "registration_id": 72 }, { "registration_id": 76 } ] } |
||||||||||||||||||||||||||||||||||||||||||
POST race/{id}/delete_participantsUsed to delete participant(s). http://demo.raceentry.com/rest/race/{id}/delete_participants?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH
|
Success: Response code: 200
{
"participants": [ { "registration_id": 25 }, { "registration_id": 26 } ] } |
||||||||||||||||||||||||||||||||||||||||||
GET race/{id}/removed_participantsReturns a list of participants that have been removed since the provided modified_after_timestamp. http://demo.raceentry.com/rest/race/{id}/removed_participants?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&modified_after_timestamp=1745485200 |
Success: Response code: 200
[
{ "event": { "event_id": 16, "participants": [] }, "participants": [ { "user": { "user_id": 26, "first_name": "John", "middle_name": null, "last_name": "Doe", "email": "john.doe@example.com", "address": { "street": "123 Main St", "city": "Provo", "state": "UT", "zipcode": "84601", "country_code": "USA" }, "dob": "1990-05-05", "gender": "M", "phone": "5555555555", "profile_image_url": null }, "registration_id": 26, "event_id": 16, "rsu_transaction_id": null, "transaction_id": null, "bib_num": 50000, "chip_num": 50000, "age": 35, "registration_date": "04/24/2025 10:22", "team_id": null, "team_name": null, "team_type_id": null, "team_type": null, "team_gender": null, "team_bib_num": null, "last_modified": 1757723980, "imported": "T", "race_fee": "$0.00", "offline_payment_amount": "$0.00", "processing_fee": "$0.00", "processing_fee_paid_by_user": "$0.00", "processing_fee_paid_by_race": "$0.00", "partner_fee": "$0.00", "affiliate_profit": "$0.00", "extra_fees": "$0.00", "amount_paid": "$0.00", "usatf_discount_amount_in_cents": "$0.00", "usatf_discount_additional_field": null, "giveaway": null, "giveaway_option_id": null, "race_corral_id": null, "race_corral_name": null, "checked_in": "F", "checkin_date": null, "checked_in_by_user_id": null }, { "user": { "user_id": 25, "first_name": "Jane", "middle_name": null, "last_name": "Doe", "email": "jane.doe@example.com", "address": { "street": "123 Main St", "city": "Provo", "state": "UT", "zipcode": "84601", "country_code": "USA" }, "dob": "2000-04-13", "gender": "F", "phone": "5555555555", "profile_image_url": null }, "registration_id": 25, "event_id": 16, "rsu_transaction_id": null, "transaction_id": null, "bib_num": 2, "chip_num": 2, "age": 25, "registration_date": "04/24/2025 09:59", "team_id": null, "team_name": null, "team_type_id": null, "team_type": null, "team_gender": null, "team_bib_num": null, "last_modified": 1757723980, "imported": "T", "race_fee": "$0.00", "offline_payment_amount": "$0.00", "processing_fee": "$0.00", "processing_fee_paid_by_user": "$0.00", "processing_fee_paid_by_race": "$0.00", "partner_fee": "$0.00", "affiliate_profit": "$0.00", "extra_fees": "$0.00", "amount_paid": "$0.00", "usatf_discount_amount_in_cents": "$0.00", "usatf_discount_additional_field": null, "giveaway": null, "giveaway_option_id": null, "race_corral_id": null, "race_corral_name": null, "checked_in": "F", "checkin_date": null, "checked_in_by_user_id": null } ] }, { "event": { "event_id": 67, "participants": [] } }, { "event": { "event_id": 68, "participants": [] } } ] |
These are the endpoints that will return information about and set certain settings for teams. They will only give information about races that the user (determined by the key/secret pair) has permission to access.
| Parameter | Format | Value | Effect | Applies To |
|---|---|---|---|---|
| tmp_key | string | Returned from login API call | Allows authorized access to API endponts | ALL (required) |
| tmp_secret | string | Returned from login API call | Allows authorized access to API endponts | ALL (required) |
| Endpoint | Response | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET race/{id}/teamsReturns a list of teams for the specified id. http://demo.raceentry.com/rest/race/{id}/teams?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH |
Success: Response code: 200
[
{ "team_id": 9, "team_type_id": 68, "team_name": "Sole Survivors", "team_gender": null, "team_bib_num": null, "team_age_restriction_id": null, "last_modified_ts": 1626974217 }, { "team_id": 10, "team_type_id": 68, "team_name": "Speedy Squad", "team_gender": null, "team_bib_num": null, "team_age_restriction_id": null, "last_modified_ts": 1626974217 } ] |
|||||||||||||||||||||
POST race/{id}/teamsUsed to add or modify team(s) http://demo.raceentry.com/rest/race/{id}/teams?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH
|
Success: Response code: 200
{ "race_teams": [ { "team_id": 11 } ] } | |||||||||||||||||||||
GET race/{id}/teams/team_typesReturns a list of team types http://demo.raceentry.com/rest/race/{id}/teams/team_types?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH |
Success: Response code: 200
{ "race_team_types": [ { "team_type_id": 68, "team_type": "Team Marathon", "team_type_desc": null, "min_members": 0, "max_members": 5, "min_male_members": 0, "max_male_members": null, "min_female_members": 0, "max_female_members": null, "max_num_teams": 13, "valid_event_ids": [ 68 ], "require_gender_selection": "F", "allow_all_male_team": "T", "allow_all_female_team": "T", "allow_coed_team": "T", "require_age_range_selection": "F", "team_age_restrictions": [] } ] } |