Skip to main content
Version: Next

Access Codes

Access codes are the keys that participants use to start the registration process. Each code is unique to one participant slot and tracks the full submission lifecycle.


Code lifecycle


Generating codes

Navigate to Session -> Access Codes -> Generate Codes.

Generate codes panel showing count, format, delivery method, and roster assignment toggle

The generate codes panel. The roster assignment toggle controls whether codes are pre-linked to existing students or issued as open codes.

Generation options

OptionTypeDefaultDescription
countnumber-Number of codes to generate
prefixstringnoneShort text prepended to every code (e.g. SCH1)
formatenumhuman_readable_4_digitSee formats below
expiresAtISO datetimenoneCodes become expired after this timestamp
assignFromClassRosterbooleanfalseAuto-assign each code to an existing roster member
includeRosterHintsOnPrintoutbooleanfalsePrint name hint alongside the code
deliveryenumprintHow codes are distributed
recipientsarraynoneExplicit recipient list for email delivery

Code formats

FormatExampleUse case
human_readable_4_digitA1B2Short codes - quick to type on mobile
human_readable_6_digitA1B2C3More codes with lower collision risk

Roster-assigned vs. open codes

When assignFromClassRoster: true, the system pairs each generated code with an existing student or teacher from the session's class/grade roster. The code record stores:

  • assignedStudentId or assignedTeacherId
  • rosterSnapshot - a point-in-time copy of the person's known details
  • displayNameHint, studentNumberHint, or teacherNumberHint for printout display

This approach works best for student_verification - participants can only update the record pre-assigned to their code.


Delivery methods

delivery: "print" - the API returns the full code plain text in GenerateRegistrationCodesResult.codes[].code. Staff can render these into a printable sheet.

The printBatchId field groups codes generated together for batch printing or reprinting.

Code visibility

The raw plain-text code is only available in the generate and export API responses. After that, only codeLast4 is stored - staff can identify codes by their last 4 characters but cannot retrieve the full code again.

Sample printed code slip showing participant name hint, access code, and registration URL

Example code slip layout. Each slip shows the participant's name hint (if roster-assigned), the unique access code, and the URL where they should register.


Exporting existing codes

Use Export codes to re-generate a printable batch from codes that were already created (for example, to reprint a lost batch).

API: POST /registrations/sessions/{sessionId}/codes/export
Hook: useExportRegistrationCodes()


Listing codes

Access codes list showing code last-4, status badge, participant assignment, and timestamps

The codes list for a session. Each row shows the last 4 characters of the code, its current status, the assigned participant (if roster-assigned), and when it was last used.

const { data } = useRegistrationAccessCodes({
sessionId: "...",
status: "unused", // filter by lifecycle status
});

The list returns codeLast4, status, audienceType, and all assignment/timestamp fields. Full code text is not available.

API: GET /registrations/access-codes?sessionId={id}
Hook: useRegistrationAccessCodes(params)


Revoking a code

Staff can revoke any code that has not yet been approved. Revoking a code prevents the participant from making further changes or resubmitting.

const revoke = useRevokeRegistrationAccessCode();
revoke.mutate({ codeId: "..." });

API: POST /registrations/codes/{codeId}/revoke
Hook: useRevokeRegistrationAccessCode()

warning

Revoking a code is irreversible. The participant will see an error if they try to use it again. Issue a new code if the original was revoked in error.


Expiry

Set expiresAt at generation time to automatically expire codes on a given date. Expired codes return a registration_code_expired error when a participant tries to use them. Expiry does not affect codes that have already been started.


Code status reference

StatusWho transitions itMeaning
unusedSystem (on generate)Not yet used by participant
startedSystem (on first validate)Participant has begun the form
submittedSystem (on participant submit)Awaiting staff review
needs_correctionStaffSent back to participant
approvedStaffAccepted and imported
rejectedStaffPermanently rejected
revokedStaffManually cancelled
expiredSystemPast expiresAt and never started

API quick reference

OperationMethod + PathHook
Generate codesPOST /registrations/sessions/{id}/codes/generateuseGenerateRegistrationCodes()
Export codesPOST /registrations/sessions/{id}/codes/exportuseExportRegistrationCodes()
List codesGET /registrations/access-codesuseRegistrationAccessCodes(params)
Revoke codePOST /registrations/codes/{id}/revokeuseRevokeRegistrationAccessCode()