curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/content-slots \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/content-slots"
headers = {"x-access-token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-access-token': '<api-key>'}};
fetch('https://public-api.sessionboard.com/v1/event/{eventId}/content-slots', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.sessionboard.com/v1/event/{eventId}/content-slots",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public-api.sessionboard.com/v1/event/{eventId}/content-slots"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-access-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api.sessionboard.com/v1/event/{eventId}/content-slots")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/content-slots")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-access-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "2783cb27-958a-4a24-89d9-2d71387f04cc",
"name": "Poster",
"content_type": "poster",
"description": "Upload your poster as a single-page PDF.",
"due_date": null,
"due_date_extended": null,
"allowed_file_types": [
"pdf"
],
"required": true,
"min_files": null,
"max_files": 1,
"allow_after_deadline": false,
"order": 0,
"is_active": true,
"created_at": "2026-10-02T12:04:11.000Z",
"updated_at": "2026-10-02T19:48:30.000Z"
},
{
"id": "9a1c6f0e-4a0b-4a4e-8e3f-0c2b1d5e7f90",
"name": "Presentation",
"content_type": "presentation",
"description": null,
"due_date": "2026-08-30T21:15:00.000Z",
"due_date_extended": null,
"allowed_file_types": [
"word",
"pdf"
],
"required": false,
"min_files": null,
"max_files": 1,
"allow_after_deadline": false,
"order": 1,
"is_active": true,
"created_at": "2026-10-02T12:04:11.000Z",
"updated_at": "2026-10-02T12:04:11.000Z"
}
]
}List upload slots
The files an event asks its speakers for — one slot per ask (Poster, Presentation, Handout, …), each with its own deadline, accepted file types and file count, in the order speakers see them. Configured by organizers under Program → Settings → Files → Use upload slots.
content_slot_id on a session file
points at one of these slots, so you can tell a poster from a deck without
parsing filenames.
Read-only. Active slots only unless include_archived=true. An event
that still uses a single file request for every session (the switch
is off) returns an empty list. Requires read:sessions scope (legacy
tokens with empty scopes pass).
Pass session_id to get only the slots that apply to one session
(organizers can scope a slot to, say, poster-format sessions). That is
the list to pick a content_slot_id from before
creating a file
on that session.
curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/content-slots \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/content-slots"
headers = {"x-access-token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-access-token': '<api-key>'}};
fetch('https://public-api.sessionboard.com/v1/event/{eventId}/content-slots', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.sessionboard.com/v1/event/{eventId}/content-slots",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public-api.sessionboard.com/v1/event/{eventId}/content-slots"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-access-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api.sessionboard.com/v1/event/{eventId}/content-slots")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/content-slots")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-access-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "2783cb27-958a-4a24-89d9-2d71387f04cc",
"name": "Poster",
"content_type": "poster",
"description": "Upload your poster as a single-page PDF.",
"due_date": null,
"due_date_extended": null,
"allowed_file_types": [
"pdf"
],
"required": true,
"min_files": null,
"max_files": 1,
"allow_after_deadline": false,
"order": 0,
"is_active": true,
"created_at": "2026-10-02T12:04:11.000Z",
"updated_at": "2026-10-02T19:48:30.000Z"
},
{
"id": "9a1c6f0e-4a0b-4a4e-8e3f-0c2b1d5e7f90",
"name": "Presentation",
"content_type": "presentation",
"description": null,
"due_date": "2026-08-30T21:15:00.000Z",
"due_date_extended": null,
"allowed_file_types": [
"word",
"pdf"
],
"required": false,
"min_files": null,
"max_files": 1,
"allow_after_deadline": false,
"order": 1,
"is_active": true,
"created_at": "2026-10-02T12:04:11.000Z",
"updated_at": "2026-10-02T12:04:11.000Z"
}
]
}Authorizations
Organization API token. Generate from Organization Settings → API Tokens.
Path Parameters
Event ID
Query Parameters
Also return archived slots (is_active: false). Ignored when session_id is set — an archived slot never applies to a session.
Return only the active slots that apply to this session, in the
order its speakers see them. 404 if the session is not on the
event.
Response
OK
Show child attributes
Show child attributes

