POST /api/v2/account/set
Creates a new participant account or updates an existing one within a given event. When a match is found by id, external_id, or email, the existing record is updated. When no match is found, a new account is created.
Authentication
This endpoint requires authentication via an API key passed in the Authorization header using the Bearer scheme:
Authorization: Bearer <your_api_key>
If the API key is missing or invalid, the request will be rejected with a 403 Forbidden response.
Endpoint
POST /api/v2/account/set
Create vs Update — How Matching Works
The endpoint attempts to find an existing account in the following order:
-
By
id— if provided, the account with that internal ID is updated -
By
external_id— if noidis given, the account with the matching external ID is updated -
By
email— if neitheridnorexternal_idis given, the account with the matching email is updated
If none of the above produce a match, a new account is created.
The info field in the response indicates which matching strategy was used (e.g. "Account match: email").
Note: Exhibitor owner accounts and accounts with admin-only roles cannot be updated via this endpoint.
Field scope — global vs local
Participant accounts are shared across all events within the same data environment. Parameters in this endpoint fall into two categories:
Global fields are stored at the account level and shared across all events. Updating any of these fields in a specific event will trigger a cascade update in every other event this account is attached to within the same data environment.
This includes: first_name, last_name, email, title, job_title, company_name, photo, password, default_lang, external_id, external_qr, and all profile, contact, location, and social media fields.
Local fields are scoped to the event identified by event_id. They only affect the participant's record within that event and do not cascade to other events.
|
Local parameter |
What it controls |
|---|---|
|
|
Participant status within this event |
|
|
Participant category within this event |
|
|
Speaker role for this event |
|
|
Moderator role for this event |
|
|
Exhibitor team assignment for this event |
|
|
Business matching activity categories for this event |
|
|
Business matching interest categories for this event |
|
|
Networking opt-in for this event |
|
|
Connection settings for this event |
|
|
Notification preferences for this event |
Body Parameters
Content-Type: multipart/form-data
Identity & Lookup
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
integer |
Yes |
— |
Valid event ID |
The ID of the event this participant belongs to |
|
|
integer |
No |
— |
Valid account ID |
Internal account ID. When provided, used as the primary lookup key for updates |
|
|
string |
Required on create |
— |
Valid email address |
Participant email address and login. Used as a fallback lookup key |
|
|
string |
No |
— |
Any string |
External system identifier. Used as a secondary lookup key for updates |
Personal Information
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
string |
Required on create |
— |
Any string |
First name |
|
|
string |
Required on create |
— |
Any string |
Last name |
|
|
string |
No |
— |
Must match a configured salutation value (e.g. |
Honorific title / salutation |
|
|
string |
No |
— |
Any string |
Job title / position |
|
|
string |
No |
— |
Any string |
Company name |
|
|
string |
No |
— |
Any string |
Participant biography or description |
|
|
string |
No |
— |
Any string |
Matchmaking introduction message |
|
|
string |
No |
— |
Any string |
Date of birth |
|
|
string |
No |
— |
Any string |
Organisation name |
|
|
string |
No |
— |
Any string |
Organisation ID |
Location
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
string |
No |
— |
2-letter ISO 3166-1 alpha-2 code (e.g. |
Country. Resolved against the platform's country list; non-matching values are recorded as non-fatal errors |
|
|
string |
No |
— |
2-letter ISO 3166-1 alpha-2 code or full country name |
Nationality |
|
|
string |
No |
— |
Region name; requires |
Region / state |
|
|
string |
No |
— |
City name (max 80 characters); requires |
City |
|
|
string |
No |
— |
Any string |
Postal / ZIP code |
|
|
string |
No |
— |
Any string |
Street address |
Contact
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
string |
No |
— |
Any string |
Phone number |
|
|
string |
No |
— |
Any string |
Website URL |
Profile Photo
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
string or file |
No |
— |
URL pointing to an image, or a multipart file upload. Accepted MIME types: |
Profile photo. Non-supported formats are recorded as non-fatal errors and the photo is not saved |
Social Media
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
string |
No |
— |
URL |
LinkedIn profile URL |
|
|
string |
No |
— |
URL |
Twitter / X profile URL |
|
|
string |
No |
— |
URL |
Facebook page URL |
|
|
string |
No |
— |
URL |
Instagram profile URL |
|
|
string |
No |
— |
URL |
YouTube channel URL |
Account Settings
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
string |
No |
|
|
Participant status within the event |
|
|
integer |
No |
— |
Valid participant category ID for the event. Use |
Assigns the participant to a category |
|
|
string |
No |
— |
ISO 639-1 language code (e.g. |
Default language for platform notifications |
|
|
string |
No |
Auto-generated on create |
Min 8 characters; must include at least one uppercase letter, one lowercase letter, one digit, and one special character; no whitespace |
Account password. Password complexity failures are recorded as non-fatal errors and the password is not changed |
⚠️
send_emailwarning: When set totrue, a registration confirmation email is sent to the participant. This applies to every request — not just the initial creation. Do not hardcodesend_email=truein your integration, as it will trigger an email on every update call. Only passsend_email=truewhen you explicitly intend to send a registration email.
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
boolean |
No |
|
|
Sends a registration confirmation email to the participant when |
Event Roles
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
boolean |
No |
— |
|
Assigns or removes the speaker role for this event |
|
|
boolean |
No |
— |
|
Assigns or removes the moderator role for this event |
Exhibitor Assignment
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
integer |
No |
— |
Valid exhibitor ID for the event |
Associates the participant with an exhibitor team |
|
|
string |
No |
— |
Exhibitor's external ID |
Alternative to |
|
|
string |
No |
— |
|
Role of the participant within the exhibitor team. |
|
|
integer |
No |
— |
Valid agent account ID |
Agent ID for hosted buyer flows |
Business Matching
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
array |
No |
— |
Array of valid product category IDs, or a comma-separated string |
Business matching activity categories |
|
|
array |
No |
— |
Array of valid product category IDs |
Business matching interest categories |
|
|
boolean |
No |
|
|
When |
Connection & Communication Settings
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
boolean |
No |
— |
Exactly |
Networking opt-in flag. Any value other than |
|
|
integer |
No |
|
|
Controls whether other participants can send meeting requests to this account |
|
|
integer |
No |
|
|
Controls whether other participants can send messages to this account |
|
|
integer |
No |
|
|
Meetings feature flag |
|
|
integer |
No |
|
|
Chat feature flag |
Notification Preferences
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
boolean |
No |
|
|
Receive notification when an appointment is confirmed |
|
|
boolean |
No |
|
|
Receive notification when an appointment is cancelled |
|
|
boolean |
No |
|
|
Receive notification when a new appointment request is received |
|
|
boolean |
No |
|
|
Receive notification when an appointment is rescheduled |
|
|
boolean |
No |
|
|
Receive notification when a new message is received |
External Identifiers
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
string |
No |
— |
Any string |
External barcode value |
|
|
string |
No |
— |
Any string |
External QR code value |
Custom Fields
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
string |
No |
— |
Field name must not exceed 64 characters. For multi-value fields, separate values with |
Any custom registration form field configured for the event. Pass the field's system name as the parameter key |
Performance
|
Parameter |
Type |
Required |
Default |
Accepted Values / Format |
Description |
|---|---|---|---|---|---|
|
|
boolean |
No |
— |
|
When |
Response
Success Response (HTTP 200)
{
"code": 200,
"errors": null,
"data": {
"id": 12345,
"email": "john.doe@example.com",
"status": "created",
"external_id": null,
"info": ["Account match: email"],
"errors": [],
"speaker": true,
"moderator": false
},
"response_id": "1700000000.12345"
}
|
Field |
Type |
Description |
|---|---|---|
|
|
integer |
Internal account ID of the created or updated participant |
|
|
string |
Email address of the account |
|
|
string |
|
|
|
string or null |
The external ID stored on the account, if set |
|
|
array or null |
Describes which matching strategy was used (e.g. |
|
|
array |
Non-fatal field-level errors encountered during the request. The account is still saved when these occur |
|
|
boolean |
Present when the speaker role was assigned or removed |
|
|
boolean |
Present when the moderator role was assigned or removed |
About non-fatal errors: Some field-level issues do not prevent the account from being saved. They are returned in the
errorsarray in the response. Always check this field to confirm all parameters were processed correctly.
Error Responses
|
HTTP Code |
Condition |
Error Message |
|---|---|---|
|
400 |
|
|
|
400 |
|
|
|
400 |
|
|
|
400 |
Matched account has admin-only roles |
|
|
400 |
Matched account is an exhibitor owner |
|
|
400 |
Required field missing on create ( |
|
|
400 |
Account creation failed |
|
|
400 |
Account save failed |
|
|
403 |
Missing or invalid API key |
|
Example Request — Create
curl -X POST "https://your-event-domain.com/api/v2/account/set" \
-H "Authorization: Bearer your_api_key_here" \
-F "event_id=7" \
-F "first_name=John" \
-F "last_name=Doe" \
-F "email=john.doe@example.com" \
-F "status=ACTIVE" \
-F "company_name=Acme Corp" \
-F "job_title=Product Manager"
Example Response — Create
{
"code": 200,
"errors": null,
"data": {
"id": 12345,
"email": "john.doe@example.com",
"status": "created",
"external_id": null,
"errors": []
},
"response_id": "1700000000.12345"
}
Example Request — Update
curl -X POST "https://your-event-domain.com/api/v2/account/set" \
-H "Authorization: Bearer your_api_key_here" \
-F "event_id=7" \
-F "id=12345" \
-F "job_title=Senior Product Manager" \
-F "company_name=Acme Corp Ltd"
Example Response — Update
{
"code": 200,
"errors": null,
"data": {
"id": 12345,
"email": "john.doe@example.com",
"status": "updated",
"external_id": null,
"info": ["Account match: id"],
"errors": []
},
"response_id": "1700000000.12346"
}