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

Custom field definitions

Custom field definitions: available fields, filters, associations, and API operations.

Release timing: This page includes changes planned for 9 October 2026. See the deployment note before using the updated operations or inputs.

Operations

Event-level resource. Every operation requires an enabled Core API scope for this resource and access to the URL context.

GETList records

/api/core/organizations/123/events/456/custom-field-definitions

Permission: Read access. Readable fields, query filters and related objects must be selected in the scope.

curl --fail-with-body --silent --show-error --globoff --max-time 30 --request GET \
  --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}"

Response: 200 OK. A JSON:API data array and pagination metadata. Default page size 30; maximum 100.

View response structure
{
  "data": [
    {
      "id": "1201",
      "type": "custom-field-definition"
    }
  ],
  "meta": {
    "total_count": 1,
    "total_pages": 1,
    "current_page": 1
  }
}

Illustrative, with no additional response fields selected.

Errors: 400 for invalid parameter shapes; 403 for a missing/expired token or disallowed operation; 404 when the URL context, record or a referenced record is inaccessible; 429 for rate limits. Troubleshooting and retry guidance.

GETGet a record

/api/core/organizations/123/events/456/custom-field-definitions/1201

Permission: Read access. Readable fields, query filters and related objects must be selected in the scope.

curl --fail-with-body --silent --show-error --globoff --max-time 30 --request GET \
  --url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/custom-field-definitions/1201' \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}"

Response: 200 OK. A JSON:API data object; fields depend on the token scope.

View response structure
{
  "data": {
    "id": "1201",
    "type": "custom-field-definition"
  }
}

Illustrative, with no additional response fields selected.

Errors: 400 for invalid parameter shapes; 403 for a missing/expired token or disallowed operation; 404 when the URL context, record or a referenced record is inaccessible; 429 for rate limits. Troubleshooting and retry guidance.

POSTCreate a record

/api/core/organizations/123/events/456/custom-field-definitions

Permission: Write access with the create action. Every request key must map to an allowed writable field; unconfigured inputs are ignored.

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"
}'

Response: 201 Created. Save data.id for later requests. Attributes come from Write-response fields.

View response structure
{
  "data": {
    "id": "1201",
    "type": "custom-field-definition"
  }
}

Illustrative, with no additional response fields selected.

Errors: 400 for invalid parameter shapes; 403 for a missing/expired token or disallowed operation; 404 when the URL context, record or a referenced record is inaccessible; 422 for validation or business rules; 429 for rate limits. Troubleshooting and retry guidance.

PATCHUpdate a record

/api/core/organizations/123/events/456/custom-field-definitions/901

Permission: Write access with the update action. Every request key must map to an allowed writable field; unconfigured inputs are ignored.

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
}'

Response: 200 OK. Attributes come from Write-response fields; these can differ from readable fields.

View response structure
{
  "data": {
    "id": "1201",
    "type": "custom-field-definition"
  }
}

Illustrative, with no additional response fields selected.

Errors: 400 for invalid parameter shapes; 403 for a missing/expired token or disallowed operation; 404 when the URL context, record or a referenced record is inaccessible; 422 for validation or business rules; 429 for rate limits. Troubleshooting and retry guidance.

PATCH changes supplied fields. Collection inputs can replace existing values; read the input notes before sending arrays.

Path: events/{event_id}/custom-field-definitions
Methods: GET collection/record, POST, PATCH. There is no DELETE operation.

Fields, filters and associations

Browse 15 response fields

The scope chooses these response fields. id is always returned. Configuration names and response names can differ.

event-id
Scope field: event_id
key
Scope field: key
title
Scope field: title
customizable-type
Scope field: customizable_type
visible-to-sponsors
Scope field: visible_to_sponsors
filterable
Scope field: filterable
role
Scope field: role
field-type
Scope field: field_type
options
Scope field: options
position
Scope field: position
visible-on-registrant-profile
Scope field: visible_on_attendee_profile
required
Scope field: required
created-at
Scope field: created_at
updated-at
Scope field: updated_at
is-onboarding-question
Scope field: is_onboarding_question
  • Filters: customizable_type, role, visible_to_sponsors, filterable.
  • Association: onboarding_step_questions → response onboarding-questions, with onboarding-step-id, title, description, position, required.
GET .../custom-field-definitions?customizable_type=Event%3A%3ARegistrant&include=onboarding-questions

POST/PATCH inputs: key, title, customizable_type, visible_to_sponsors, filterable, field_type, options (array), and visible_on_registrant_profile.

{
  "key": "linkedin_url",
  "title": "LinkedIn URL",
  "customizable_type": "Event::Registrant",
  "field_type": "Text",
  "options": [],
  "visible_to_sponsors": true
}

Event::Invite is normalized to Event::Registrant on create. Unsupported customizable types and duplicate keys are rejected. key and customizable_type cannot be changed through PATCH; attempts are ignored. The request parameter visible_on_registrant_profile maps to the underlying writable field exposed in introspection as visible_on_attendee_profile.

Despite its name, is-onboarding-question is the count of onboarding-step question rows for the definition, normally 0 or 1, rather than a JSON boolean.

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