List a registration platform's events
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
The connected platform's events, newest first, each with the Sessionboard event it was already brought into (imported_event_id), so importing it again updates that event instead of making a second one. When the platform is not connected, connected is false and events is empty. Reads the platform; writes nothing. The token's user needs permission to view integrations. Requires read:learning; refused for a key restricted to particular events. Also at GET /v1/learning/workspace/meetings/sources/{appId}/events.
Request example
curl --request GET \ --url 'https://public-api.sessionboard.com/v1/organization/{orgId}/learning/workspace/meetings/sources/{appId}/events' \ --header 'x-access-token: <api-token>'const response = await fetch('https://public-api.sessionboard.com/v1/organization/{orgId}/learning/workspace/meetings/sources/{appId}/events', { method: 'GET', headers: { "x-access-token": "<api-token>" },});
const data = await response.json();console.log(data);import requests
response = requests.request( "GET", "https://public-api.sessionboard.com/v1/organization/{orgId}/learning/workspace/meetings/sources/{appId}/events", headers={ "x-access-token": "<api-token>" },)
print(response.json())<?php
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://public-api.sessionboard.com/v1/organization/{orgId}/learning/workspace/meetings/sources/{appId}/events", CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => [ "x-access-token: <api-token>", ],]);
$response = curl_exec($curl);curl_close($curl);
echo $response;package main
import ( "fmt" "io" "net/http")
func main() { req, _ := http.NewRequest("GET", "https://public-api.sessionboard.com/v1/organization/{orgId}/learning/workspace/meetings/sources/{appId}/events", nil) req.Header.Add("x-access-token", "<api-token>")
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}/learning/workspace/meetings/sources/{appId}/events")) .header("x-access-token", "<api-token>") .method("GET", HttpRequest.BodyPublishers.noBody()) .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.appIdstringpathrequiredA registration platform. Today sessions can be brought in from
cvent,swoogoandbizzabo; the others answernot_available(List registration platforms says why).- Allowed values
"cvent", "swoogo", "bizzabo", "rainfocus", "eventbrite", "swapcard", "visit", "map-your-show", "a2z"
Responses
200application/json
OK
successbooleanpayloadLearningRemoteEventListShow child attributes
app_idstringA registration platform. Today sessions can be brought in from
cvent,swoogoandbizzabo; the others answernot_available(List registration platforms says why).- Allowed values
"cvent", "swoogo", "bizzabo", "rainfocus", "eventbrite", "swapcard", "visit", "map-your-show", "a2z"
connectedbooleansupportedbooleanWhether the platform can list events. Absent when not connected.
sourceLearningRegistrationSourceShow child attributes
idstringA registration platform. Today sessions can be brought in from
cvent,swoogoandbizzabo; the others answernot_available(List registration platforms says why).- Allowed values
"cvent", "swoogo", "bizzabo", "rainfocus", "eventbrite", "swapcard", "visit", "map-your-show", "a2z"
namestringconnectedbooleanconnection_idstring | nullneeds_reauthbooleansimulatedbooleancomingbooleanCannot be connected yet.
importablebooleanSessions can be brought in from it.
connectstringHow a person connects it.
- Allowed values
"oauth", "api_key", "coming"
bringsobjectShow child attributes
sessionsLearningSourceBringsShow child attributes
availablebooleannotestring
speakersobjectShow child attributes
availablebooleannotestringon_sessionsbooleanSpeakers arrive on the sessions they present, so faculty carry over.
recordingsLearningSourceBringsShow child attributes
availablebooleannotestring
attendanceobjectShow child attributes
availablebooleannotestringneeds_new_sign_inbooleanThe connection's sign-in cannot read attendees or check-ins.
linestringOne line to show a person.
eventsLearningRemoteEvent[]Show child attributes
idstringThe platform's event id.
namestringstarts_atstring | nullimported_event_idinteger | nullThe Sessionboard event it was brought into before.
imported_event_namestring | null
400application/json
A path, query or body value failed validation, or an unknown body property was sent. message names the field. (A source object naming the assistant, with the person's prompt, is accepted on every write and removed before validation.) For an {eventId} path that is not a whole number: error: VALIDATION_ERROR, eventId must be a valid integer.
Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).
errorstring | objectThe gateway's error code (
SCOPE_REQUIRED,ORG_WIDE_TOKEN_REQUIRED,NOT_FOUND, …).messagestringstatusintegersuccessbooleannamestringcodestringFEATURE_NOT_ENABLED,AGENT_WRITES_PAUSED, …featurestringpaused_atstring<date-time>
401
Missing, invalid or expired token.
403application/json
SCOPE_REQUIRED— the token lacksread:learning(reads) orwrite:learning(writes). Legacy tokens with no scopes cannot write.ORG_WIDE_TOKEN_REQUIRED— the token is restricted to particular events: "Bringing in a meeting reaches the organization's registration platforms and every event, so this API key (restricted to particular events) cannot use it. Use a key without an event restriction."FEATURE_NOT_ENABLED(feature: lessons_credits) — Learning is not on for the organization.FORBIDDEN— the token's user is not an active member of the organization, lacks the Lessons permission, or (listing a platform's events, importing) lacks permission to view integrations (You need permission to view integrations to use Apps).
Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).
errorstring | objectThe gateway's error code (
SCOPE_REQUIRED,ORG_WIDE_TOKEN_REQUIRED,NOT_FOUND, …).messagestringstatusintegersuccessbooleannamestringcodestringFEATURE_NOT_ENABLED,AGENT_WRITES_PAUSED, …featurestringpaused_atstring<date-time>
404application/json
orgId is not your organization (error: NOT_FOUND, message: Organization not found).
Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).
errorstring | objectThe gateway's error code (
SCOPE_REQUIRED,ORG_WIDE_TOKEN_REQUIRED,NOT_FOUND, …).messagestringstatusintegersuccessbooleannamestringcodestringFEATURE_NOT_ENABLED,AGENT_WRITES_PAUSED, …featurestringpaused_atstring<date-time>
429application/json
- The token's request limit (100 requests per 15 minutes per bucket by default — see Rate Limiting). Wait
Retry-Afterseconds. QUOTA_EXCEEDED(writes) — the token's daily write quota (10,000 a day). Resets at midnight UTC.
Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).
errorstring | objectThe gateway's error code (
SCOPE_REQUIRED,ORG_WIDE_TOKEN_REQUIRED,NOT_FOUND, …).messagestringstatusintegersuccessbooleannamestringcodestringFEATURE_NOT_ENABLED,AGENT_WRITES_PAUSED, …featurestringpaused_atstring<date-time>
Retry-AfterintegerheaderSeconds to wait before retrying.
Response examples
{ "success": true, "payload": { "app_id": "cvent", "connected": true, "supported": true, "source": { "id": "cvent", "name": "<string>", "connected": true, "connection_id": "<string>", "needs_reauth": true, "simulated": true, "coming": true, "importable": true, "connect": "oauth", "brings": { "sessions": { "available": true, "note": "<string>" }, "speakers": { "available": true, "note": "<string>", "on_sessions": true }, "recordings": { "available": true, "note": "<string>" }, "attendance": { "available": true, "note": "<string>", "needs_new_sign_in": true } }, "line": "<string>" }, "events": [ { "id": "<string>", "name": "<string>", "starts_at": "<string>", "imported_event_id": 123, "imported_event_name": "<string>" } ] }}{ "error": "<string>", "message": "<string>", "status": 123, "success": true, "name": "<string>", "code": "<string>", "feature": "<string>", "paused_at": "2026-01-15T09:30:00Z"}{ "error": "ORG_WIDE_TOKEN_REQUIRED", "message": "Bringing in a meeting reaches the organization's registration platforms and every event, so this API key (restricted to particular events) cannot use it. Use a key without an event restriction."}{ "error": "NOT_FOUND", "message": "Organization not found"}{ "error": "<string>", "message": "<string>", "status": 123, "success": true, "name": "<string>", "code": "<string>", "feature": "<string>", "paused_at": "2026-01-15T09:30:00Z"}