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

Scanning questions

Manage sponsor-owned questions and choice options used when collecting leads.

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

Scanning questions belong to sponsors in the URL event and define questions asked during lead collection. Configure a separate ScanningQuestion scope; event-owned custom field definitions are a different resource.

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/scanning-questions

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/scanning-questions' \
  --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": "scanning-question"
    }
  ],
  "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/scanning-questions/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/scanning-questions/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": "scanning-question"
  }
}

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/scanning-questions

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/scanning-questions' \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
  "sponsor_id": 103705,
  "title": "When will you purchase?",
  "field_type": "SingleChoice",
  "options": [
    "This quarter",
    "Next quarter"
  ]
}'

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

View response structure
{
  "data": {
    "id": "1201",
    "type": "scanning-question"
  }
}

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/scanning-questions/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/scanning-questions/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": "When do you expect to purchase?"
}'

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

View response structure
{
  "data": {
    "id": "1201",
    "type": "scanning-question"
  }
}

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/scanning-questions/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/scanning-questions/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}/scanning-questions

Methods: GET collection/record, POST, PATCH, DELETE. Response type: scanning-question.

Fields, filters and restrictions

Browse 8 response fields

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

sponsor-id
Scope field: sponsor_id
key
Scope field: key
title
Scope field: title
field-type
Scope field: field_type
options
Scope field: options
position
Scope field: position
created-at
Scope field: created_at
updated-at
Scope field: updated_at

Optional filters: sponsor_id, field_type. There are no included associations. A named sponsor row restriction limits reads and writes to selected sponsors; inaccessible questions return 404. Every sponsor ID must belong to the URL event.

GET .../scanning-questions?sponsor_id=103705&field_type=SingleChoice

Writing and validation

Create requires sponsor_id, title and field_type. Titles contain 1–1,000 characters. Types are Text, SingleChoice and MultipleChoice; CustomValues definitions are excluded. The API generates the key and sets the lead-scanning role and target type. Client-supplied key, role and customizable_type are not writable here.

Choice types require options: at most 50 non-empty strings, each at most 1,000 characters. Numeric and boolean options are rejected. Non-empty options are invalid for Text. A supplied options array replaces the current options. When changing to a choice type, supply valid options in the same PATCH; when changing to Text, clear the options with [].

PATCH can update only title, field_type, options and position. A mapped sponsor_id supplied on PATCH returns 400; the question cannot move to another sponsor. Omitted fields remain unchanged. A title-only PATCH can preserve legacy options that exceed today’s bounds; changing options or field type applies the current validation rules.

position is a non-null integer within the signed 32-bit range, normalized to the valid list insertion range starting at 1. Order is within that sponsor’s lead-scanning questions. Omit it on create to append or on PATCH to retain the current position.

DELETE removes the question and its collected answers. Confirm that data loss before using the delete action. Questions referenced by other rules may be refused by validation constraints.

See complete scanning-question write inputs and examples and lead answer updates.

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

sponsor_idScalar ID
POST
Required
PATCH
Rejected when mapped and supplied

Sponsor in the URL event. The question cannot move to another sponsor; mapped sponsor_id on PATCH returns 400. Sponsor row restrictions also apply.

titleScalar string
POST
Required
PATCH
Optional

Question title, 1–1,000 characters.

field_typeScalar string
POST
Required
PATCH
Optional

Text, SingleChoice or MultipleChoice. CustomValues is unavailable. A transition to a choice type needs valid options in the same request.

optionsArray of strings
POST
Required for choice types
PATCH
Optional; replaces options

At most 50 non-empty strings, each at most 1,000 characters. Numeric and boolean values are rejected. Non-empty options are allowed only for choice types. Use [] when changing to Text. Title-only PATCH can preserve legacy options.

positionScalar number
POST
Optional; appended when omitted
PATCH
Optional

Non-null integer within the signed 32-bit range; normalized to the valid list insertion range starting at 1. Order is within the sponsor's lead-scanning questions.

Last updated on October 9, 2026