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

> 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.**



## OpenAPI

````yaml https://api.prod.zuddl.com/api/v3/api-docs/api-product post /v1/events/{eventId}/sessions/{sessionId}/attendance/checkout
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/checkout:
    post:
      tags:
        - Sessions
      summary: Record a session check-out
      description: >-
        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.**
      operationId: checkOutOfSession
      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-out 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-out is disabled for this session (CHECK_OUT_DISABLED)
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/org.events.app._internal._response.v1.ApiErrorResponse
        '422':
          description: >-
            Scanned registration is not yet linked to a Zuddl account
            (ACCOUNT_NOT_LINKED)
          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

````