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

# Mark attendance

> Mark up to 500 registered participants as attended, no-show, or unknown before attendance is finalised. All or nothing: an unknown participant ID refuses the batch with 404, and a waitlisted or cancelled participant, or a finalised event, with 409 INVALID_STATE.



## OpenAPI

````yaml /openapi/public-v1-da.json post /api/v1/workspaces/{workspaceSlug}/events/{eventId}/attendance
openapi: 3.1.0
info:
  description: >-
    Stable external API for relationship lookup, meeting intelligence, and event
    participation.
  title: Florals offentlige API
  version: 1.0.0
servers:
  - description: Produktion
    url: https://app.floral.so
security: []
tags:
  - description: Søg på tværs af aktive virksomheder og personer.
    name: Søgning
  - description: Opret, hent, gennemgå, opdatér, arkivér og gendan virksomheder.
    name: Virksomheder
  - description: Opret, hent, gennemgå, opdatér, arkivér og gendan personer.
    name: Personer
  - description: Læs aktive offentlige definitioner af brugerdefinerede felter.
    name: Brugerdefinerede felter
  - description: Søg i normaliserede fakta fra det danske virksomhedsregister.
    name: Virksomhedsregister
  - description: Opret, hent og gennemgå mødebriefings.
    name: Briefings
  - description: Hent, gennemgå, kommentér og godkend mødereferater.
    name: Referater
  - description: >-
      List and inspect events, and finalise their attendance. Requires the
      Events add-on.
    name: Events
  - description: >-
      Register, list, inspect, and update event participants, mark attendance,
      and correct finalised attendance. Requires the Events add-on.
    name: Event participants
paths:
  /api/v1/workspaces/{workspaceSlug}/events/{eventId}/attendance:
    post:
      tags:
        - Event participants
      summary: Mark attendance
      description: >-
        Mark up to 500 registered participants as attended, no-show, or unknown
        before attendance is finalised. All or nothing: an unknown participant
        ID refuses the batch with 404, and a waitlisted or cancelled
        participant, or a finalised event, with 409 INVALID_STATE.
      operationId: markEventAttendanceV1
      parameters:
        - description: Slug for det arbejdsområde, adgangsoplysningen er bundet til.
          example: acme-nordic
          in: path
          name: workspaceSlug
          required: true
          schema:
            maxLength: 100
            minLength: 1
            pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
            type: string
        - description: Stable numeric event ID.
          example: 42
          in: path
          name: eventId
          required: true
          schema:
            minimum: 1
            type: integer
        - description: >-
            Valgfrit korrelations-id fra kalderen. Floral returnerer den
            anvendte værdi i X-Request-ID.
          example: 550e8400-e29b-41d4-a716-446655440000
          in: header
          name: X-Request-ID
          required: false
          schema:
            maxLength: 128
            minLength: 1
            type: string
        - description: >-
            Påkrævet idempotensnøgle. Identiske nye forsøg på samme kanoniske
            kald gentager oprindelig status, body, ETag, Location og request-id
            i 24 timer.
          example: markEventAttendanceV1-20260816-001
          in: header
          name: Idempotency-Key
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 255
      requestBody:
        content:
          application/json:
            example:
              participantIds:
                - 0f8b6c1e-3a52-4d6e-9b7a-2c4e5f6a7b8c
                - 5d2e8a41-7c3b-4f90-8e16-a9b0c1d2e3f4
              state: ATTENDED
            schema:
              $ref: '#/components/schemas/EventAttendanceMarkRequest'
        description: >-
          Unique participant IDs of this event and the target state. Maximum
          65536 bytes.
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                attendance:
                  changedParticipantIds:
                    - 0f8b6c1e-3a52-4d6e-9b7a-2c4e5f6a7b8c
                  state: ATTENDED
                  unchangedParticipantIds:
                    - 5d2e8a41-7c3b-4f90-8e16-a9b0c1d2e3f4
              schema:
                $ref: '#/components/schemas/EventAttendanceMarkResponse'
          description: Attendance marked
          headers:
            X-Content-Type-Options:
              description: Angiver altid nosniff ved JSON API-svar.
              schema:
                const: nosniff
                type: string
            X-RateLimit-Limit:
              description: Højeste antal kald i det aktuelle tidsvindue.
              schema:
                minimum: 1
                type: integer
            X-RateLimit-Remaining:
              description: Resterende kald i det aktuelle tidsvindue.
              schema:
                minimum: 0
                type: integer
            X-Request-ID:
              description: >-
                Stabilt korrelations-id for kaldet eller en idempotent
                gentagelse.
              schema:
                minLength: 1
                type: string
        '400':
          content:
            application/json:
              example:
                error:
                  code: INVALID_INPUT
                  message: Kaldet indeholder ugyldige værdier.
                  requestId: 550e8400-e29b-41d4-a716-446655440000
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiErrorResponse'
                properties:
                  error:
                    properties:
                      code:
                        enum:
                          - INVALID_INPUT
                        type: string
                    required:
                      - code
                    type: object
                type: object
          description: 'Stabile fejl: INVALID_INPUT'
          headers:
            X-Content-Type-Options:
              description: Angiver altid nosniff ved JSON API-svar.
              schema:
                const: nosniff
                type: string
            X-RateLimit-Limit:
              description: Højeste antal kald i det aktuelle tidsvindue.
              schema:
                minimum: 1
                type: integer
            X-RateLimit-Remaining:
              description: Resterende kald i det aktuelle tidsvindue.
              schema:
                minimum: 0
                type: integer
            X-Request-ID:
              description: >-
                Stabilt korrelations-id for kaldet eller en idempotent
                gentagelse.
              schema:
                minLength: 1
                type: string
        '401':
          content:
            application/json:
              example:
                error:
                  code: UNAUTHENTICATED
                  message: En gyldig bearer-adgangsoplysning er påkrævet.
                  requestId: 550e8400-e29b-41d4-a716-446655440000
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiErrorResponse'
                properties:
                  error:
                    properties:
                      code:
                        enum:
                          - UNAUTHENTICATED
                        type: string
                    required:
                      - code
                    type: object
                type: object
          description: 'Stabile fejl: UNAUTHENTICATED'
          headers:
            X-Content-Type-Options:
              description: Angiver altid nosniff ved JSON API-svar.
              schema:
                const: nosniff
                type: string
            X-RateLimit-Limit:
              description: Højeste antal kald i det aktuelle tidsvindue.
              schema:
                minimum: 1
                type: integer
            X-RateLimit-Remaining:
              description: Resterende kald i det aktuelle tidsvindue.
              schema:
                minimum: 0
                type: integer
            X-Request-ID:
              description: >-
                Stabilt korrelations-id for kaldet eller en idempotent
                gentagelse.
              schema:
                minLength: 1
                type: string
            WWW-Authenticate:
              description: Udfordring til bearer-godkendelse.
              example: Bearer realm="floral-api"
              schema:
                type: string
        '403':
          content:
            application/json:
              example:
                error:
                  code: FORBIDDEN
                  message: Adgangsoplysningen giver ikke adgang til denne handling.
                  requestId: 550e8400-e29b-41d4-a716-446655440000
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiErrorResponse'
                properties:
                  error:
                    properties:
                      code:
                        enum:
                          - FORBIDDEN
                        type: string
                    required:
                      - code
                    type: object
                type: object
          description: 'Stabile fejl: FORBIDDEN'
          headers:
            X-Content-Type-Options:
              description: Angiver altid nosniff ved JSON API-svar.
              schema:
                const: nosniff
                type: string
            X-RateLimit-Limit:
              description: Højeste antal kald i det aktuelle tidsvindue.
              schema:
                minimum: 1
                type: integer
            X-RateLimit-Remaining:
              description: Resterende kald i det aktuelle tidsvindue.
              schema:
                minimum: 0
                type: integer
            X-Request-ID:
              description: >-
                Stabilt korrelations-id for kaldet eller en idempotent
                gentagelse.
              schema:
                minLength: 1
                type: string
        '404':
          content:
            application/json:
              example:
                error:
                  code: NOT_FOUND
                  message: Ressourcen blev ikke fundet.
                  requestId: 550e8400-e29b-41d4-a716-446655440000
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiErrorResponse'
                properties:
                  error:
                    properties:
                      code:
                        enum:
                          - NOT_FOUND
                          - FEATURE_DISABLED
                        type: string
                    required:
                      - code
                    type: object
                type: object
          description: 'Stabile fejl: NOT_FOUND, FEATURE_DISABLED'
          headers:
            X-Content-Type-Options:
              description: Angiver altid nosniff ved JSON API-svar.
              schema:
                const: nosniff
                type: string
            X-RateLimit-Limit:
              description: Højeste antal kald i det aktuelle tidsvindue.
              schema:
                minimum: 1
                type: integer
            X-RateLimit-Remaining:
              description: Resterende kald i det aktuelle tidsvindue.
              schema:
                minimum: 0
                type: integer
            X-Request-ID:
              description: >-
                Stabilt korrelations-id for kaldet eller en idempotent
                gentagelse.
              schema:
                minLength: 1
                type: string
        '409':
          content:
            application/json:
              example:
                error:
                  code: CONFLICT
                  message: >-
                    Den ønskede ændring er i konflikt med ressourcens aktuelle
                    tilstand.
                  requestId: 550e8400-e29b-41d4-a716-446655440000
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiErrorResponse'
                properties:
                  error:
                    properties:
                      code:
                        enum:
                          - CONFLICT
                          - INVALID_STATE
                          - IDEMPOTENCY_CONFLICT
                        type: string
                    required:
                      - code
                    type: object
                type: object
          description: 'Stabile fejl: CONFLICT, INVALID_STATE, IDEMPOTENCY_CONFLICT'
          headers:
            X-Content-Type-Options:
              description: Angiver altid nosniff ved JSON API-svar.
              schema:
                const: nosniff
                type: string
            X-RateLimit-Limit:
              description: Højeste antal kald i det aktuelle tidsvindue.
              schema:
                minimum: 1
                type: integer
            X-RateLimit-Remaining:
              description: Resterende kald i det aktuelle tidsvindue.
              schema:
                minimum: 0
                type: integer
            X-Request-ID:
              description: >-
                Stabilt korrelations-id for kaldet eller en idempotent
                gentagelse.
              schema:
                minLength: 1
                type: string
        '429':
          content:
            application/json:
              example:
                error:
                  code: RATE_LIMITED
                  message: For mange kald. Prøv igen om lidt.
                  requestId: 550e8400-e29b-41d4-a716-446655440000
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiErrorResponse'
                properties:
                  error:
                    properties:
                      code:
                        enum:
                          - RATE_LIMITED
                        type: string
                    required:
                      - code
                    type: object
                type: object
          description: 'Stabile fejl: RATE_LIMITED'
          headers:
            X-Content-Type-Options:
              description: Angiver altid nosniff ved JSON API-svar.
              schema:
                const: nosniff
                type: string
            X-RateLimit-Limit:
              description: Højeste antal kald i det aktuelle tidsvindue.
              schema:
                minimum: 1
                type: integer
            X-RateLimit-Remaining:
              description: Resterende kald i det aktuelle tidsvindue.
              schema:
                minimum: 0
                type: integer
            X-Request-ID:
              description: >-
                Stabilt korrelations-id for kaldet eller en idempotent
                gentagelse.
              schema:
                minLength: 1
                type: string
            Retry-After:
              description: Sekunder til den aktuelle grænse nulstilles.
              schema:
                minimum: 1
                type: integer
        '500':
          content:
            application/json:
              example:
                error:
                  code: INTERNAL_ERROR
                  message: Der opstod en uventet fejl.
                  requestId: 550e8400-e29b-41d4-a716-446655440000
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiErrorResponse'
                properties:
                  error:
                    properties:
                      code:
                        enum:
                          - INTERNAL_ERROR
                        type: string
                    required:
                      - code
                    type: object
                type: object
          description: 'Stabile fejl: INTERNAL_ERROR'
          headers:
            X-Content-Type-Options:
              description: Angiver altid nosniff ved JSON API-svar.
              schema:
                const: nosniff
                type: string
            X-RateLimit-Limit:
              description: Højeste antal kald i det aktuelle tidsvindue.
              schema:
                minimum: 1
                type: integer
            X-RateLimit-Remaining:
              description: Resterende kald i det aktuelle tidsvindue.
              schema:
                minimum: 0
                type: integer
            X-Request-ID:
              description: >-
                Stabilt korrelations-id for kaldet eller en idempotent
                gentagelse.
              schema:
                minLength: 1
                type: string
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: cURL
          lang: Shell
          source: |-
            curl --request POST \
              --url 'https://app.floral.so/api/v1/workspaces/acme-nordic/events/42/attendance' \
              --header 'Authorization: Bearer $FLORAL_TOKEN' \
              --header 'Idempotency-Key: markEventAttendanceV1-20260816-001' \
              --header 'Content-Type: application/json' \
              --data '{
              "participantIds": [
                "0f8b6c1e-3a52-4d6e-9b7a-2c4e5f6a7b8c",
                "5d2e8a41-7c3b-4f90-8e16-a9b0c1d2e3f4"
              ],
              "state": "ATTENDED"
            }'
components:
  schemas:
    EventAttendanceMarkRequest:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        participantIds:
          minItems: 1
          maxItems: 500
          type: array
          items:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          uniqueItems: true
        state:
          type: string
          enum:
            - UNKNOWN
            - ATTENDED
            - NO_SHOW
      required:
        - participantIds
        - state
      additionalProperties: false
    EventAttendanceMarkResponse:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        attendance:
          type: object
          properties:
            changedParticipantIds:
              maxItems: 500
              type: array
              items:
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
            state:
              type: string
              enum:
                - UNKNOWN
                - ATTENDED
                - NO_SHOW
            unchangedParticipantIds:
              maxItems: 500
              type: array
              items:
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          required:
            - changedParticipantIds
            - state
            - unchangedParticipantIds
          additionalProperties: false
      required:
        - attendance
      additionalProperties: false
    ApiErrorResponse:
      additionalProperties: false
      properties:
        error:
          additionalProperties: false
          properties:
            code:
              enum:
                - CONFLICT
                - FEATURE_DISABLED
                - FORBIDDEN
                - IDEMPOTENCY_CONFLICT
                - INTERNAL_ERROR
                - INVALID_INPUT
                - INVALID_STATE
                - NOT_FOUND
                - PRECONDITION_REQUIRED
                - RATE_LIMITED
                - UNAUTHENTICATED
                - VERSION_CONFLICT
              type: string
            message:
              minLength: 1
              type: string
            requestId:
              maxLength: 128
              minLength: 1
              type: string
          required:
            - code
            - message
            - requestId
          type: object
      required:
        - error
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: Floral PAT
      description: >-
        Godkend med en personlig Floral-adgangsnøgle, der er bundet til ét
        arbejdsområde.
      scheme: bearer
      type: http

````