---
title: "Sponsor categories"
description: "Organize sponsors into categories, control booth meetings and manage category order."
lastModified: "2026-10-09"
---

> **Release timing:** This page includes changes planned for 9 October 2026. See the [deployment note](https://docs.brella.io/changelog/update-2026-10-09-sponsor-scanning-and-qr) before using the updated operations or inputs.

Sponsor categories group sponsors within an event. Configure a separate `SponsorCategory` scope with the required Read or Write actions and event access.

## Operations


### GET sponsor-categories

Requires an enabled event-level scope, context access, and Read permission. Response fields, query filters and included associations are scope-controlled.


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

For an individual record, append its Brella ID to the path. List responses use a data array and pagination metadata. Default page size 30, maximum 100.

Errors: 400 invalid parameters; 403 invalid token or disallowed action; 404 inaccessible context/record; 422 validation or business rules; 429 rate limit. See [responses and errors](https://docs.brella.io/concepts/responses-and-errors).

### POST sponsor-categories

Requires an enabled event-level scope, context access, and Write permission with the create action. Every input must be mapped in Writable fields.


```shell
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request POST \
  --url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/sponsor-categories' \
  --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": "CATEGORY-GOLD",
  "name": "Gold",
  "level": "large"
}'
```

Success: 201 Created. Save data.id; attributes follow Write-response fields.

Errors: 400 invalid parameters; 403 invalid token or disallowed action; 404 inaccessible context/record; 422 validation or business rules; 429 rate limit. See [responses and errors](https://docs.brella.io/concepts/responses-and-errors).

### PATCH sponsor-categories

Requires an enabled event-level scope, context access, and Write permission with the update action. Every input must be mapped in Writable fields.


```shell
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request PATCH \
  --url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/sponsor-categories/601' \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
  "name": "Gold partners"
}'
```

Success: 200 OK. PATCH collection inputs can replace existing data; read the field notes.

Errors: 400 invalid parameters; 403 invalid token or disallowed action; 404 inaccessible context/record; 422 validation or business rules; 429 rate limit. See [responses and errors](https://docs.brella.io/concepts/responses-and-errors).

### DELETE sponsor-categories

Requires an enabled event-level scope, context access, and Write permission with the delete action. Every input must be mapped in Writable fields.


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

Success: 204 No Content. Deletion can remove related data or be refused by constraints.

Errors: 400 invalid parameters; 403 invalid token or disallowed action; 404 inaccessible context/record; 422 validation or business rules; 429 rate limit. See [responses and errors](https://docs.brella.io/concepts/responses-and-errors).


**Path:** `events/{event_id}/sponsor-categories`

**Methods:** GET collection/record, POST, PATCH, DELETE. Response type: `sponsor-category`.

## Fields and filters


Response fields are selected by the token scope. ID is always included.

- `event-id` (scope: `event_id`)
- `external-id` (scope: `external_id`)
- `name` (scope: `name`)
- `level` (scope: `level`)
- `position` (scope: `position`)
- `allows-meet-at-booth` (scope: `allows_meet_at_booth`)
- `sponsors-count` (scope: `sponsors_count`)
- `created-at` (scope: `created_at`)
- `updated-at` (scope: `updated_at`)


Optional filters: `external_id`, `name`, `level`. There are no included associations. Enable the relevant query fields before relying on a filter.

```text
GET .../sponsor-categories?external_id=CATEGORY-GOLD
```

## Writing and side effects

Create requires `name` and `level`; `level` is `large`, `medium` or `small`. Names and external IDs have a 255-character limit. A non-blank external ID must be unique within the event; blank becomes null. POST is not an upsert. New categories are assigned to the event's built-in sponsors page when that page exists.

`position` must be an integer within the signed 32-bit range. Values are normalized to the valid list insertion range starting at 1. Omit it to use normal placement on create or preserve position on update. Null is allowed on create and rejected with 422 on PATCH.

A change to `allows_meet_at_booth` cascades to every sponsor in the category, setting both its booth permission and use setting. Review that effect before updating it.

**DELETE removes the category and its sponsors**, using the normal sponsor deletion flow. Confirm the category ID and affected sponsors before granting or using the delete action. A failed deletion returns a validation error rather than a successful 204.

See [complete category write inputs and examples](https://docs.brella.io/cookbook/sponsor-categories).

### external_id

Type: Scalar string or `null`. POST: Optional. PATCH: Optional.

At most 255 characters; unique within the event when present. Blank becomes null; POST is not an upsert.

### name

Type: Scalar string. POST: Required. PATCH: Optional.

Non-empty category name, at most 255 characters.

### level

Type: Scalar string. POST: Required. PATCH: Optional.

One of large, medium or small. Configure the level mapping for create.

### position

Type: Scalar number or `null`. POST: Optional; null uses normal list placement. PATCH: Optional; null rejected.

Integer within the signed 32-bit range. Supplied values are clamped to the valid list insertion range, starting at 1. Omit on PATCH to keep the current position; null on PATCH returns 422.

### allows_meet_at_booth

Type: Scalar boolean. POST: Optional. PATCH: Optional.

A change cascades to all sponsors in the category, setting both their booth permission and use setting.

