---
title: "Record an event check-out"
method: POST
path: "/v1/events/{eventId}/attendees/attendance/checkout"
tags: ["Attendees"]
---

# Record an event check-out

`POST /v1/events/{eventId}/attendees/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/attendees/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 event. 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

## 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`

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`: No registration matched the scanned QR code in this event

---

[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)
