---
title: "Content sessions"
description: "Create and update content sessions with complete curl request examples."
lastModified: "2026-08-25"
---

**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

```shell
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.

```shell
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" }
    ]
  }'
```
