Move, cancel or end a premiere
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
Move it (startsAt; reminders go again for the new time), cancel it (status: cancelled), stop taking questions (qaOpen: false) or end it now (end: true; on demand from this moment). This changes what visitors see. Requires write:marketing; refused for a key restricted to particular events. Also at PUT /v1/marketing/video/premieres/{premiereId}.
Request example
curl --request PUT \ --url 'https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/video/premieres/{premiereId}' \ --header 'x-access-token: <api-token>' \ --header 'Content-Type: application/json' \ --data '{ "startsAt": "<string>", "status": "scheduled", "qaOpen": true, "title": "<string>", "end": true}'const response = await fetch('https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/video/premieres/{premiereId}', { method: 'PUT', headers: { "x-access-token": "<api-token>", "Content-Type": "application/json" }, body: JSON.stringify({ "startsAt": "<string>", "status": "scheduled", "qaOpen": true, "title": "<string>", "end": true }),});
const data = await response.json();console.log(data);import requests
response = requests.request( "PUT", "https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/video/premieres/{premiereId}", headers={ "x-access-token": "<api-token>", "Content-Type": "application/json" }, json={ "startsAt": "<string>", "status": "scheduled", "qaOpen": True, "title": "<string>", "end": True },)
print(response.json())<?php
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/video/premieres/{premiereId}", CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => "PUT", CURLOPT_POSTFIELDS => '{ "startsAt": "<string>", "status": "scheduled", "qaOpen": true, "title": "<string>", "end": true}', CURLOPT_HTTPHEADER => [ "x-access-token: <api-token>", "Content-Type: application/json", ],]);
$response = curl_exec($curl);curl_close($curl);
echo $response;package main
import ( "fmt" "io" "net/http" "strings")
func main() { req, _ := http.NewRequest("PUT", "https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/video/premieres/{premiereId}", strings.NewReader(`{ "startsAt": "<string>", "status": "scheduled", "qaOpen": true, "title": "<string>", "end": true}`)) req.Header.Add("x-access-token", "<api-token>") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/video/premieres/{premiereId}")) .header("x-access-token", "<api-token>") .header("Content-Type", "application/json") .method("PUT", HttpRequest.BodyPublishers.ofString("{\n \"startsAt\": \"<string>\",\n \"status\": \"scheduled\",\n \"qaOpen\": true,\n \"title\": \"<string>\",\n \"end\": true\n}")) .build();
HttpResponse<String> response = HttpClient.newHttpClient() .send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());Try it
Response headers
Authorizations
x-access-tokenstringheaderOrganization API token. Generate from Organization Settings → API Tokens.
AuthorizationBearer <token>headerorOAuth 2.1 access token. Obtained via the OAuth PKCE flow at
/oauth/token.
Send one of these. See Authentication.
Path parameters
orgIdstringpathrequiredYour organization ID. Any other organization returns
404.premiereIdstring<uuid>pathrequiredThe premiere
Request body
startsAtstringISO 8601 with a timezone offset
statusstring- Allowed values
"scheduled", "cancelled"
qaOpenbooleantitlestring- Max length
255
endbooleanEnd it now
{ "startsAt": "<string>", "status": "scheduled", "qaOpen": true, "title": "<string>", "end": true}Responses
200application/json
payload.premiere, a Premiere
payloadobjectShow child attributes
premierePremiereShow child attributes
idstringevent_idintegermedia_idstringtitlestring | nullstarts_atstring<date-time>duration_snumberstatusstring- Allowed values
"scheduled", "cancelled"
qa_openbooleanstatestring- Allowed values
"upcoming", "live", "ended", "cancelled"
position_snumber | nullWhile live, where everyone is (seconds)
remindersintegerPeople who asked for a reminder (list only)
questionsintegerQuestions asked (list only)
400
A start in the past or an unknown status.
403
SCOPE_REQUIRED— the token lacksread:marketing(reads) orwrite:marketing(writes).ORG_WIDE_TOKEN_REQUIRED— the token is restricted to particular events; this operation reads the whole organization.FORBIDDEN— the organization's plan does not include Marketing, or the token's user cannot change goals (writes need an organization admin or the organization settings permission).
404
Not found in your organization.
Response examples
{ "payload": { "premiere": { "id": "<string>", "event_id": 123, "media_id": "<string>", "title": "<string>", "starts_at": "2026-01-15T09:30:00Z", "duration_s": 123.45, "status": "scheduled", "qa_open": true, "state": "upcoming", "position_s": 123.45, "reminders": 123, "questions": 123 } }}