Insert or Update Participant
#
Insert or update a single participant. Requires a valid session token and the permissions.participants.store permission.
Endpoint
#
POST https://api.tracx.events/v1/connect/participant
{
"Accept": "application/json",
"Authorization": "<connect-token>"
}
Example cURL Request
#
curl -X POST https://api.tracx.events/v1/connect/participant \
-H "Accept: application/json" \
-H "Authorization: <connect-token>" \
-d '{
"unique_id": "1",
"first_name": "Kris",
"last_name": "Kuiper",
"country_code": "nl",
"team_name": null,
"date_of_birth": "2001-01-01",
"start_number": "1",
"chip_code": "0000001",
"gender": "male",
"state": "before",
"race_id": 1
}'
Fields
#
| Field Name |
Required |
Type |
Constraints / Rules |
| unique_id |
Yes |
String |
- Must be an alpha-numeric string with dashes/underscores allowed (alpha_dash) - Maximum length: 100 characters |
| first_name |
Yes |
String |
- Maximum length: 100 characters |
| last_name |
Yes |
String |
- Maximum length: 100 characters |
| country_code |
Optional |
String |
- Must be a valid ISO country code (i.e. NL) |
| team_name |
Optional |
String |
- Maximum length: 100 characters |
| date_of_birth |
Yes |
Date |
- Format: YYYY-MM-DD - Must be a valid date matching the format |
| start_number |
Yes |
String |
- Must be alpha-numeric with dashes/underscores allowed (alpha_dash) - Maximum length: 100 characters |
| chip_code |
Yes |
String |
- Must be exactly 7 characters long (this may be prefixed with leading zero’s) |
| gender |
Optional |
String |
- Allowed values: male, female, neutral |
| state |
Optional |
String |
- Must be one of the following: before, during, paused, resumed, after, finished, did_not_finish, disqualified, did_not_start |
| race_id |
Yes |
Integer |
- Must be an integer |
Sample Response
#
{
"data": {
"id": 1,
"unique_id": "1",
"start_number": "1",
"chip_code": "0000001",
"event_id": 1,
"race_id": 1,
"first_name": "Kris",
"last_name": "Kuiper",
"full_name": "Kris Kuiper",
"country_code": "nl",
"team_name": null,
"date_of_birth": "2001-01-01",
"gender": null,
"state": "before",
"created_at": "2025-02-25 08:30:00",
"updated_at": "2025-03-19 08:38:30"
}
}
Response Fields
#
| Field |
Type |
Description |
| data |
object |
Participant data |
| id |
int |
Unique identifier of the participant |
| unique_id |
string |
External unique ID |
| start_number |
string |
Start number assigned to participant |
| chip_code |
string |
Chip code used for timing (7 characters) |
| event_id |
int |
Event ID associated with the race |
| race_id |
int |
Race ID the participant is registered for |
| first_name |
string |
First name of the participant |
| last_name |
string |
Last name of the participant |
| full_name |
string |
Full name (first_name + last_name) |
| country_code |
string |
ISO country code |
| team_name |
string |
Name of the participant’s team (nullable) |
| date_of_birth |
string |
Date of birth in YYYY-MM-DD format |
| gender |
string |
Gender of the participant (nullable, male, female, neutral) |
| state |
string |
Current state of the participant |
| created_at |
string |
Timestamp when the participant was created (YYYY-MM-DD HH:MM:SS) |
| updated_at |
string |
Timestamp when the participant was last updated (YYYY-MM-DD HH:MM:SS) |
Error Handling
#
| Status Code |
Meaning |
| 200 OK |
Request was successful |
| 401 Unauthorized |
Missing or invalid authentication token |
| 403 Forbidden |
Session Token does not have the required permission |
| 422 Unprocessable Entity |
Validation failed for one or more fields |
Notes
#
- The request must include a valid session token.
- The session token must have the permissions.participants.store permission.
- The endpoint will insert or update a participant based on the unique_id.
- The participant is linked to a specific race and its associated event, inferred via race_id.