curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/content \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/content"
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', 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",
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"
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")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/content")
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": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"event_id": 123,
"title": "<string>",
"starts_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"speakers": [
{
"id": "<string>",
"label": "<string>",
"name": "<string>"
}
],
"has_transcription": true,
"has_summary": true,
"has_podcast": true,
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "transcription",
"session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"text": "<string>",
"elements": [
{
"value": "<string>",
"speaker": {
"id": "<string>",
"label": "<string>",
"name": "<string>"
},
"start_time": 123,
"end_time": 123,
"fragment_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
],
"fragment_count": 123,
"interval_sec": 123,
"language_code": "<string>",
"summary_type": "<string>",
"provider": "<string>",
"content": {},
"topics": [
{}
],
"insight_type": "<string>",
"name": "<string>",
"metadata": {},
"status": "<string>",
"url": "<string>",
"duration_sec": 123,
"generated_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"document_type": "summary_pdf",
"content_type": "<string>",
"scope": "<string>",
"quotes": [
{}
],
"summaries": [
{}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]
}
],
"pagination": {
"current_page": 123,
"page_size": 123,
"total_pages": 123,
"total_results": 123
}
}List composed session content for an event
Paginated list of session content packs (composed transcript, preferred summary, insights, podcast status, and document links). Prefer this over the raw polymorphic transcriptions list for mobile and partner apps.
Requires read:transcriptions scope (legacy tokens with empty scopes pass).
Default packs are compact (elements empty on transcription items). Pass
expand=items (plus other types) for full element arrays.
curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/content \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/content"
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', 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",
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"
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")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/content")
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": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"event_id": 123,
"title": "<string>",
"starts_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"speakers": [
{
"id": "<string>",
"label": "<string>",
"name": "<string>"
}
],
"has_transcription": true,
"has_summary": true,
"has_podcast": true,
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "transcription",
"session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"text": "<string>",
"elements": [
{
"value": "<string>",
"speaker": {
"id": "<string>",
"label": "<string>",
"name": "<string>"
},
"start_time": 123,
"end_time": 123,
"fragment_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
],
"fragment_count": 123,
"interval_sec": 123,
"language_code": "<string>",
"summary_type": "<string>",
"provider": "<string>",
"content": {},
"topics": [
{}
],
"insight_type": "<string>",
"name": "<string>",
"metadata": {},
"status": "<string>",
"url": "<string>",
"duration_sec": 123,
"generated_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"document_type": "summary_pdf",
"content_type": "<string>",
"scope": "<string>",
"quotes": [
{}
],
"summaries": [
{}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]
}
],
"pagination": {
"current_page": 123,
"page_size": 123,
"total_pages": 123,
"total_results": 123
}
}Authorizations
Organization API token. Generate from Organization Settings → API Tokens.
Path Parameters
Event ID
Query Parameters
Page number for pagination.
1 <= x <= 999Number of results per page.
The event-settings list endpoints (tags, tracks, levels, formats,
rooms, languages, statuses) also accept the older spelling
page_size, and used to accept only that — a request sending
pageSize silently got the default 25. Both now work, pageSize
wins when both are sent, and on these endpoints a value outside
1–100 is clamped rather than rejected. Everywhere else pageSize
is the only spelling.
1 <= x <= 100Comma-separated item types. Default transcription,summary,insight,podcast,document.
Add items on the event list for full transcription elements (list is compact by default).
expand=items alone still includes the default types. Session GET always returns full elements.
"transcription,summary,items"
Optional time window (seconds) for rechunking same-speaker transcript elements. Omit for speaker turns only. Clamped to 3600.
1 <= x <= 3600Preferred summary provider when multiple exist.
claude, openai 
