---
title: "Ticket types"
description: "Create and update ticket types with complete curl request examples."
lastModified: "2026-08-25"
---

**Collection path:** `events/{event_id}/ticket-types`

| Input | Type | POST | PATCH | Notes |
| :---- | :---- | ----: | ----: | :---- |
| `name` | Scalar string | Required by the model | Optional | Event-unique ticket-type name. |
| `description` | Scalar string or `null` | Optional | Optional | Description. |
| `attendance_type` | Scalar string | Required by the model | Optional | `in_person`, `hybrid`, or `virtual`. |
| `profile_badge` | Scalar string or `null` | Optional | Optional | Profile badge. |
| `display_name` | Scalar string or `null` | Optional | Optional | Display name. |
| `networking_enabled` | JSON boolean | Optional | Optional | Networking setting. |
| `lead_scanning_enabled` | JSON boolean | Optional | Optional | Lead scanning setting. |
| `qr_code_visible` | JSON boolean | Optional | Optional | QR setting. |
| `meeting_requests_outgoing` | Scalar string | Optional | Optional | `none`, `any`, or `specific_lists`. |
| `meeting_requests_incoming` | Scalar string | Optional | Optional | `none`, `any`, or `specific_lists`. |
| `max_outgoing_meeting_requests` | Scalar number or `null` | Optional | Optional | Limit. |
| `max_accepted_meetings` | Scalar number or `null` | Optional | Optional | Limit. |
| `show_invited_registrants` | JSON boolean | Optional | Optional | Visibility setting. |
| `show_invites_in_apps` | JSON boolean | Optional | Optional | Returned as `show-unjoined-registrants-in-apps`. |
| `show_booking_system_join_url` | JSON boolean | Optional | Optional | Returned as `show-registration-link`. |
| `outgoing_target_list_ids` | Array of scalar IDs | Optional | Optional | Used as a replacement when the effective mode is `specific_lists`. |
| `incoming_target_list_ids` | Array of scalar IDs | Optional | Optional | Used as a replacement when the effective mode is `specific_lists`. |

## POST a ticket type

```shell
curl --request POST \
  --url "${BRELLA_API_BASE_URL}/api/core/organizations/${BRELLA_ORGANIZATION_ID}/events/${BRELLA_EVENT_ID}/ticket-types" \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "name": "Virtual attendee",
    "description": "Online event access",
    "attendance_type": "virtual",
    "networking_enabled": true,
    "lead_scanning_enabled": false,
    "meeting_requests_outgoing": "specific_lists",
    "outgoing_target_list_ids": [401],
    "show_invites_in_apps": true,
    "show_booking_system_join_url": true
  }'
```

The response type is `ticket-type`. Useful write-response fields include `name`, `attendance_type`, `networking_enabled`, `show_unjoined_registrants_in_apps` (returned as `show-unjoined-registrants-in-apps`), `outgoing_target_list_ids`, and `updated_at`.

## PATCH a ticket type

```shell
curl --request PATCH \
  --url "${BRELLA_API_BASE_URL}/api/core/organizations/${BRELLA_ORGANIZATION_ID}/events/${BRELLA_EVENT_ID}/ticket-types/301" \
  --header "Accept: application/vnd.brella.v4+json" \
  --header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "display_name": "Virtual pass",
    "networking_enabled": true,
    "meeting_requests_incoming": "specific_lists",
    "incoming_target_list_ids": [401, 402]
  }'
```

Target list IDs outside the event are rejected. Deleting a ticket type follows Brella's list business rules; the default ticket type cannot be deleted.
