---
title: "Record a session check-out"
method: POST
path: "/v1/events/{eventId}/sessions/{sessionId}/attendance/checkout"
tags: ["Sessions"]
---

# Record a session check-out

`POST /v1/events/{eventId}/sessions/{sessionId}/attendance/checkout`

## Request

- The document declares no server URL.
- Auth: none required
- TypeScript: <https://skmtc.dev/zuddl/apis/zuddl-webhook-documentation/docs/v1/events/:eventId/sessions/:sessionId/attendance/checkout/post.ts> (a function with typed inputs; its response is checked against the schema)

Marks the attendee identified by the supplied QR code as checked out of the given session. Accepts the same QR code formats as the check-in endpoint (raw code or Zuddl deep-link URL).

Required API key scopes: `WRITE`

**This API can only be called with an access key that was generated for Backend usage.**

## Path parameters

- `eventId` string, required
- `sessionId` string, required

## Request body

- OrgEventsAppDomainApiProductEventAttendanceDtosAttendanceCheckInRequest
  - `qrCode` string, required: QR code identifying the attendee. Accepts either the raw code (e.g. "EAFPSNAB2I") or a Zuddl deep-link URL such as "https://applink.zuddl.com/link/com.zuddl.portal/{eventId}/profile/{qrCode}" — the server extracts the trailing path segment when a URL is supplied.
  - `occurredAt` string, date-time: ISO-8601 timestamp of the scan from the partner's device. Defaults to the server time when omitted.

## Response `200`

Session check-out recorded

- OrgEventsAppDomainApiProductEventAttendanceDtosAttendanceCheckInResponse
  - `registrationId` string, uuid: Resolved registration id for the attendee. Null when the scanned user is a speaker without a registration record.
  - `accountId` string, uuid: Resolved Zuddl account id for the user.
  - `speakerId` string, uuid: Speaker id when the scanned user is a speaker for this event. Null otherwise.
  - `role` 'ATTENDEE' | 'ORGANIZER' | 'SPEAKER' | 'SPONSOR' | 'MODERATOR': Resolved role of the scanned user within the event.
  - `action` 'CHECK_IN' | 'CHECK_OUT': Action recorded for this scan.
  - `recordedAt` string, date-time: Timestamp recorded for the scan (echoes the request occurredAt or the server time used when omitted).

## Other responses

- `400`: Invalid input
- `401`: Unauthorized
- `404`: Session not found in this event, or QR code did not match a registration
- `409`: Session check-out is disabled for this session (CHECK_OUT_DISABLED)
- `422`: Scanned registration is not yet linked to a Zuddl account (ACCOUNT_NOT_LINKED)

---

[API](https://skmtc.dev/zuddl/apis/zuddl-webhook-documentation.md) - [All operations](https://skmtc.dev/zuddl/apis/zuddl-webhook-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/zuddl/apis/zuddl-webhook-documentation/revisions/571c1d41e62a?raw)
