Content sessions
Create and update content sessions with complete curl request examples.
Collection path: events/{event_id}/content-sessions
Sponsor input reference
| Input | Type | POST | PATCH | Notes |
|---|---|---|---|---|
track_id |
Scalar ID | Optional if a suitable default exists | Optional | Must identify a content or external-content track in the event. |
track_name |
Scalar string | Optional | Optional | Finds or creates an event content track when track_id is absent. |
parent_timeslot_id |
Scalar ID or null |
Optional | Optional | Parent session reference. |
start_time |
ISO 8601 string | Required for a valid create | Optional | Converted through the event’s time-zone compatibility logic. |
duration |
Scalar number | Required for a valid create | Optional | Minutes. With start_time, it supplies the model-required end time. |
end_time |
ISO 8601 string | Exposed but currently discarded | Exposed but currently discarded | The downstream timeslot parameter allowlist currently strips this field; use duration. |
title |
Scalar string | Optional at wrapper level | Optional | Session title. |
subtitle |
Scalar string or null |
Optional | Optional | Session subtitle. |
content |
Raw JSON or string | Optional | Optional | DraftJS JSON or supported textual content; sanitized before storage. |
external_id |
Scalar string or null |
Optional | Optional | External integration identifier. |
stream_link |
Scalar string or null |
Optional | Optional | Stream URL. |
uses_chat |
JSON boolean | Optional | Optional | Chat is also subject to event configuration. |
highlight_position |
Scalar number or null |
Optional | Optional | Highlight ordering. |
show_sponsor_logo_in_schedule |
JSON boolean | Optional | Optional | Display setting. |
virtual_oriented |
JSON boolean | Optional | Optional | Session orientation. |
uses_rsvp |
JSON boolean | Optional | Optional | Enables session RSVP behavior. |
uses_attendee_list |
JSON boolean | Optional | Optional | Returned as uses-registrant-list. |
uses_ticket_qr_code |
JSON boolean | Optional | Optional | Ticket QR check-in setting. |
attendance_registration_open |
JSON boolean | Optional | Optional | RSVP registration state. |
attendance_cap |
Scalar number or null |
Optional | Optional | Capacity. |
color |
Scalar string or null |
Optional | Optional | Color value. |
uses_ratings |
JSON boolean | Optional | Optional | Rating setting. |
uses_rsvp_cancellation |
JSON boolean | Optional | Optional | Cancellation setting. |
organizer_reserved_attendance_slots |
Scalar number | Optional | Optional | Reserved capacity. |
session_sponsors_section_title |
Scalar string or null |
Optional | Optional | Section label. |
child_sessions_section_title |
Scalar string or null |
Optional | Optional | Section label. |
map_link |
Scalar string or null |
Optional | Optional | Map URL. |
sponsor_id |
Scalar ID or null |
Optional | Optional | Main sponsor; must belong to the event. |
session_sponsors |
Raw array | Optional | Optional | Full replacement; entries use sponsor_id and optional label. Array order sets position. |
speaker_assignments |
Raw array | Optional | Optional | Full replacement; entries use speaker_id and optional role. Array order sets position. |
custom_fields_attributes |
Raw array | Optional | Optional | Entries use key plus value or values. |
registrant_list_ids |
Array of scalar IDs | Optional | Optional | Gating lists; all IDs must belong to the event. |
rating_registrant_list_ids |
Array of scalar IDs | Optional | Optional | Rating gating lists. |
child_timeslot_ids |
Array of scalar IDs | Optional | Optional | Child sessions. |
tags |
Raw array | Optional | Optional | All strings or all ID objects; mixed formats are rejected. [] clears all tags and locations. |
location |
Scalar string or null |
Optional | Optional | Location name. Brella finds or creates an event location tag. Blank clears locations. |
cover_image |
Raw string | Optional | Optional | Base64 data URI. Blank on PATCH removes the current image. |
POST a content session
curl --request POST \
--url "${BRELLA_API_BASE_URL}/api/core/organizations/${BRELLA_ORGANIZATION_ID}/events/${BRELLA_EVENT_ID}/content-sessions" \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--data-raw '{
"title": "Opening keynote",
"track_id": 501,
"start_time": "2026-09-03T09:00:00Z",
"duration": 60,
"content": "Opening remarks and event overview.",
"uses_chat": true,
"uses_rsvp": true,
"attendance_registration_open": true,
"attendance_cap": 500,
"sponsor_id": 103705,
"speaker_assignments": [
{ "speaker_id": 801, "role": "Speaker" }
],
"session_sponsors": [
{ "sponsor_id": 103705, "label": "Presented by" }
],
"tags": ["Keynote", "Featured"],
"location": "Main stage",
"registrant_list_ids": [401]
}'
The response type is content-session. Useful write-response fields include track_id, start_time, end_time, duration, title, uses_rsvp, and updated_at.
PATCH a content session
Nested assignment arrays are full replacements when supplied. This example changes the schedule and replaces the speaker assignments.
curl --request PATCH \
--url "${BRELLA_API_BASE_URL}/api/core/organizations/${BRELLA_ORGANIZATION_ID}/events/${BRELLA_EVENT_ID}/content-sessions/5501" \
--header "Accept: application/vnd.brella.v4+json" \
--header "Brella-API-Access-Token: ${BRELLA_API_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--data-raw '{
"start_time": "2026-09-03T09:15:00Z",
"duration": 45,
"speaker_assignments": [
{ "speaker_id": 801, "role": "Moderator" },
{ "speaker_id": 802, "role": "Speaker" }
]
}'