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

Registrants

Registrants: 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/registrants

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/registrants' \
  --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": "registrant"
    }
  ],
  "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/registrants/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/registrants/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": "registrant"
  }
}

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/registrants

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

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

View response structure
{
  "data": {
    "id": "1201",
    "type": "registrant"
  }
}

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/registrants/1201

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

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

View response structure
{
  "data": {
    "id": "1201",
    "type": "registrant"
  }
}

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.

DELETEDelete a record

/api/core/organizations/123/events/456/registrants/1201

Permission: Write access with the delete action.

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

Response: 204 No Content, with an empty response body.

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.

Deletion can remove related data or be refused by resource constraints. Read the resource notes and confirm the target before using this operation.

Path: events/{event_id}/registrants

Methods: GET collection/record, POST, PATCH, DELETE.

Fields, filters and associations

Browse 48 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
user-id
Scope field: user_id
status
Scope field: status
order-id
Scope field: order_id
external-id
Scope field: external_id
external-email
Scope field: external_email
external-first-name
Scope field: external_first_name
external-last-name
Scope field: external_last_name
external-company
Scope field: external_company
external-title
Scope field: external_title
external-qr-string
Scope field: external_qr_string
internal-qr-string
Scope field: internal_qr_string
fill-token
Scope field: fill_token
email
Scope field: email
first-name
Scope field: first_name
last-name
Scope field: last_name
company-name
Scope field: company_name
company-title
Scope field: company_title
pitch
Scope field: pitch
skip-networking
Scope field: skip_networking
appearance
Scope field: appearance
onboarding-completed-at
Scope field: onboarding_completed_at
selected-sponsor-id
Scope field: selected_sponsor_id
ticket-id
Scope field: event_ticket_id
ticket-purchase-id
Scope field: event_ticket_purchase_id
ticket-type-id
Scope field: ticket_type_list_id
seats-count
Scope field: seats_count
video-uploads-blocked
Scope field: video_uploads_blocked
created-at
Scope field: created_at
updated-at
Scope field: updated_at
meetings-pending-count
Scope field: meetings_pending_count
meetings-accepted-count
Scope field: meetings_accepted_count
meetings-rejected-count
Scope field: meetings_rejected_count
meetings-cancelled-count
Scope field: meetings_cancelled_count
meetings-rescheduled-count
Scope field: meetings_rescheduled_count
meetings-chat-requested-count
Scope field: meetings_chat_requested_count
meetings-chat-replied-count
Scope field: meetings_chat_replied_count
meetings-draft-count
Scope field: meetings_draft_count
meetings-total-count
Scope field: meetings_total_count
chat-only-requests-count
Scope field: chat_only_requests_count
first-tracking-session-at
Scope field: first_tracking_session_at
latest-tracking-session-at
Scope field: latest_tracking_session_at
tracking-sessions-count
Scope field: tracking_sessions_count
total-duration-seconds
Scope field: total_duration_seconds
total-click-count
Scope field: total_click_count
total-view-count
Scope field: total_view_count
user-profile
Scope field: user_profile
sponsor-visible-custom-fields
Scope field: sponsor_visible_custom_fields
  • Filters: status, email, external_id, external_email, fill_token, ticket_type_list_id, custom_list_id, created_from, created_to, updated_from, updated_to.
  • Associations:
    • ticket_type_list → response ticket-type: name;
    • custom_lists → custom-lists: name;
    • persona, function, industry: name;
    • selected_interests → response interests: interest-id, interest-name, intent-id, intent-label;
    • blocked_times → response blocked-times: start-time, end-time, created-at, updated-at;
    • custom_fields → response custom-fields: definition-key, definition-title, field-type, role, visible-to-sponsors, values;
    • selected_sponsor → response selected-sponsor: name.
GET .../registrants?status=joined&custom_list_id=401&include=ticket-type,custom-lists,custom-fields

Writing this resource

Writable fields: external_id, external_email, external_first_name, external_last_name, external_company, external_title, pitch, skip_networking, appearance, ticket_type_list_id.

Additional inputs: external_qr_string, custom_list_ids (array), persona, function, industry, selected_interests (raw JSON), custom_fields_attributes (raw JSON), seats, send_email.

{
  "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",
  "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] }
  ],
  "send_email": false
}

persona, function, and industry are names, not IDs. selected_interests uses plural intent_ids. When custom_list_ids is supplied, it fully replaces custom-list membership; every list must belong to the event. send_email defaults to true when omitted. PATCH uses the invited-registrant update flow and can therefore be rejected by its business rules.

External and internal QR values

Map the external_qr_string input to create or update an external badge/scanning value. It works for invited and joined registrants, including direct overrides on a joined record. Values must be unique within the event and at most 255 characters. Internal Brella QR formats, including encoded or normalized variants, are rejected with a validation error.

Null or blank clears the target record’s override. The readable external-qr-string is the effective external value: a joined registrant without its own override can inherit the value from a claimed personal invite. Clearing an override can therefore reveal that invite’s value instead of returning null. The separately readable internal-qr-string preserves the stable Brella value regardless of an external override. Allow these fields only for integrations that need them, and verify the effective result with a permitted GET or write response.

See QR request examples.

Last updated on October 9, 2026