Registrants
Create and update registrants with complete curl request examples.
Release timing: This page includes changes planned for 9 October 2026. See the deployment note before using the updated operations or inputs.
Build a request
Example data only. No request is sent.
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request POST \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/registrants' \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--data-raw '{
"external_id": "CRM-10042",
"external_email": "alex@example.com",
"external_first_name": "Alex",
"external_last_name": "Morgan",
"send_email": false
}'{
"data": {
"id": "1201",
"type": "registrant"
}
}The token scope determines returned fields. This selector illustrates that configuration; it does not change your token or the request.
Collection path: events/{event_id}/registrants
POST creates an invited registrant. PATCH uses Brella’s invited-registrant update flow and can be rejected when the record’s current state is not compatible with that flow.
POST a registrant
View the complete cURL example
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request POST \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/registrants' \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--data-raw '{
"external_id": "CRM-10042",
"external_email": "alex@example.com",
"external_first_name": "Alex",
"external_last_name": "Morgan",
"external_company": "Example Ltd",
"external_title": "VP Partnerships",
"pitch": "Looking for distribution partners",
"skip_networking": false,
"ticket_type_list_id": 301,
"custom_list_ids": [
401,
402
],
"persona": "Buyer",
"function": "Partnerships",
"industry": "Technology",
"selected_interests": [
{
"interest_id": 701,
"intent_ids": [
801,
802
]
}
],
"custom_fields_attributes": [
{
"key": "company_size",
"values": [
"51-200"
]
}
],
"seats": 1,
"send_email": false,
"external_qr_string": "BADGE-10042"
}'The response type is registrant. Useful write-response fields include external_id, external_email, external_first_name, external_last_name, ticket_type_list_id, seats_count, and updated_at.
PATCH a registrant
This example updates profile source data and fully replaces custom-list membership and interest selections.
View the complete cURL example
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request PATCH \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/registrants/1201' \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--data-raw '{
"external_title": "SVP Partnerships",
"pitch": "Expanding our partner network",
"custom_list_ids": [
401,
403
],
"selected_interests": [
{
"interest_id": 701,
"intent_ids": [
801
]
}
],
"send_email": false
}'Set or clear an external QR value
Allow the external_qr_string input mapping in the registrant scope. POST can set it on a new invited registrant; PATCH can set an override on an invited or joined registrant:
{ "external_qr_string": "BADGE-10042" }
Clear the target record’s override with:
{ "external_qr_string": null }
Blank strings also clear it. Non-blank values must be unique within the event, at most 255 characters and outside Brella’s internal QR format. Internal-format and duplicate values return validation errors.
Configure external_qr_string and internal_qr_string as readable or write-response fields only when needed. external-qr-string returns the effective value; a joined registrant can inherit a claimed personal invite’s value after its own override is cleared. internal-qr-string remains the stable Brella QR value. Check both to verify the intended scanning result; QR behavior explains the fallback.
Input reference
19 inputs. Expand a field for its request type and update behavior. These are the example request keys; your administrator can configure aliases.
external_idScalar string or `null`
- POST
- Optional
- PATCH
- Optional
External identifier.
external_emailScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Invited identity email.
external_first_nameScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Invited first name.
external_last_nameScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Invited last name.
external_companyScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Invited company.
external_titleScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Invited title.
pitchScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Networking pitch.
skip_networkingJSON boolean
- POST
- Optional
- PATCH
- Optional
Networking preference.
appearanceScalar string or `null`
- POST
- Optional
- PATCH
- Optional
dark, light, or system.
ticket_type_list_idScalar ID
- POST
- Optional
- PATCH
- Optional
Invalid or omitted POST values fall back to the event's default ticket type.
custom_list_idsArray of scalar IDs
- POST
- Optional
- PATCH
- Optional
Full custom-list membership replacement. [] removes all custom-list memberships.
personaScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Name, not ID. Brella imports or resolves the event value.
functionScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Name, not ID.
industryScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Name, not ID.
selected_interestsArray of objects
- POST
- Optional
- PATCH
- Optional
Entries use interest_id and intent_ids. PATCH replaces unselected interests.
custom_fields_attributesArray of objects
- POST
- Optional
- PATCH
- Optional
Entries use key plus value or values.
seatsScalar number
- POST
- Optional
- PATCH
- Optional
Requested seat count. Default to 1 \- Do NOT use values larger than 1\. Seats are a legacy concept that is to be deprecated.
send_emailJSON boolean
- POST
- Optional
- PATCH
- Optional
Defaults to true. Use a JSON boolean, not the string "false".
external_qr_stringScalar string or `null`
- POST
- Optional
- PATCH
- Optional, including joined registrants
External QR override, at most 255 characters and unique within the event. Null or blank clears the record override. Internal Brella QR formats, including encoded variants, are rejected. A joined registrant may then inherit a personal invite value; read external-qr-string for the effective value and internal-qr-string for the stable Brella value.
Understand collection updates
What does this PATCH change?
Compare omitted, replaced and cleared collections. These are conceptual field values, not a live API response.
{
"custom_list_ids": [
401,
402
]
}{}{
"custom_list_ids": [
401,
402
]
}Omitting the field keeps the existing collection.
List IDs must belong to the event. This illustrates a valid, authorized update.