Content sessions
Create and update content sessions with complete curl request examples.
Build a request
Example data only. No request is sent.
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request POST \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/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
}'{
"data": {
"id": "1201",
"type": "content-session"
}
}The token scope determines returned fields. This selector illustrates that configuration; it does not change your token or the request.
Collection path: events/{event_id}/content-sessions
POST a content session
View the complete cURL example
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request POST \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/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": {
"blocks": [
{
"key": "intro",
"text": "Opening remarks and event overview.",
"type": "unstyled",
"depth": 0,
"inlineStyleRanges": [],
"entityRanges": [],
"data": {}
}
],
"entityMap": {}
},
"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.
View the complete cURL example
curl --fail-with-body --silent --show-error --globoff --max-time 30 --request PATCH \
--url "${BRELLA_API_BASE_URL}"'/api/core/organizations/123/events/456/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"
}
]
}'Input reference
37 inputs. Expand a field for its request type and update behavior. These are the example request keys; your administrator can configure aliases.
track_idScalar ID
- POST
- Optional if a suitable default exists
- PATCH
- Optional
Must identify a content or external-content track in the event.
track_nameScalar string
- POST
- Optional
- PATCH
- Optional
Finds or creates an event content track when track_id is absent.
parent_timeslot_idScalar ID or `null`
- POST
- Optional
- PATCH
- Optional
Parent session reference.
start_timeISO 8601 string
- POST
- Required for a valid create
- PATCH
- Optional
Converted through the event's time-zone compatibility logic.
durationScalar number
- POST
- Required for a valid create
- PATCH
- Optional
Minutes. With start_time, it supplies the model-required end time.
end_timeISO 8601 string
- POST
- Exposed but currently discarded
- PATCH
- Exposed but currently discarded
The downstream timeslot parameter allowlist currently strips this field; use duration.
titleScalar string
- POST
- Optional at wrapper level
- PATCH
- Optional
Session title.
subtitleScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Session subtitle.
contentJSON object
- POST
- Optional
- PATCH
- Optional
DraftJS object with a blocks array and entityMap. Plain text and HTML strings are rejected. Use the description field in the request builder to generate the object.
external_idScalar string or `null`
- POST
- Optional
- PATCH
- Optional
External integration identifier.
stream_linkScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Stream URL.
uses_chatJSON boolean
- POST
- Exposed but discarded
- PATCH
- Exposed but discarded
The downstream timeslot parameter allowlist strips this input. Do not rely on it to configure session chat.
highlight_positionScalar number or `null`
- POST
- Optional
- PATCH
- Optional
Highlight ordering.
show_sponsor_logo_in_scheduleJSON boolean
- POST
- Optional
- PATCH
- Optional
Display setting.
virtual_orientedJSON boolean
- POST
- Optional
- PATCH
- Optional
Session orientation.
uses_rsvpJSON boolean
- POST
- Optional
- PATCH
- Optional
Enables session RSVP behavior.
uses_attendee_listJSON boolean
- POST
- Optional
- PATCH
- Optional
Returned as uses-registrant-list.
uses_ticket_qr_codeJSON boolean
- POST
- Optional
- PATCH
- Optional
Ticket QR check-in setting.
attendance_registration_openJSON boolean
- POST
- Optional
- PATCH
- Optional
RSVP registration state.
attendance_capScalar number or `null`
- POST
- Optional
- PATCH
- Optional
Capacity.
colorScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Color value.
uses_ratingsJSON boolean
- POST
- Optional
- PATCH
- Optional
Rating setting.
uses_rsvp_cancellationJSON boolean
- POST
- Optional
- PATCH
- Optional
Cancellation setting.
organizer_reserved_attendance_slotsScalar number
- POST
- Optional
- PATCH
- Optional
Reserved capacity.
session_sponsors_section_titleScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Section label.
child_sessions_section_titleScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Section label.
map_linkScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Map URL.
sponsor_idScalar ID or `null`
- POST
- Optional
- PATCH
- Optional
Main sponsor; must belong to the event.
session_sponsorsArray of objects
- POST
- Optional
- PATCH
- Optional
Full replacement; entries use sponsor_id and optional label. Array order sets position.
speaker_assignmentsArray of objects
- POST
- Optional
- PATCH
- Optional
Full replacement; entries use speaker_id and optional role. Array order sets position.
custom_fields_attributesArray of objects
- POST
- Optional
- PATCH
- Optional
Entries use key plus value or values.
registrant_list_idsArray of scalar IDs
- POST
- Optional
- PATCH
- Optional
Gating lists; all IDs must belong to the event.
rating_registrant_list_idsArray of scalar IDs
- POST
- Optional
- PATCH
- Optional
Rating gating lists.
child_timeslot_idsArray of scalar IDs
- POST
- Optional
- PATCH
- Optional
Child sessions.
tagsArray of strings
- POST
- Optional
- PATCH
- Optional
Send tag names as strings. Core rejects ID objects because the input allows scalar array items only. [] clears tags and locations.
locationScalar string or `null`
- POST
- Optional
- PATCH
- Optional
Location name. Brella finds or creates an event location tag. Blank clears locations.
cover_imageRaw string
- POST
- Optional
- PATCH
- Optional
Base64 data URI. Blank on PATCH removes the current image.
Understand collection updates
What does this PATCH change?
Compare omitted, replaced and cleared collections. These are conceptual field values, not a live API response.
{
"speaker_assignments": [
{
"speaker_id": 801,
"role": "Moderator"
},
{
"speaker_id": 802,
"role": "Speaker"
}
]
}{}{
"speaker_assignments": [
{
"speaker_id": 801,
"role": "Moderator"
},
{
"speaker_id": 802,
"role": "Speaker"
}
]
}Omitting the field keeps the existing collection.
Send every speaker that should remain. Array order determines the assignment position.