Skip to content
Core API
Esc
↑↓navigate↵open⌘Jpreview
On this page

Custom field definitions

Create and update custom field definitions 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.

POST
Choose the destination IDs
Start with these fields

Must be unique within the event's definitions.

Display title.

Allowed values are Event, Event::Invite, Event::Registrant, RegistrantList, Event::TicketPurchase, Speaker, Sponsors::Sponsor, Timeslot, and Sponsors::Lead. Event::Invite is normalized to Event::Registrant.

Text, SingleChoice, MultipleChoice, or CustomValues.

Add optional fields (4)

Sponsor visibility.

Filtering setting.

Full replacement when supplied. Choice fields require non-empty strings: at most 50 options, each at most 1,000 characters. Bounds are checked when options or field_type changes.

Maps to the introspected field visible_on_attendee_profile.

Use the API address and token from your environment. Set up authentication.

curl --fail-with-body --silent --show-error --globoff --max-time 30 --request POST \
  --url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/custom-field-definitions' \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
  "key": "linkedin_url",
  "title": "LinkedIn URL",
  "customizable_type": "Event::Registrant",
  "field_type": "Text"
}'
201 CreatedIllustrative response
{
  "data": {
    "id": "1201",
    "type": "custom-field-definition"
  }
}

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}/custom-field-definitions

POST a custom field definition

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/custom-field-definitions' \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
  "key": "linkedin_url",
  "title": "LinkedIn URL",
  "customizable_type": "Event::Registrant",
  "visible_to_sponsors": true,
  "filterable": false,
  "field_type": "Text",
  "options": [],
  "visible_on_registrant_profile": true
}'

The response type is custom-field-definition; response attributes include configured fields in kebab-case, such as customizable-type and field-type.

PATCH a custom field definition

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/custom-field-definitions/901' \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
  "title": "LinkedIn profile URL",
  "visible_to_sponsors": false,
  "filterable": true,
  "field_type": "Text",
  "options": [],
  "visible_on_registrant_profile": true
}'

Do not use PATCH to rename key or change customizable_type; the current mutation silently ignores both fields.

Input reference

8 inputs. Expand a field for its request type and update behavior. These are the example request keys; your administrator can configure aliases.

keyScalar string
POST
Required by the model
PATCH
Ignored

Must be unique within the event's definitions.

titleScalar string
POST
Required by the model
PATCH
Used

Display title.

customizable_typeScalar string
POST
Required by the model
PATCH
Ignored

Allowed values are Event, Event::Invite, Event::Registrant, RegistrantList, Event::TicketPurchase, Speaker, Sponsors::Sponsor, Timeslot, and Sponsors::Lead. Event::Invite is normalized to Event::Registrant.

visible_to_sponsorsJSON boolean
POST
Used
PATCH
Used

Sponsor visibility.

filterableJSON boolean
POST
Used
PATCH
Used

Filtering setting.

field_typeScalar string
POST
Required by the model
PATCH
Used

Text, SingleChoice, MultipleChoice, or CustomValues.

optionsArray of strings
POST
Conditional
PATCH
Used

Full replacement when supplied. Choice fields require non-empty strings: at most 50 options, each at most 1,000 characters. Bounds are checked when options or field_type changes.

visible_on_registrant_profileJSON boolean
POST
Used
PATCH
Used

Maps to the introspected field visible_on_attendee_profile.

Map this request key to visible_on_attendee_profile in the token scope.

Choice options are limited to 50 non-empty strings, each at most 1,000 characters. These bounds are checked when options or field type changes. For sponsor-owned lead questions, use the separate scanning-questions resource.

Last updated on October 9, 2026