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

# Record an event check-in

`POST /v1/events/{eventId}/attendees/attendance/checkin`

Marks the attendee identified by the supplied QR code as checked into the event. Intended for onsite check-in partners (e.g. RFID badge-scan vendors) to push real-time scans back into Zuddl. The QR code may be supplied either as the raw code or as a Zuddl deep-link URL (e.g. https://applink.zuddl.com/link/com.zuddl.portal/{eventId}/profile/{qrCode}); the server extracts the trailing path segment when a URL is supplied. If the scanned user is also a speaker for this event, the check-in is recorded against the speaker record.

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-in 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 (missing or unparseable qrCode, invalid eventId)
- `401` — Unauthorized — API key missing, invalid, or lacks access to this event
- `404` — No registration matched the scanned QR code in this event

---

[API](https://skmtc.net/zuddl/apis/zuddl-webhook-documentation.md) · [All operations](https://skmtc.net/zuddl/apis/zuddl-webhook-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zuddl/zuddl-webhook-documentation/revisions/571c1d41e62a/schema)
