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

# List survey report participants

> The participants behind a survey report, one row per delivery, with the same filters. For anonymous surveys, only responded participants can be returned.



## OpenAPI

````yaml /openapi.json get /v1/surveys/{survey_id}/report/participants
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
  - name: Account
    description: 'Owner-only workspace settings: user provisioning and feature permissions'
paths:
  /v1/surveys/{survey_id}/report/participants:
    get:
      tags:
        - Surveys
      summary: List survey report participants
      description: >-
        The participants behind a survey report, one row per delivery, with the
        same filters. For anonymous surveys, only responded participants can be
        returned.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 128
            pattern: ^[A-Za-z0-9_-]+$
            description: The unique identifier of the survey
            example: 2XOADZ5X978jbJUbveb9
          required: true
          description: The unique identifier of the survey
          name: survey_id
          in: path
        - schema:
            type: string
            format: date-time
            example: '2026-01-01T00:00:00.000Z'
            description: Filter participants by received_at >= this date (ISO 8601 format)
          required: false
          description: Filter participants by received_at >= this date (ISO 8601 format)
          name: start_date
          in: query
        - schema:
            type: string
            format: date-time
            example: '2026-01-31T23:59:59.999Z'
            description: Filter participants by received_at <= this date (ISO 8601 format)
          required: false
          description: Filter participants by received_at <= this date (ISO 8601 format)
          name: end_date
          in: query
        - schema:
            type: string
            minLength: 1
            description: >-
              Filter identified-survey participants and aggregates by exact
              account group ID
            example: BgZupnpMujy4v1Zzd6sx
          required: false
          description: >-
            Filter identified-survey participants and aggregates by exact
            account group ID
          name: group_id
          in: query
        - schema:
            type: array
            items:
              type: string
              minLength: 1
              maxLength: 128
              pattern: ^[A-Za-z0-9_-]+$
            minItems: 1
            maxItems: 50
            description: >-
              Account group IDs. Matches participants in any selected group and
              takes precedence over group_id. A comma-separated query value is
              also accepted.
            example:
              - BgZupnpMujy4v1Zzd6sx
              - group_product
          required: false
          description: >-
            Account group IDs. Matches participants in any selected group and
            takes precedence over group_id. A comma-separated query value is
            also accepted.
          name: group_ids
          in: query
        - schema:
            type: array
            items:
              type: string
              minLength: 1
              maxLength: 128
              pattern: ^[A-Za-z0-9_-]+$
            minItems: 1
            maxItems: 50
            description: >-
              Work-location IDs. Matches participants at any selected location.
              A comma-separated query value is also accepted.
            example:
              - J5RW5yIhAzCkwwCX3Ofa
              - location_manchester
          required: false
          description: >-
            Work-location IDs. Matches participants at any selected location. A
            comma-separated query value is also accepted.
          name: work_location_ids
          in: query
        - schema:
            type: array
            items:
              type: string
              minLength: 1
              maxLength: 128
              pattern: ^[A-Za-z0-9_-]+$
            minItems: 1
            maxItems: 50
            description: >-
              Manager-of-record user IDs. Matches direct reports of any selected
              manager. A comma-separated query value is also accepted.
            example:
              - user_manager_one
              - user_manager_two
          required: false
          description: >-
            Manager-of-record user IDs. Matches direct reports of any selected
            manager. A comma-separated query value is also accepted.
          name: manager_ids
          in: query
        - schema:
            type: string
            maxLength: 20000
            description: >-
              JSON-encoded audience groups. Groups match with OR; populated
              fields inside a group match with AND; values inside each field
              match with OR. Takes precedence over the flat demographic
              parameters.
            example: >-
              [{"group_ids":["BgZupnpMujy4v1Zzd6sx"],"country_codes":["GB"]},{"group_ids":["group_sales"],"cities":["Berlin"]}]
          required: false
          description: >-
            JSON-encoded audience groups. Groups match with OR; populated fields
            inside a group match with AND; values inside each field match with
            OR. Takes precedence over the flat demographic parameters.
          name: audience_groups
          in: query
        - schema:
            type: string
            description: >-
              Filter to a specific delivery instance by ID. When set, start_date
              and end_date are ignored.
            example: K2CC1FIYz0JGcnCsNbIa
          required: false
          description: >-
            Filter to a specific delivery instance by ID. When set, start_date
            and end_date are ignored.
          name: instance_id
          in: query
        - schema:
            type: string
            description: >-
              Filter results to participants from a specific track (workflow).
              When specified, only participants who received the survey via this
              track will be included.
            example: i3XJiIJjOp7PJJBTvu4i
          required: false
          description: >-
            Filter results to participants from a specific track (workflow).
            When specified, only participants who received the survey via this
            track will be included.
          name: track_id
          in: query
        - schema:
            type: string
            minLength: 1
            description: >-
              With track_id: only participants who received the survey from this
              step of the track
            example: NKqbhqFnRyGChRhvM6bB
          required: false
          description: >-
            With track_id: only participants who received the survey from this
            step of the track
          name: step_id
          in: query
        - schema:
            type: string
            minLength: 1
            description: >-
              With track_id and step_id: only participants who got this variant
              of the step. Use `default` for the step's own content. Not
              available for anonymous surveys.
            example: default
          required: false
          description: >-
            With track_id and step_id: only participants who got this variant of
            the step. Use `default` for the step's own content. Not available
            for anonymous surveys.
          name: variant_id
          in: query
        - schema:
            type: string
            description: >-
              Filter results to participants from a specific schedule. When
              specified, only instances created by this schedule will be
              included.
            example: jiQDJJDaC3OH1aUnvnJH
          required: false
          description: >-
            Filter results to participants from a specific schedule. When
            specified, only instances created by this schedule will be included.
          name: schedule_id
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 250
            default: 25
            description: Maximum number of participants to return (1-250, default 25)
            example: 25
          required: false
          description: Maximum number of participants to return (1-250, default 25)
          name: limit
          in: query
        - schema:
            type: string
            maxLength: 256
            description: A participant id; returns the page after it
            example: 06gPNJbvBuM2i8BKRXct
          required: false
          description: A participant id; returns the page after it
          name: starting_after
          in: query
        - schema:
            type: string
            maxLength: 256
            description: A participant id; returns the page before it
            example: pbxJ4YFZnz57I8ai343J
          required: false
          description: A participant id; returns the page before it
          name: ending_before
          in: query
        - schema:
            type: string
            enum:
              - all
              - responded
              - not_responded
            default: responded
            description: >-
              Filter participants by status: 'responded' (default),
              'not_responded' or 'all'
            example: responded
          required: false
          description: >-
            Filter participants by status: 'responded' (default),
            'not_responded' or 'all'
          name: participant_status
          in: query
        - schema:
            type: string
            enum:
              - received_at_desc
              - responded_at_desc
              - name_asc
            default: received_at_desc
            description: Participant order
            example: responded_at_desc
          required: false
          description: Participant order
          name: sort
          in: query
      responses:
        '200':
          description: A page of participants
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SurveyReportParticipantList'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Not allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Survey not found or user does not have access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKey: []
components:
  schemas:
    SurveyReportParticipantList:
      type: object
      properties:
        object:
          type: string
          enum:
            - list
        data:
          type: array
          items:
            $ref: '#/components/schemas/SurveyParticipant'
        has_more:
          type: boolean
        url:
          type: string
      required:
        - object
        - data
        - has_more
        - url
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - api_error
                - authentication_error
                - invalid_request_error
                - rate_limit_error
                - not_found_error
                - permission_error
              description: The type of error returned
              example: invalid_request_error
            code:
              type: string
              nullable: true
              enum:
                - api_key_required
                - api_key_invalid
                - firebase_id_token_required
                - firebase_id_token_invalid
                - appcheck_token_required
                - appcheck_token_invalid
                - account_id_required
                - account_id_invalid
                - api_access_disabled
                - api_access_unauthorized
                - api_access_role_not_allowed
                - parameter_missing
                - parameter_invalid
                - resource_already_exists
                - resource_in_use
                - resource_not_found
                - permission_denied
                - not_implemented
                - internal_error
                - rate_limit_exceeded
                - upstream_error
                - user_not_found
                - user_not_connected_to_slack
                - user_missing_roles_for_track
                - user_already_on_track
                - user_already_completed_track
                - enrollee_already_terminal
                - track_not_active
                - track_not_enrollable
                - action_forbidden
                - api_access_plan_not_supported
                - plan_not_supported
                - draft_stale
                - invalid_cursor
                - program_archived
                - program_not_active
                - program_track_not_live
                - invalid_status_transition
                - mentorship_not_proposed
                - mentorship_ended
                - approval_waiting_on_mentor
                - no_reachable_manager
                - application_already_decided
                - participant_not_in_program
                - participant_already_answered
                - participant_not_mentor
                - reminder_pending
                - mentee_not_waiting
                - mentor_not_active
                - mentor_full
                - mentor_at_total
                - mentor_unchanged
                - same_person
                - invite_expired
                - invite_revoked
                - null
              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: tYYueINbgmmyss8O3LiD'
            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
            request_id:
              type: string
              description: ID of the request, for support
              example: req_8KSh4mNxQ1aZbPoLcVrT
          required:
            - type
            - code
            - message
            - request_id
      required:
        - error
    SurveyParticipant:
      type: object
      properties:
        object:
          type: string
          enum:
            - survey_participant
          description: Object type identifier
          example: survey_participant
        id:
          type: string
          description: Participant identifier (user ID or anon_{response_id} for anonymous)
          example: 06gPNJbvBuM2i8BKRXct
        email:
          type: string
          nullable: true
          description: Participant's email (null for anonymous surveys)
          example: jane.doe@example.com
        display_name:
          type: string
          nullable: true
          description: Participant's display name (null for anonymous surveys)
          example: Jane Doe
        status:
          allOf:
            - $ref: '#/components/schemas/SurveyParticipantStatus'
            - description: >-
                Response status: in_progress means saved steps remain
                unfinished; responded includes completed and legacy responses.
              example: responded
        received_at:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00.000Z'
          description: When the participant received the survey (ISO 8601 format)
        responded_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-16T14:30:00.000Z'
          description: >-
            When the participant responded (ISO 8601 format, null if not
            responded)
        first_opened_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-02-01T10:30:00.000Z'
          description: >-
            First successful Slack survey open (ISO 8601, null if no open was
            recorded)
        last_opened_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-02-01T10:30:00.000Z'
          description: >-
            Most recent successful Slack survey open (ISO 8601, null if no open
            was recorded)
        group_name:
          type: string
          nullable: true
          description: Participant's first current account group
          example: Engineering
        group_names:
          type: array
          items:
            type: string
          description: Names of every account group the participant belongs to
          example:
            - Engineering
            - Platform
        group_ids:
          type: array
          items:
            type: string
          description: Account group IDs the participant belongs to
          example:
            - BgZupnpMujy4v1Zzd6sx
        manager_email:
          type: string
          nullable: true
          description: Email of the participant's current manager-of-record
          example: manager@example.com
        manager_name:
          type: string
          nullable: true
          description: Name of the participant's current manager-of-record
          example: John Smith
        manager_slack_user_id:
          type: string
          nullable: true
          description: Slack user ID of the participant's current manager-of-record
          example: U09876543
        work_location_id:
          type: string
          nullable: true
          description: ID of the participant's current work location
          example: J5RW5yIhAzCkwwCX3Ofa
        work_location:
          type: string
          nullable: true
          description: Name of the participant's current work location
          example: London
        answers:
          type: array
          items:
            $ref: '#/components/schemas/SurveyParticipantAnswer'
          description: >-
            Delivered questions and answers. For nonrespondents, each value is
            null; empty strings and arrays remain answered values. Empty for
            anonymous sends that reached one person.
      required:
        - object
        - id
        - email
        - display_name
        - status
        - received_at
        - responded_at
        - first_opened_at
        - last_opened_at
        - group_name
        - group_names
        - group_ids
        - manager_email
        - manager_name
        - manager_slack_user_id
        - work_location_id
        - work_location
        - answers
    SurveyParticipantStatus:
      type: string
      enum:
        - responded
        - in_progress
        - not_responded
        - ignored
        - canceled
    SurveyParticipantAnswer:
      type: object
      properties:
        question_id:
          type: string
          description: The question ID
          example: t06iKVkbhqv0tiDitrWL
        question_text:
          type: string
          description: The question text (included for convenience)
          example: How satisfied are you with your onboarding experience?
        question_type:
          allOf:
            - $ref: '#/components/schemas/SurveyQuestionType'
            - description: Type of question
              example: scale_1_to_10
        value:
          anyOf:
            - type: string
            - type: number
            - type: array
              items:
                type: string
            - nullable: true
          description: The answer value (null if question was skipped or not answered)
          example: 8
        comment:
          type: string
          nullable: true
          description: Optional comment on the answer (null if no comment)
          example: Great experience overall!
      required:
        - question_id
        - question_text
        - question_type
        - value
        - comment
    SurveyQuestionType:
      type: string
      enum:
        - scale_1_to_10
        - scale_1_to_5
        - emoji_1_to_5
        - agree_disagree
        - enps
        - open_ended
        - multiple_choice
      description: Type of feedback question
      example: emoji_1_to_5
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Generate keys in the Doozy dashboard.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.