curl --request POST \
--url https://public-api.sessionboard.com/v1/event/{eventId}/sessions/{sessionId}/files \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"filename": "keynote-slides.pptx",
"size_bytes": 2457600,
"content_type": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"title": "Keynote slides"
}
'{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"title": "<string>",
"filename": "<string>",
"size": 123,
"mimetype": "<string>",
"type": "holding_slide",
"label": "Holding Slide",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"assigned_participant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"assigned_participant_email": "[email protected]",
"assigned_participant_name": "<string>",
"content_slot_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"upload": {
"url": "<string>",
"method": "PUT",
"headers": {
"Content-Type": "<string>"
}
}
}
}Initiate session file upload
Creates a file record and returns a short-lived S3 upload URL.
Requires write:sessions.
Next: PUT the file bytes to data.upload.url, then call
POST .../files/{fileId}/complete. For files up to 50 MB, prefer
POST .../files/upload (one multipart call). This direct-to-storage
path supports up to 500 MB.
See Uploading session files.
curl --request POST \
--url https://public-api.sessionboard.com/v1/event/{eventId}/sessions/{sessionId}/files \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"filename": "keynote-slides.pptx",
"size_bytes": 2457600,
"content_type": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"title": "Keynote slides"
}
'{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"title": "<string>",
"filename": "<string>",
"size": 123,
"mimetype": "<string>",
"type": "holding_slide",
"label": "Holding Slide",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"assigned_participant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"assigned_participant_email": "[email protected]",
"assigned_participant_name": "<string>",
"content_slot_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"upload": {
"url": "<string>",
"method": "PUT",
"headers": {
"Content-Type": "<string>"
}
}
}
}Authorizations
Organization API token. Generate from Organization Settings → API Tokens.
Body
Original filename including extension (e.g. slides.pptx, handout.pdf).
"keynote-slides.pptx"
Exact file size in bytes. Maximum 500 MB (524288000) for direct-to-storage upload. Use POST .../files/upload for files up to 50 MB without specifying size.
1 <= x <= 524288000MIME type. Optional; inferred from the filename extension when omitted.
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
Alias for content_type.
Display title. Defaults to filename.
Contact UUID of a session participant to assign this file to.
The upload slot
this file answers. Optional — API callers act as the organization,
so no slot deadline applies and a file may be attached without a
slot. When set, the slot must be active, apply to the session
(GET .../content-slots?session_id=), accept the file's declared
type and have room under its max_files; otherwise 400 names the
slot. The file's type is derived from the slot's content_type.
Ignored on events that still use a single file request.
Response
Created — upload URL included
A content attachment (file, document, or media) associated with a session.
Show child attributes
Show child attributes

