> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zuddl.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Record a session check-in

> Marks the attendee identified by the supplied QR code as checked into the given session. Intended for onsite check-in partners (e.g. RFID badge-scan vendors). 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. Session attendance is recorded against the user's Zuddl account; if the scanned registration is not yet linked to an account, the request is rejected with 422.

Required API key scopes: `WRITE`

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



## OpenAPI

````yaml https://api.prod.zuddl.com/api/v3/api-docs/api-product post /v1/events/{eventId}/sessions/{sessionId}/attendance/checkin
openapi: 3.1.0
info:
  title: Zuddl API Documentation
  description: >-
    Zuddl RESTful APIs let you interact with the Zuddl platform and take action
    for your event or webinar. They let you add attendees, get attendee details,
    get event details, and more.


    The API response is returned in JSON, which your systems can easily consume.


    The API parameters allow you to customize the response using filters,
    sorting, pagination, and other parameters. Parameter values should be
    percent-encoded (URL-encoded) to ensure correct transmission, especially if
    they contain special characters such as spaces, semi-colons, or slashes.


    # Rate limits


    | Metrics | Value |

    | --- | --- |

    | Requests/second | 10 |

    | Burst or no. of concurrent calls allowed | 100 requests |

    | Total quota | 10000 requests/day |
  version: '1.0'
servers:
  - url: https://api.zuddl.com/
security:
  - api_key: []
tags:
  - name: Events
    description: API endpoints for managing events
  - name: Attendees
    description: >-
      The attendee APIs let you add and retrieve attendee in a particular event
      type.
  - name: Sessions
    description: API endpoints for managing event sessions
  - name: Speakers
    description: API endpoints for managing event speakers
  - name: Sponsors
    description: API endpoints for managing event sponsors
  - name: Locations
    description: API endpoints for managing event locations
paths:
  /v1/events/{eventId}/sessions/{sessionId}/attendance/checkin:
    post:
      tags:
        - Sessions
      summary: Record a session check-in
      description: >-
        Marks the attendee identified by the supplied QR code as checked into
        the given session. Intended for onsite check-in partners (e.g. RFID
        badge-scan vendors). 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.
        Session attendance is recorded against the user's Zuddl account; if the
        scanned registration is not yet linked to an account, the request is
        rejected with 422.


        Required API key scopes: `WRITE`


        **This API can only be called with an access key that was generated for
        Backend usage.**
      operationId: checkInToSession
      parameters:
        - name: eventId
          in: path
          description: Unique identifier of the event
          required: true
          schema:
            type: string
            pattern: >-
              ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          example: 4fcebf73-3ddb-4fe6-b56d-5dd7dedb7c3d
        - name: sessionId
          in: path
          description: Unique identifier of the session
          required: true
          schema:
            type: string
          example: 4fcebf73-3ddb-4fe6-b56d-5dd7dedb7c3g
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/org.events.app.domain.api_product.event.attendance.dtos.AttendanceCheckInRequest
        required: true
      responses:
        '200':
          description: Session check-in recorded
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/org.events.app.domain.api_product.event.attendance.dtos.AttendanceCheckInResponse
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/org.events.app._internal._response.v1.ApiErrorResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/org.events.app._internal._response.v1.ApiErrorResponse
        '404':
          description: >-
            Session not found in this event, or QR code did not match a
            registration
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/org.events.app._internal._response.v1.ApiErrorResponse
        '409':
          description: Session check-in is disabled for this session (CHECK_IN_DISABLED)
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/org.events.app._internal._response.v1.ApiErrorResponse
        '422':
          description: >-
            Either ACCOUNT_NOT_LINKED (scanned registration is not yet linked to
            a Zuddl account) or INELIGIBLE_FOR_SESSION (attendee is not in the
            session's configured audience for its check-in permission type)
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/org.events.app._internal._response.v1.ApiErrorResponse
components:
  schemas:
    org.events.app.domain.api_product.event.attendance.dtos.AttendanceCheckInRequest:
      properties:
        qrCode:
          type: string
          description: >-
            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.
          example: EAFPSNAB2I
          minLength: 1
        occurredAt:
          type: string
          format: date-time
          description: >-
            ISO-8601 timestamp of the scan from the partner's device. Defaults
            to the server time when omitted.
          example: '2026-06-12T14:33:00Z'
      required:
        - qrCode
    org.events.app.domain.api_product.event.attendance.dtos.AttendanceCheckInResponse:
      properties:
        registrationId:
          type: string
          format: uuid
          description: >-
            Resolved registration id for the attendee. Null when the scanned
            user is a speaker without a registration record.
          example: 4fcebf73-3ddb-4fe6-b56d-5dd7dedb7c3d
        accountId:
          type: string
          format: uuid
          description: Resolved Zuddl account id for the user.
          example: 9e2b6d4a-6c3a-4a7e-8d24-1c2f8a31a812
        speakerId:
          type: string
          format: uuid
          description: >-
            Speaker id when the scanned user is a speaker for this event. Null
            otherwise.
          example: d812a64f-8865-4289-9024-9a120792c3d8
        role:
          type: string
          description: Resolved role of the scanned user within the event.
          enum:
            - ATTENDEE
            - ORGANIZER
            - SPEAKER
            - SPONSOR
            - MODERATOR
          example: ATTENDEE
        action:
          type: string
          description: Action recorded for this scan.
          enum:
            - CHECK_IN
            - CHECK_OUT
          example: CHECK_IN
        recordedAt:
          type: string
          format: date-time
          description: >-
            Timestamp recorded for the scan (echoes the request occurredAt or
            the server time used when omitted).
          example: '2026-06-12T14:33:00Z'
    org.events.app._internal._response.v1.ApiErrorResponse:
      properties:
        timestamp:
          type: string
          format: date-time
        message:
          type: string
        description:
          type: string
        errors:
          type: object
          additionalProperties:
            type: string
  securitySchemes:
    api_key:
      type: apiKey
      description: Provide your API key secret in the `Authorization` header
      name: Authorization
      in: header

````