Create Race Registration

Submit a new race registration to the HIQOR ingestion platform. This endpoint handles structured validation, idempotent duplicate detection, and unified UUID tracking in real time.

Endpoint

POSThttps://tdpudkswxg.execute-api.us-west-2.amazonaws.com/registration/createRaceRegistration

Headers

Authorization: Bearer <jwt_token>
Content-Type: application/json

Request Body

{
  "assessmentType": "Race Registration",
  "funnelID": "<authorized_funnel_slug>",
  "clientId": "<partner_client_id>",
  "firstName": "John",
  "lastName": "Doe",
  "email": "john@example.com",
  "phone": "2105551234",
  "eventName": "Terrain Race | Oklahoma City 2026",
  "eventDate": "2026-07-31",
  "registrationDate": "2026-02-24",
  "ageRange": "25–34 Core Participants",
  "birthdate": "1994-05-10",
  "city": "Charlotte",
  "state": "NC",
  "zip": "28211",
  "policyNumber": "TRO2026-WAIVER-45892",
  "policyLink": "https://policies.terrainrace.com/okc-2026/waiver",
  "consentURL": "https://example.com/marketing-consent",
  "eventConsentOptIn": "yes",
  "mutualLeadGenConsent": "yes",
  "IPAddress": "192.168.1.1"
}

Field Requirements

Required Fields

  • funnelID
  • email
  • Authorization (request header)
  • phone (required if mutualLeadGenConsent = "yes")
  • consentURL
  • firstName
  • lastName
  • city
  • state
  • zip
  • eventConsentOptIn
  • mutualLeadGenConsent

Optional Fields

  • assessmentType (defaults to "Race Registration")
  • clientId
  • policyNumber
  • policyLink
  • IPAddress
  • ageRange
  • eventDate
  • registrationDate
  • birthdate

Age Handling for Compliance

Partners may provide age in one of two ways:

  • birthdate (exact DOB), or
  • ageRange (privacy-preserving alternative)

If birthdate cannot be shared for compliance or privacy reasons, partners may optionally send ageRange instead. The platform will accept and store either field, or both, if provided.

Recommended ageRange values:

  • "Under 18 Youth"
  • "18–24 College / Entry"
  • "25–34 Core Participants"
  • "35–44 Family Builders"
  • "45–54 Established"
  • "55+ Active Seniors"

If neither birthdate nor ageRange is provided, the registration can still be created, but age segmentation for analytics may be unavailable.

Example cURL Request

curl -X POST https://tdpudkswxg.execute-api.us-west-2.amazonaws.com/registration/createRaceRegistration \
  -H "Authorization: Bearer <jwt_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "assessmentType": "Race Registration",
    "funnelID": "<authorized_funnel_slug>",
    "clientId": "<client_id>",
    "firstName": "John",
    "lastName": "Doe",
    "email": "john@example.com",
    "phone": "2105551234",
    "eventName": "Terrain Race | Oklahoma City 2026",
    "eventDate": "2026-07-31",
    "registrationDate": "2026-02-24",
    "ageRange": "25–34 Core Participants",
    "birthdate": "1994-05-10",
    "city": "Charlotte",
    "state": "NC",
    "zip": "28211",
    "policyNumber": "TRO2026-WAIVER-45892",
    "policyLink": "https://policies.terrainrace.com/okc-2026/waiver",
    "consentURL": "https://example.com/marketing-consent",
    "eventConsentOptIn": "yes",
    "mutualLeadGenConsent": "yes",
    "IPAddress": "192.168.1.1"
  }'

Success Response

{
  "message": "Race Registration created",
  "uuid": "<generated_uuid>"
}

Idempotent Duplicate Handling

If a registration already exists for the same identifier, the API returns the following response instead of creating a duplicate record:

{
  "message": "Race Registration already exists (idempotent). Not re-sent."
}

Validation Errors

Missing Required Fields

{
  "message": "Missing required fields (email or funnelID)"
}

Conditional Requirement

{
  "message": "Missing required field (phone)"
}

Invalid Funnel

{
  "message": "Race Registration is not enabled for this funnel"
}

Rate Limiting

The following limits apply per credential set:

  • 100 requests per minute
  • 1,000 requests per hour