Skip to main content

Register Users

Register a user in the Distinct system via the user registration endpoint.

Endpoint

POST https://api.distinct.so/v2/registration

Request Headers

KeyValue
Content-Typeapplication/json
x-distinct-api-keyYour shared API key

Request Body

KeyTypeRequiredDescription
firstNameStringYesFirst name of the user
lastNameStringNoLast name of the user
emailStringYesEmail address of the user
isTermsAndConditionsCheckedBooleanYesIndicates if the user agreed to the TOS and Privacy Policy
subscribeNewsletterBooleanYesIndicates if the user opted in to receive promotional emails
phoneNumberStringNoUnformatted phone number without country code
phoneCountryCodeStringNoPhone number country code (e.g. "+1")
phoneCountryNameStringNoPhone number country name (e.g. "us")
birthYearNumberYesBirth year of the user
birthMonthNumberYesBirth month of the user
birthDateNumberYesBirth day of the user
dobISOTimestampYesFull date of birth in ISO date/time format
experienceValueStringYesUnique experience identifier mapping the user to an experience
registrationPageValueStringYesUnique registration page identifier mapping the user to a registration page
languageStringYesLanguage preference (e.g. "en-IE")
externalVendorIdStringYesExternal mapping ID (e.g. for Vendor campaignId: "mkod0a8imkod0a")
info
  • Optional fields should be omitted from the request body if there are no values — do not send them as empty strings or null.
  • When a phone number is available, include all phone fields (phoneNumber, phoneCountryCode, phoneCountryName).
  • If externalVendorId is sent, registrationPageValue must be set to "external-vendor-registration".

Response

Success (200)

{
"statusCode": 200,
"message": "Registration successful.",
"data": {}
}

Example Request

cURL

curl -X POST 'https://api.distinct.so/v2/registration' \
-H 'Content-Type: application/json' \
-H 'x-distinct-api-key: <shared-api-key>' \
-d '{
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"isTermsAndConditionsChecked": true,
"subscribeNewsletter": false,
"phoneNumber": "5555555555",
"phoneCountryCode": "+1",
"phoneCountryName": "us",
"dob": "1990-05-15T00:00:00Z",
"experienceValue": "wc-trophy-tour-2026",
"registrationPageValue": "external-vendor-registration",
"language": "en-IE",
"externalVendorId": "mkod0a8imkod0a"
}'

Replace the placeholders:

  • <shared-api-key> — your actual shared API key from Distinct
tip

The birthDate and birthMonth fields do not require leading zeros. If you do not have a newsletter/promotional email opt-in, set subscribeNewsletter to false.

Response Structure

Status CodeDescriptionExample Response
200User registered successfully{"statusCode": 200, "message": "User created successfully", "data": true}
400Phone number already exists{"statusCode": 400, "message": "User phone number already registered", "data": {}}
400Missing external vendor ID (only when registrationPageValue is "external-vendor-registration"){"statusCode": 400, "message": "External vendor id is required", "data": {}}
400Registration page not found (when externalVendorId is sent but no registration page matches){"statusCode": 400, "message": "Registration page not found", "data": {}}
500Internal server error{"statusCode": 500, "message": "Event is not active, Please report this issue to the support team.", "data": {}}

Notes

  1. The x-distinct-api-key will be shared with you by the Distinct team and must be included in every API request.
  2. The request body must be sent as application/json with all required fields.
  3. Optional fields should be omitted from the payload if there are no values.
  4. When a phone number value is available, include all phone fields (phoneNumber, phoneCountryCode, phoneCountryName).
  5. If externalVendorId is to be sent, the value for registrationPageValue must be "external-vendor-registration".