Session files are not the media or recording upload flow. Use Media & Transcriptions for video/audio that should be transcribed or stored as session recordings.
Upload paths
- Simple (≤ 50 MB)
- Direct to storage (≤ 500 MB)
One multipart call — Sessionboard detects size and MIME type, scans the file, and returns the attached
Content object.POST .../files/uploadwith multipart fieldfile- Optional form fields:
title,assigned_participant_id
Upload slots
Organizers can define what they ask speakers for as upload slots — Poster, Presentation, Handout — each with its own deadline, accepted file types and file count (Program → Settings → Files → Use upload slots).GET /v1/event/{eventId}/content-slots lists them in the order speakers see them, and every session file carries content_slot_id pointing at the slot it answers, so a poster is distinguishable from a deck without inspecting filenames or MIME types.
Events still on a single file request return an empty slot list and content_slot_id: null on every file. Slot definitions are read-only through the API.
Uploading into a slot. POST .../files and POST .../files/upload accept an optional content_slot_id. Ask GET /v1/event/{eventId}/content-slots?session_id={sessionId} which slots apply to the session, then send the slot’s id with the file. API callers act as the organization, so no slot deadline applies and a file may still be attached without a slot — but a slot you name is a contract: it must be active, apply to the session, accept the file’s declared type and have room under its max_files, or the request answers 400 naming the slot. The file’s type is derived from the slot’s content_type.
Scopes
Endpoints
List upload slots
GET /v1/event//content-slots
Simple upload
POST /v1/event//sessions//files/upload
List session files
GET /v1/event//sessions//files
Start direct upload
POST /v1/event//sessions//files
Complete direct upload
POST …/files//complete
Replace file bytes
POST …/files//replace
Update metadata
PUT /v1/event//sessions//files/
Response shape
File objects use theContent schema (id, url, title, filename, size, mimetype, type, label, assigned participant fields, timestamps). Direct-to-storage create/replace responses also include an upload object with url, method, and headers for the presigned PUT.
type is the organizer-facing file type (presentation, handout, poster, holding_slide for slides Sessionboard generated, …) and label is the display label from the session’s Files tab. The list endpoint filters on it:
id when it is regenerated, so a client that cached the file id keeps working; only url, filename, size and updated_at change.
Related reference
- Uploading session files — full playbook
- Transcriptions & Media
- Authentication & scopes

