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

# Get quiz report

> Retrieve a detailed analytics report for a specific quiz. Returns participant results with scores, completion status, and optionally per-question responses and analytics. Results are paginated by participant.



## OpenAPI

````yaml /openapi.json get /v1/quizzes/{quizId}/report
openapi: 3.0.3
info:
  title: Doozy Public API
  version: 1.0.0
  description: >-
    The Doozy Public API allows you to programmatically access your
    organization's data.


    ## Authentication


    All API requests require an API key passed in the `x-api-key` header.


    ```

    x-api-key: dzy_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    ```


    API keys can be generated and managed through the Doozy dashboard. Each key
    is associated with a user account and inherits that user's permissions.


    ## Rate Limiting


    API requests are rate limited. Rate limiting is handled by Cloudflare. If
    you exceed the rate limit, you'll receive a 429 Too Many Requests response.


    ## Pagination


    List endpoints support cursor-based pagination using `limit` and
    `starting_after` query parameters.
  contact:
    name: Doozy Support
    email: support@doozy.live
    url: https://help.doozy.live/api
servers:
  - url: https://api.doozy.live
    description: Production
security:
  - apiKey: []
tags:
  - name: Quizzes
    description: Quiz analytics and reporting endpoints
  - name: Tracks
    description: Track management and analytics endpoints
  - name: Surveys
    description: Survey and poll analytics endpoints
  - name: Introductions
    description: Doozy Roulette and Matchmaking introduction endpoints
paths:
  /v1/quizzes/{quizId}/report:
    get:
      tags:
        - Quizzes
      summary: Get quiz report
      description: >-
        Retrieve a detailed analytics report for a specific quiz. Returns
        participant results with scores, completion status, and optionally
        per-question responses and analytics. Results are paginated by
        participant.
      parameters:
        - schema:
            type: string
            minLength: 1
            description: The unique identifier of the quiz
            example: quiz_abc123
          required: true
          description: The unique identifier of the quiz
          name: quizId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
            description: Maximum number of participants to return (1-100, default 25)
            example: 25
          required: false
          description: Maximum number of participants to return (1-100, default 25)
          name: limit
          in: query
        - schema:
            type: string
            description: >-
              Cursor for pagination - the user ID of the last participant from
              the previous page
            example: user_abc123
          required: false
          description: >-
            Cursor for pagination - the user ID of the last participant from the
            previous page
          name: starting_after
          in: query
        - schema:
            type: string
            description: >-
              Cursor for backward pagination - the user ID of the first
              participant on the previous page
            example: user_xyz789
          required: false
          description: >-
            Cursor for backward pagination - the user ID of the first
            participant on the previous page
          name: ending_before
          in: query
        - schema:
            allOf:
              - $ref: '#/components/schemas/ParticipantStatus'
              - description: Filter participants by status
                example: completed
          required: false
          description: Filter participants by status
          name: status
          in: query
        - schema:
            type: string
            description: >-
              Filter results to participants from a specific track (workflow).
              When specified, only participants who received the quiz via this
              track will be included.
            example: wf_abc123
          required: false
          description: >-
            Filter results to participants from a specific track (workflow).
            When specified, only participants who received the quiz via this
            track will be included.
          name: track_id
          in: query
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            default: 'false'
            description: Include quiz admin users in results (default false)
            example: 'false'
          required: false
          description: Include quiz admin users in results (default false)
          name: include_collaborators
          in: query
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            default: 'false'
            description: >-
              Include per-question responses for each participant (default
              false)
            example: 'true'
          required: false
          description: Include per-question responses for each participant (default false)
          name: include_question_responses
          in: query
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            default: 'false'
            description: >-
              Include per-question analytics with answer breakdowns (default
              false)
            example: 'true'
          required: false
          description: >-
            Include per-question analytics with answer breakdowns (default
            false)
          name: include_question_analytics
          in: query
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            default: 'false'
            description: Include feedback responses from post-quiz surveys (default false)
            example: 'false'
          required: false
          description: Include feedback responses from post-quiz surveys (default false)
          name: include_feedback
          in: query
      responses:
        '200':
          description: Quiz report with participants and analytics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuizReportResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication required - missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Quiz not found or user does not have access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKey: []
components:
  schemas:
    ParticipantStatus:
      type: string
      enum:
        - not_started
        - in_progress
        - completed
        - expired
    QuizReportResponse:
      type: object
      properties:
        object:
          type: string
          enum:
            - quiz_report
          description: Object type identifier
          example: quiz_report
        id:
          type: string
          description: Quiz ID
          example: quiz_abc123
        title:
          type: string
          description: Quiz title
          example: Product Knowledge Assessment
        summary:
          allOf:
            - $ref: '#/components/schemas/ReportSummary'
            - description: Summary statistics for the report
        participants:
          type: array
          items:
            $ref: '#/components/schemas/Participant'
          description: Paginated list of participants
        delivery_instances:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryInstance'
          description: Quiz delivery instances (workflows and one-off sends)
        question_analytics:
          type: array
          items:
            $ref: '#/components/schemas/QuestionAnalytics'
          description: >-
            Per-question analytics (only included if
            include_question_analytics=true)
        has_more:
          type: boolean
          description: Whether there are more participants available beyond this page
          example: true
        url:
          type: string
          description: The URL for accessing this report
          example: /v1/quizzes/quiz_abc123/report
        next_cursor:
          type: string
          nullable: true
          description: >-
            Cursor to fetch the next page of participants. Pass as
            starting_after in subsequent requests.
          example: resp_xyz789
        previous_cursor:
          type: string
          nullable: true
          description: >-
            Cursor to fetch the previous page of participants. Pass as
            ending_before in subsequent requests.
          example: resp_abc123
      required:
        - object
        - id
        - title
        - summary
        - participants
        - delivery_instances
        - has_more
        - url
        - next_cursor
        - previous_cursor
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - api_error
                - authentication_error
                - invalid_request_error
                - rate_limit_error
              description: The type of error returned
              example: invalid_request_error
            code:
              type: string
              nullable: true
              description: Machine-readable error code for specific error conditions
              example: resource_not_found
            message:
              type: string
              description: Human-readable error message
              example: 'No such quiz: quiz_abc123'
            param:
              type: string
              nullable: true
              description: The parameter related to the error, if applicable
              example: id
            doc_url:
              type: string
              format: uri
              description: URL to documentation about this error
              example: https://docs.doozy.live/api/errors#resource_not_found
          required:
            - type
            - code
            - message
      required:
        - error
    ReportSummary:
      type: object
      properties:
        total_participants:
          type: integer
          description: Total number of participants
          example: 145
        completed:
          type: integer
          description: Number of participants who completed the quiz
          example: 120
        in_progress:
          type: integer
          description: Number of participants currently taking the quiz
          example: 10
        not_started:
          type: integer
          description: Number of participants who haven't started
          example: 10
        expired:
          type: integer
          description: Number of participants whose quiz expired
          example: 5
        average_score:
          type: number
          nullable: true
          description: Average score of completed participants (0-100)
          example: 78.5
        completion_rate:
          type: number
          description: Percentage of participants who completed (0-100)
          example: 82.8
      required:
        - total_participants
        - completed
        - in_progress
        - not_started
        - expired
        - average_score
        - completion_rate
    Participant:
      type: object
      properties:
        object:
          type: string
          enum:
            - quiz_participant
          description: Object type identifier
          example: quiz_participant
        id:
          type: string
          description: Unique participant identifier (user ID)
          example: user_abc123
        email:
          type: string
          format: email
          description: Participant's email address
          example: jane.doe@example.com
        display_name:
          type: string
          description: Participant's display name
          example: Jane Doe
        slack_user_id:
          type: string
          nullable: true
          description: Participant's Slack user ID
          example: U01234567
        group_name:
          type: string
          nullable: true
          description: Participant's department or group
          example: Engineering
        manager_email:
          type: string
          nullable: true
          description: Email of participant's manager
          example: manager@example.com
        manager_name:
          type: string
          nullable: true
          description: Name of participant's manager
          example: John Smith
        manager_slack_user_id:
          type: string
          nullable: true
          description: Slack user ID of participant's manager
          example: U09876543
        status:
          allOf:
            - $ref: '#/components/schemas/ParticipantStatus'
            - description: Current status of the quiz attempt
              example: completed
        score:
          type: number
          nullable: true
          description: Score as a percentage (0-100). Null if not started.
          example: 85
        total_questions:
          type: integer
          description: Total number of questions in the quiz
          example: 10
        answered_questions:
          type: integer
          description: Number of questions answered
          example: 10
        correct_answers:
          type: integer
          description: Number of correct answers
          example: 8
        incorrect_answers:
          type: integer
          description: Number of incorrect answers
          example: 2
        assigned_at:
          type: string
          description: When the quiz was assigned (ISO 8601 format)
          example: '2026-01-15T10:30:00.000Z'
        completed_at:
          type: string
          nullable: true
          description: When the quiz was completed (ISO 8601 format)
          example: '2026-01-15T11:00:00.000Z'
        delivery_method:
          type: string
          enum:
            - track
            - one_off
          description: How the quiz was delivered
          example: track
        track_id:
          type: string
          nullable: true
          description: ID of the track if delivered via track
          example: trk_xyz789
        track_name:
          type: string
          nullable: true
          description: Name of the track if delivered via track
          example: Onboarding Quiz
        is_admin:
          type: boolean
          description: Whether this participant is a quiz admin/collaborator
          example: false
        question_responses:
          type: array
          items:
            $ref: '#/components/schemas/QuestionResponse'
          description: >-
            Per-question responses (only included if
            include_question_responses=true)
        feedback_response:
          $ref: '#/components/schemas/FeedbackResponse'
      required:
        - object
        - id
        - email
        - display_name
        - slack_user_id
        - group_name
        - manager_email
        - manager_name
        - manager_slack_user_id
        - status
        - score
        - total_questions
        - answered_questions
        - correct_answers
        - incorrect_answers
        - assigned_at
        - completed_at
        - delivery_method
        - track_id
        - track_name
        - is_admin
    DeliveryInstance:
      type: object
      properties:
        object:
          type: string
          enum:
            - quiz_delivery_instance
          description: Object type identifier
          example: quiz_delivery_instance
        id:
          type: string
          description: Unique delivery instance identifier
          example: inst_abc123
        total_participants:
          type: integer
          description: Number of participants in this delivery instance
          example: 25
        delivery_method:
          type: string
          enum:
            - track
            - one_off
          description: How the quiz was delivered
          example: track
        track_id:
          type: string
          nullable: true
          description: ID of the track if delivered via track
          example: trk_xyz789
        track_name:
          type: string
          nullable: true
          description: Name of the track if delivered via track
          example: Onboarding Quiz
        delivery_detail:
          type: string
          description: Human-readable description of the delivery
          example: '#general channel'
      required:
        - object
        - id
        - total_participants
        - delivery_method
        - track_id
        - track_name
        - delivery_detail
    QuestionAnalytics:
      type: object
      properties:
        object:
          type: string
          enum:
            - question_analytics
          description: Object type identifier
          example: question_analytics
        id:
          type: string
          description: Question ID
          example: q_abc123
        question:
          type: string
          description: The question text
          example: What is the capital of France?
        type:
          type: string
          description: Question type
          example: multipleChoice
        round_id:
          type: string
          nullable: true
          description: Round ID if the question belongs to a round
          example: round_xyz789
        round_name:
          type: string
          nullable: true
          description: Round name if the question belongs to a round
          example: Geography
        total_answered:
          type: integer
          description: Total number of responses to this question
          example: 120
        total_correct:
          type: integer
          description: Number of correct responses
          example: 95
        total_incorrect:
          type: integer
          description: Number of incorrect responses
          example: 25
        accuracy_rate:
          type: number
          description: Percentage of correct responses (0-100)
          example: 79.2
        answer_breakdown:
          type: array
          items:
            $ref: '#/components/schemas/AnswerBreakdown'
          description: Breakdown of how each answer option was selected
      required:
        - object
        - id
        - question
        - type
        - round_id
        - round_name
        - total_answered
        - total_correct
        - total_incorrect
        - accuracy_rate
        - answer_breakdown
    QuestionResponse:
      type: object
      properties:
        object:
          type: string
          enum:
            - question_response
          description: Object type identifier
          example: question_response
        question_id:
          type: string
          description: The question ID
          example: q_abc123
        submitted_answer:
          type: object
          nullable: true
          properties:
            id:
              type: string
            answer:
              type: string
              nullable: true
          required:
            - id
            - answer
          description: The answer the participant selected
        is_correct:
          type: boolean
          nullable: true
          description: Whether the answer was correct
          example: true
        answered_at:
          type: string
          nullable: true
          description: When the question was answered (ISO 8601 format)
          example: '2026-02-01T14:22:00.000Z'
      required:
        - object
        - question_id
        - submitted_answer
        - is_correct
        - answered_at
    FeedbackResponse:
      type: object
      properties:
        object:
          type: string
          enum:
            - feedback_response
          description: Object type identifier
          example: feedback_response
        survey_id:
          type: string
          description: The feedback survey ID
          example: srv_abc123
        survey_instance_id:
          type: string
          description: The feedback survey instance ID
          example: srvi_xyz789
        submitted_at:
          type: string
          description: When the feedback was submitted (ISO 8601 format)
          example: '2026-02-01T14:30:00.000Z'
        responses:
          type: array
          items:
            $ref: '#/components/schemas/FeedbackQuestionResponse'
          description: Individual feedback question responses
      required:
        - object
        - survey_id
        - survey_instance_id
        - submitted_at
        - responses
      description: Post-quiz feedback response (only included if include_feedback=true)
    AnswerBreakdown:
      type: object
      properties:
        id:
          type: string
          description: Answer option ID
          example: ans_a1b2c3
        answer:
          type: string
          description: Answer text
          example: Paris
        total_selected:
          type: integer
          description: Total times this answer was selected
          example: 45
        correct_selections:
          type: integer
          description: Times selected and was correct
          example: 45
        incorrect_selections:
          type: integer
          description: Times selected and was incorrect
          example: 0
      required:
        - id
        - answer
        - total_selected
        - correct_selections
        - incorrect_selections
    FeedbackQuestionResponse:
      type: object
      properties:
        question_id:
          type: string
          description: The feedback question ID
          example: fq_abc123
        question_text:
          type: string
          description: The feedback question text
          example: How would you rate this quiz?
        question_type:
          type: string
          description: The type of feedback question
          example: scale
        response:
          anyOf:
            - type: string
            - type: number
          description: The participant's response
          example: 4
        comment:
          type: string
          description: Optional comment from the participant
          example: Great quiz, very informative!
      required:
        - question_id
        - question_text
        - question_type
        - response
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Generate keys in the Doozy dashboard.

````