Sessions API
List, create, edit, and delete sessions in the event programme.
Manage the sessions in your event programme (shown in the app and the public schedule widget). All endpoints require the standard authentication headers. Write endpoints require the sessions:write scope; the read endpoint requires sessions:read.
GET /getSessions
Returns an array of all sessions for the event. Soft-deleted sessions are excluded. No request body required. Requires sessions:read.
Example request
curl "https://api.event-vault.com/getSessions" \
-H "x-api-key: <your-api-key>" \
-H "x-client-id: <your-client-id>" \
-H "x-event-id: <your-event-id>" \
-H "x-timestamp: $(date +%s%3N)"
POST /upsertSession
Creates a new session, or edits an existing one. Omit sessionId to create (name required); include it to edit (only the fields you send change). Requires sessions:write.
Request body fields
| Field | Type | Required | Description |
|---|---|---|---|
sessionId |
string | Existing session’s id. Omit to create; include to edit. | |
name |
string | create | Session title |
date |
string | Session date (e.g. "2026-09-14") |
|
timeStart / timeEnd |
string | Start / end time | |
location |
string | Room or location | |
format |
string | Session format label | |
difficulty |
string | Difficulty label | |
synopsis |
string | Short summary (plain text) | |
tags |
string | Comma-separated tags | |
capacity |
integer | Seat capacity (0 = unlimited) |
|
track |
integer | Track index | |
tintColor |
integer | Session colour as a 32-bit ARGB integer | |
handOutLink |
string | Handout URL | |
additionalContentLabel / additionalContentLink |
string | Optional extra content label + URL | |
ticketRedemption / ticketRedemptionLabel / ticketRedemptionDescription |
string | Ticket-redemption settings | |
hasPreRegistration |
boolean | Enable pre-registration | |
hasLiveQA / managedQA / hasPoll |
boolean | Live Q&A, moderated Q&A, and poll toggles | |
hasSponsorship / sponsorshipLink / sponsorImagePath |
boolean / string / string | Session sponsorship | |
unListed |
boolean | Publish toggle. true = not shown on the public widgets (still visible in the console); false = published (default) |
|
contentData |
array | Content sections - see Content Sections | |
websiteOverride |
boolean | When true, public widgets use websiteContentData instead of contentData |
|
websiteContentData |
array | Website-only content sections (same format as contentData) |
| Status | Body | Description |
|---|---|---|
200 OK |
{ "status": "success", "sessionId": "...", "created": true } |
Session created (created: true) or edited (created: false) |
400 Bad Request |
The request must include a non-empty name when creating a session. |
Creating without a name |
400 Bad Request |
{ "error": "Invalid content sections", "details": [...] } |
A content section is malformed or references a missing/hidden/deleted record |
404 Not Found |
Session not found. |
sessionId supplied but no such session |
500 Internal Server Error |
Error upserting session. |
Unexpected server error |
Plus the standard auth errors (400/403/404/408/429) - see Authentication.
Example - create a session with content and a speaker section
curl "https://api.event-vault.com/upsertSession" \
-X POST \
-H "Content-Type: application/json" \
-H "x-api-key: <your-api-key>" \
-H "x-client-id: <your-client-id>" \
-H "x-event-id: <your-event-id>" \
-H "x-timestamp: $(date +%s%3N)" \
-d '{
"name": "Opening Keynote",
"date": "2026-09-14",
"timeStart": "09:00",
"timeEnd": "10:00",
"location": "Main Hall",
"contentData": [
{ "type": "paragraph", "data": { "content": "[{\"insert\":\"Welcome to the event.\\n\"}]" } },
{ "type": "speaker", "data": { "speakerType": "Presenters", "speakerIds": ["<speakerId>"] } }
]
}'
POST /deleteSession
Soft-deletes a session: it is removed from listings but stays recoverable in the console. Requires sessions:write.
Request body fields
| Field | Type | Required | Description |
|---|---|---|---|
sessionId |
string | ✓ | Id of the session to delete |
| Status | Body | Description |
|---|---|---|
200 OK |
{ "status": "success" } |
Session was soft-deleted |
400 Bad Request |
The request must include sessionId in the body. |
sessionId missing |
404 Not Found |
Session not found. |
No session with this id |
500 Internal Server Error |
Error deleting session. |
Unexpected server error |