licenseId. Creating a participant is idempotent — if a participant with the given licenseId already exists, the API returns the existing record rather than creating a duplicate. This makes it safe to call the create endpoint at sign-up time without checking for existence first.
1
Create a participant
Send a The response shape is the same whether the participant was newly created (
POST request to /api/v1/participants. This endpoint requires the CRUD or ADMIN role.201 Created) or already existed (200 OK):The
POST /api/v1/participants endpoint is idempotent on licenseId. If a participant with the same licenseId already exists, the API returns 200 OK with the existing record — it does not create a duplicate and does not update any fields. Use PATCH /api/v1/participants/{participantId} if you need to update an existing participant’s details.2
Query participants
Retrieve all participants or use the paginated endpoint for large lists. By default the paged endpoint sorts by
lastName.3
Update a participant
Use
PATCH /api/v1/participants/{participantId} to change a participant’s details. This endpoint requires the CRUD or ADMIN role. All fields are optional — only the fields you include are updated.4
Configure custom sign-up fields
The
extraFieldsJson field accepts a JSON string containing any key-value data you collect from participants at registration time — team names, driver ratings, consent flags, or other event-specific information. The value is stored and returned as a parsed JSON object.To define which custom fields appear in your sign-up forms, use the signup-fields endpoint and configure them per event. You can also manage API keys and access roles for your sign-up integration from the API keys configuration page.