API Reference
Events (Admin)
- GET
/manage/eventsList manageable events (Admin)List events where the authenticated user is registered as staff. - GET
/manage/events/:eventIdEvent detail (Admin)Retrieve an event for management. Requires staff with the eventRead permission. - POST
/manage/eventsCreate event (Admin)Create an event in DRAFT state. The creator is automatically registered as ADMIN staff. No additional permission is required beyond being signed in. Organizers (EventOrganizer) are specified via `organizers`. - PUT
/manage/events/:eventIdUpdate event (Admin)Update an event. Requires the eventWrite permission (meeting-only updates also accept eventMeetingWrite). Organizers (EventOrganizer) are reconciled from the `organizers` array: organizers not present in the array are removed. - DELETE
/manage/events/:eventIdDelete event (Admin)Delete an event. Requires the eventWrite permission. - GET
/manage/events/:eventId/aclOwn staff role and permissions (Admin)Return the authenticated user's staff role for the event along with the permission list for each role. Use it to drive management UI visibility. - PUT
/manage/events/:eventId/thumbnailUpload event thumbnail (Admin)Upload the event thumbnail image. Requires the eventWrite permission. - PUT
/manage/events/:eventId/main-imageUpload event main image (Admin)Upload the event page's main image. Requires the eventWrite permission. - POST
/manage/events/:eventId/description-imagesUpload description image (Admin)Upload an image to embed in the event description (Markdown) and get its URL. Requires the eventWrite permission. - GET
/manage/events/:eventId/staffList event staff (Admin)List the event's staff. Requires the staffRead permission. - POST
/manage/events/:eventId/staffAdd event staff (Admin)Add an existing user as event staff. Requires the staffInviteWrite or staffWrite permission. - PUT
/manage/events/:eventId/staff/:staffIdUpdate event staff role (Admin)Change a staff member's role. Requires the staffWrite permission. - DELETE
/manage/events/:eventId/staff/:staffIdRemove event staff (Admin)Remove an event staff member. Requires the staffWrite permission. - GET
/manage/events/:eventId/stagesList stages (Admin)List stages for management. Requires the stagesRead permission. - POST
/manage/events/:eventId/stagesCreate stage (Admin)Create a stage. Requires the stagesWrite permission. - PUT
/manage/events/:eventId/stages/:stageIdUpdate stage (Admin)Update a stage. Requires the stagesWrite permission. - DELETE
/manage/events/:eventId/stages/:stageIdDelete stage (Admin)Delete a stage. Requires the stagesWrite permission. - PUT
/manage/events/:eventId/stages/reorderReorder stages (Admin)Reorder stages in bulk. Requires the stagesWrite permission. - GET
/manage/events/:eventId/sessionsList sessions (Admin)List all sessions including drafts. Requires the sessionsRead permission. - GET
/manage/events/:eventId/sessions/:idSession detail (Admin)Retrieve a session for management. Requires the sessionsRead permission. - POST
/manage/events/:eventId/sessionsCreate session (Admin)Create a session. Requires the sessionsWrite permission. SessionSpeaker links are created from entryIds / speakers. - PUT
/manage/events/:eventId/sessions/:idUpdate session (Admin)Update a session. Requires the sessionsWrite permission. Sending entryIds reconciles the SessionSpeaker links to match the array. - DELETE
/manage/events/:eventId/sessions/:idDelete session (Admin)Delete a session; its SessionSpeaker links are removed as well. Requires the sessionsWrite permission. - PUT
/manage/events/:eventId/sessions/bulkBulk update sessions (Admin)Update multiple sessions at once, e.g. after dragging items in the timetable. Requires the sessionsWrite permission. - GET
/manage/events/:eventId/speakersList speakers (Admin)List all speakers including drafts. Requires the speakersRead permission. A speaker is a registration (EventEntry) with speaker metadata; its id is the registration ID. - GET
/manage/events/:eventId/speakers/:entryIdSpeaker detail (Admin)Retrieve a speaker for management, including confirmed sessions. Requires the speakersRead permission. - POST
/manage/events/:eventId/speakersAdd a 4S user as speaker (Admin)Register a 4S user as a speaker. Requires the speakersWrite permission. If the user already has an active registration, speaker metadata is attached to it; otherwise a registration is created as a draft (UNUSED). Guest users cannot be specified (create them with /speakers/guest). - PUT
/manage/events/:eventId/speakers/:entryIdUpdate speaker (Admin)Update speaker metadata (pickedUp and display overrides). For guest speakers, guestProfile also updates the user's profile. Requires the speakersWrite permission. - DELETE
/manage/events/:eventId/speakers/:entryIdRemove speaker (Admin)For 4S-user speakers, removes the speaker metadata and session links while keeping the registration. For guest speakers, the registration and the guest user are deleted as well. Requires the speakersWrite permission. - POST
/manage/events/:eventId/speakers/guestCreate guest speaker (Admin)Create a speaker who is not registered on 4S as a guest user (cannot sign in, no public profile), together with a draft (UNUSED) registration and speaker metadata. Requires the speakersWrite permission. Email is optional and no emails are sent to guests. - POST
/manage/events/:eventId/speakers/orderReorder speakers (Admin)Reorder speakers in bulk. Requires the speakersWrite permission. - POST
/manage/events/:eventId/speakers/avatarUpload speaker display avatar (Admin)Upload an avatar image for the event-specific display override and get its URL; pass it as overrides.avatarUrl. Requires the speakersWrite permission. - POST
/manage/events/:eventId/speakers/:entryId/guest-avatarUpdate guest speaker avatar (Admin)Update a guest user's profile image (the user's avatarUrl). Guests hold no display overrides, so the avatar override is cleared. Cannot be used for 4S-user speakers (ENTRY_NOT_GUEST). Requires the speakersWrite permission. - GET
/manage/events/:eventId/ticketsList tickets (Admin)List all ticket types with sales figures. Requires the ticketsRead permission. - POST
/manage/events/:eventId/ticketsCreate ticket (Admin)Create a ticket type. Requires the ticketsWrite permission. Paid tickets require price and paymentType, and the event must have Stripe Connect configured. - PUT
/manage/events/:eventId/tickets/:ticketIdUpdate ticket (Admin)Update a ticket type. Requires the ticketsWrite permission. price and paymentType cannot be changed once sales have started. - DELETE
/manage/events/:eventId/tickets/:ticketIdDelete ticket (Admin)Delete a ticket type. Tickets with existing registrations cannot be deleted. Requires the ticketsWrite permission. - POST
/manage/events/:eventId/tickets/orderReorder tickets (Admin)Reorder ticket types in bulk. Requires the ticketsWrite permission. - GET
/manage/events/:eventId/announcementsList event announcements (Admin)List event announcements for management. Requires the announcementsRead permission. - POST
/manage/events/:eventId/announcementsCreate event announcement (Admin)Create an announcement for participants. Requires the announcementsWrite permission. Use targetStates / targetTicketIds to narrow the audience (defaults to CONFIRMED + CHECKED_IN entrants across all tickets). sendEmail defaults to true, so omitting it sends email to the targeted recipients. - PUT
/manage/events/:eventId/announcements/:idUpdate event announcement (Admin)Update an announcement. Requires the announcementsWrite permission. - DELETE
/manage/events/:eventId/announcements/:idDelete event announcement (Admin)Delete an announcement. Requires the announcementsWrite permission. - GET
/manage/events/:eventId/questionsList survey questions (Admin)List all survey questions including drafts. Requires the questionsRead permission. - POST
/manage/events/:eventId/questionsCreate survey question (Admin)Create a registration survey question. Requires the questionsWrite permission. - PUT
/manage/events/:eventId/questions/:questionIdUpdate survey question (Admin)Update a survey question. Requires the questionsWrite permission. - DELETE
/manage/events/:eventId/questions/:questionIdDelete survey question (Admin)Delete a survey question; its answers are removed as well. Requires the questionsWrite permission. - PUT
/manage/events/:eventId/questions/ordersReorder survey questions (Admin)Reorder survey questions in bulk. Requires the questionsWrite permission. - PUT
/manage/events/:eventId/questions/bulkBulk update survey questions (Admin)Create or update multiple questions at once, as used when saving the survey editor. Requires the questionsWrite permission. - GET
/manage/events/:eventId/questions/:questionId/answersList answers to a question (Admin)List the answers submitted for a specific question. Requires the questionsRead permission. - GET
/manage/events/:eventId/survey-responsesList survey responses (Admin)List survey responses across all participants. Requires the questionsRead permission. - GET
/manage/events/:eventId/question-aggregationSurvey aggregation (Admin)Return aggregated answer counts for choice questions. Requires the questionsRead permission. - POST
/manage/events/:eventId/meeting-spot-imagesUpload meeting spot image (Admin)Upload an image for a meeting spot and get its URL. Requires the meetingSpotsWrite permission. - GET
/manage/events/:eventId/meeting-spotsList meeting spots (Admin)List all meeting spots including inactive ones. Requires the meetingSpotsRead permission. - POST
/manage/events/:eventId/meeting-spotsCreate meeting spot (Admin)Create a meeting spot. Requires the meetingSpotsWrite permission. - PUT
/manage/events/:eventId/meeting-spots/:spotIdUpdate meeting spot (Admin)Update a meeting spot. Requires the meetingSpotsWrite permission. - DELETE
/manage/events/:eventId/meeting-spots/:spotIdDelete meeting spot (Admin)Delete a meeting spot. Requires the meetingSpotsWrite permission. - POST
/manage/events/:eventId/meeting-spots/reorderReorder meeting spots (Admin)Reorder meeting spots in bulk. Requires the meetingSpotsWrite permission. - GET
/manage/events/:eventId/entriesList participants (Admin)List the event's registrations. Requires the participantsRead permission. Supports filtering by state, ticket and keyword. - GET
/manage/events/:eventId/entries/:entryIdParticipant detail (Admin)Retrieve a single registration including its survey answers. For events using invitation tickets it also includes the inviter (invitedBy) and the number of people invited (invitedCount / inviteLimit). Requires the participantsRead permission. - POST
/manage/events/:eventId/entriesAdd participant (Admin)Register a 4S user as a participant (the registration is created as CONFIRMED). Requires the participantsWrite permission. Fails with EVENT_ALREADY_REGISTERED if the user already has an active registration, and with USER_IS_GUEST for guest users. Capacity and ticket stock are checked like self-registration. - GET
/manage/events/:eventId/entries/countsParticipant counts (Admin)Return registration counts by state and ticket. Requires the participantsRead permission. - GET
/manage/events/:eventId/entries/by-checkin-tokenLook up participant by check-in token (Admin)Look up a registration by the check-in token embedded in the participant's QR code, for use in a reception app. Requires the participantsRead permission. - GET
/manage/events/:eventId/entries/:entryId/activity-logsParticipant activity logs (Admin)Return the history of state changes, check-ins and other operations for a registration, newest first. There is no pagination: every log for the registration is returned. Requires the participantsRead permission. - PUT
/manage/events/:eventId/entries/:entryId/stateChange entry state (check-in) (Admin)Change a registration's state: CHECKED_IN performs an on-site check-in, CANCELED cancels it, and for approval-based events CONFIRMED / REJECTED approve or reject it. Requires the participantsWrite permission. - PUT
/manage/events/:eventId/entries/:entryId/ticketChange a participant's ticket (Admin)Change the ticket type attached to a registration. No payment or refund of the price difference is performed. Requires the participantsWrite permission. - GET
/manage/events/:eventId/entries/invited-by/searchSearch inviters (Admin)Search for inviters to filter the participant list by. Keywords are split on whitespace and combined with AND; up to 50 options are returned. Requires the participantsRead permission. - POST
/manage/events/:eventId/stripe-connect/entries/:entryId/refundRefund a registration (Admin)Fully refund a registration paid via Stripe. The refund covers the remaining amount (paid minus already refunded) and no request body is required. Requires the paymentsWrite permission (ADMIN). - POST
/manage/events/:eventId/badge-printPrint a badge label (Admin)Print a badge label from a reception station on an event with the enavle integration enabled. Requires the participantsWrite or speakersWrite permission. - GET
/manage/events/:eventId/label-printRead label printing configuration (Admin)Read label printing configuration. - PUT
/manage/events/:eventId/label-printToggle label printing (Admin)Enable or disable Brother label printing for the event. Requires eventWrite. - POST
/manage/events/:eventId/label-print/printersRegister or update a printer (Admin)Register or update a printer. - DELETE
/manage/events/:eventId/label-print/printers/:printerIdDelete a printer registration (Admin)Requires eventWrite. Deletes the registration while retaining history and cancelling prepared or queued jobs. Returns 409 while receiving or with claimed, printing or unknown jobs. The same serial number can be registered again. - POST
/manage/events/:eventId/label-print/printers/:printerId/stationMaintain a shared station (Admin)Maintain a shared station. - POST
/manage/events/:eventId/label-print/printers/:printerId/claimClaim a print job (Admin)Claim a print job. - POST
/manage/events/:eventId/label-print/previewPreview a label without creating a print job (Admin)Requires authentication and event management permissions, plus eventWrite when entryId is omitted. Does not create a job, history entry or expiry. Pass the returned previewHash when creating a job on print. - GET
/manage/events/:eventId/label-print/jobsList print jobs (Admin)List print jobs. - GET
/manage/events/:eventId/label-print/jobs/:jobIdRead print job status (Admin)Read print job status. - POST
/manage/events/:eventId/label-print/jobsPrepare an immutable label (Admin)Prepare an immutable label. - GET
/manage/events/:eventId/label-print/jobs/:jobId/contentRead label image and raster (Admin)Read label image and raster. - POST
/manage/events/:eventId/label-print/jobs/:jobId/submitSubmit a prepared job (Admin)Submit a prepared job. - POST
/manage/events/:eventId/label-print/jobs/:jobId/transitionStart, report, cancel or resolve a job (Admin)Start, report, cancel or resolve a job. - GET
/manage/events/:eventId/dashboard/participants-summaryParticipant counts by state (Admin)Return registration counts grouped by state. All seven states are always present as keys, with 0 when there are none. Requires the participantsRead permission. - GET
/manage/events/:eventId/dashboard/participants-trendRegistration trend (Admin)Return the registration trend over a period. `data` holds per-bucket counts by state, and `total` is the cumulative number of confirmed registrations (CONFIRMED / CHECKED_IN). Requires the participantsRead permission. - GET
/manage/events/:eventId/dashboard/participants-analyticsParticipant demographics (Admin)Aggregate the profile answers captured at registration (gender, age group, residence). Only PENDING / AWAITING_PAYMENT / CONFIRMED / CHECKED_IN registrations are counted, and unanswered values are excluded. Requires the participantsRead permission. - GET
/manage/events/:eventId/dashboard-chartsDashboard survey aggregations (Admin)Return aggregations for the choice questions (singleSelect / multiSelect / toggle / radioButton) marked for dashboard display, counted over confirmed participants (CONFIRMED / CHECKED_IN). Requires the dashboardRead permission. - GET
/manage/events/:eventId/meetings/summaryMeeting summary (Admin)Return the number of meeting requests, confirmations, cancellations and messages for the event. Requires the meetingsRead permission (EDITOR or above).