> ## 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 track report instances

> The enrollees or group runs behind a track report, with step progress and, optionally, step results. Takes the report's filters.



## OpenAPI

````yaml /openapi.json get /v1/tracks/{track_id}/report/instances
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/tracks/{track_id}/report/instances:
    get:
      tags:
        - Tracks
      summary: List track report instances
      description: >-
        The enrollees or group runs behind a track report, with step progress
        and, optionally, step results. Takes the report's filters.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 128
            pattern: ^[A-Za-z0-9_-]+$
            description: The unique identifier of the track
            example: i3XJiIJjOp7PJJBTvu4i
          required: true
          description: The unique identifier of the track
          name: track_id
          in: path
        - schema:
            type: string
            enum:
              - scheduled
              - active
              - delivered
              - completed
              - failed
              - paused
              - canceled
              - all
            default: all
            description: >-
              Filter enrollees or group runs by status (default: all). For group
              runs, completed matches successful delivered runs.
            example: all
          required: false
          description: >-
            Filter enrollees or group runs by status (default: all). For group
            runs, completed matches successful delivered runs.
          name: status
          in: query
        - schema:
            type: string
            format: date-time
            example: '2026-01-01T00:00:00.000Z'
            description: >-
              Filter enrollees or group runs started at or after this date (ISO
              8601)
          required: false
          description: >-
            Filter enrollees or group runs started at or after this date (ISO
            8601)
          name: start_date
          in: query
        - schema:
            type: string
            format: date-time
            example: '2026-01-31T23:59:59.999Z'
            description: >-
              Filter enrollees or group runs started at or before this date (ISO
              8601)
          required: false
          description: >-
            Filter enrollees or group runs started at or before this date (ISO
            8601)
          name: end_date
          in: query
        - schema:
            type: string
            minLength: 1
            maxLength: 128
            pattern: ^[A-Za-z0-9_-]+$
            description: >-
              Only enrollees and group runs for this cohort, including people
              enrolled when the track was sent to it
          required: false
          description: >-
            Only enrollees and group runs for this cohort, including people
            enrolled when the track was sent to it
          name: cohort_id
          in: query
        - schema:
            type: string
            description: >-
              Only this step: its progress on each row, and its variants in step
              analytics
            example: NKqbhqFnRyGChRhvM6bB
          required: false
          description: >-
            Only this step: its progress on each row, and its variants in step
            analytics
          name: step_id
          in: query
        - schema:
            type: string
            minLength: 1
            description: >-
              With step_id: only enrollees who got this variant of that step,
              and step analytics for them. Use `default` for the step's own
              content.
            example: default
          required: false
          description: >-
            With step_id: only enrollees who got this variant of that step, and
            step analytics for them. Use `default` for the step's own content.
          name: variant_id
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
            description: >-
              Maximum number of enrollees or group runs to return (1-100,
              default 25)
            example: 25
          required: false
          description: >-
            Maximum number of enrollees or group runs to return (1-100, default
            25)
          name: limit
          in: query
        - schema:
            type: string
            maxLength: 256
            description: An instance id; returns the page after it
            example: K2CC1FIYz0JGcnCsNbIa
          required: false
          description: An instance id; returns the page after it
          name: starting_after
          in: query
        - schema:
            type: string
            maxLength: 256
            description: An instance id; returns the page before it
            example: 269Z8Xs5tIgUaJcOKCFM
          required: false
          description: An instance id; returns the page before it
          name: ending_before
          in: query
        - schema:
            allOf:
              - $ref: '#/components/schemas/StepType'
              - description: Only include step progress for steps of this type
          required: false
          description: Only include step progress for steps of this type
          name: step_type
          in: query
        - schema:
            type: boolean
            description: >-
              Include activity results (survey answers, quiz responses, etc.) in
              step progress (default true)
            example: 'true'
          required: false
          description: >-
            Include activity results (survey answers, quiz responses, etc.) in
            step progress (default true)
          name: include_step_results
          in: query
      responses:
        '200':
          description: A page of enrollees or group runs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackReportInstanceList'
        '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: Track not found or user does not have access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKey: []
components:
  schemas:
    StepType:
      type: string
      enum:
        - message
        - email
        - quiz
        - poll
        - survey
        - individual_introductions
        - mentor_assignment
        - add_to_track
        - tasks
        - webhook
        - join_mentoring_program
      description: Type of step
      example: survey
    TrackReportInstanceList:
      type: object
      properties:
        object:
          type: string
          enum:
            - list
        data:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/TrackEnrollee'
              - $ref: '#/components/schemas/GroupTrackRun'
        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
    TrackEnrollee:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_enrollee
          description: Object type identifier
          example: track_enrollee
        id:
          type: string
          description: Track instance ID
          example: K2CC1FIYz0JGcnCsNbIa
        track_name:
          type: string
          description: Name of the track this enrollee is on
          example: New Hire Onboarding
        user_id:
          type: string
          description: User ID
          example: 06gPNJbvBuM2i8BKRXct
        email:
          type: string
          nullable: true
          description: Enrollee's email address
          example: jane.doe@example.com
        display_name:
          type: string
          nullable: true
          description: Enrollee's display name
          example: Jane Doe
        slack_user_id:
          type: string
          nullable: true
          description: Enrollee's Slack user ID
          example: U01234567
        department:
          type: string
          nullable: true
          description: Enrollee's department or group
          example: Engineering
        location:
          type: string
          nullable: true
          description: Enrollee's work location
          example: San Francisco, CA
        manager_name:
          type: string
          nullable: true
          description: Manager's display name
          example: John Smith
        manager_email:
          type: string
          nullable: true
          description: Manager's email address
          example: john.smith@example.com
        manager_id:
          type: string
          nullable: true
          description: Manager's user ID
          example: trtYwpMXOTWLPLg6Pjfs
        mentor_user_id:
          type: string
          nullable: true
          description: Assigned mentor's user ID
          example: 27U7XioXk7k08gxOD59X
        mentor_name:
          type: string
          nullable: true
          description: Assigned mentor's display name
          example: Alex Johnson
        mentor_email:
          type: string
          nullable: true
          description: Assigned mentor's email address
          example: alex.johnson@example.com
        mentor_assigned_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-15T11:00:00.000Z'
          description: >-
            When the mentor was assigned, i.e. finalised — the intro DM fired
            (ISO 8601). Null while a mentor is pre-picked but not yet finalised;
            mentor_id is still populated in that case.
        group_names:
          type: array
          items:
            type: string
          description: Names of the groups the enrollee belongs to
          example:
            - Engineering
            - Backend
        trigger:
          allOf:
            - $ref: '#/components/schemas/TrackTriggerType'
            - description: >-
                How this user was enrolled in the track (user_join,
                manual_user_trigger, self_join, schedule, work_anniversary,
                added_by_another_track)
              example: user_join
        status:
          allOf:
            - $ref: '#/components/schemas/TrackEnrolleeStatus'
            - description: Current enrollment status
              example: active
        failure_reason:
          type: string
          nullable: true
          description: >-
            Reason for enrollment failure, if applicable. Possible values:
            user_not_found, user_already_in_workflow,
            user_removed_from_workflow, workflow_not_active, unknown_error
          example: null
        failure_reason_message:
          type: string
          nullable: true
          description: Human-readable message for the failure reason
          example: The user could not be found
        failed_by:
          $ref: '#/components/schemas/MicroProfile'
        started_at:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00.000Z'
          description: When the enrollee started the track (ISO 8601)
        delivered_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-20T10:00:00.000Z'
          description: >-
            When all steps were delivered to the enrollee (ISO 8601). Null if
            not all steps have been delivered yet.
        completed_at:
          type: string
          nullable: true
          format: date-time
          example: null
          description: >-
            When the enrollee completed all user-completable steps in the track
            (ISO 8601). Null if not yet completed.
        failed_at:
          type: string
          nullable: true
          format: date-time
          example: null
          description: When the enrollment failed (ISO 8601)
        next_step_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-20T09:00:00.000Z'
          description: When the next step is scheduled to run (ISO 8601)
        added_by_user_id:
          type: string
          nullable: true
          description: User ID of who manually enrolled this user (if applicable)
          example: CAbS4yGYOdeTlc1s3ETk
        added_by_track_id:
          type: string
          nullable: true
          description: If enrolled via an add_to_track step, the source track ID
          example: 1Q4L13Hd3vMogMxVnCjR
        timezone:
          type: string
          nullable: true
          description: Timezone this enrollment is running in
          example: America/New_York
        steps_delivered:
          type: integer
          description: >-
            Number of steps delivered to the user (status = delivered or
            completed)
          example: 4
        steps_completed:
          type: integer
          description: Number of steps the user has completed (status = completed only)
          example: 3
        steps_total:
          type: integer
          description: Total number of steps in the track
          example: 5
        steps_skipped:
          type: integer
          description: >-
            Number of steps skipped for this enrollee, such as a step variant
            set to skip for their audience
          example: 1
        delivery_progress_percentage:
          type: number
          description: >-
            Delivery progress as a percentage (0-100). Calculated as
            steps_delivered / (steps_total - steps_skipped) * 100.
          example: 80
        completion_progress_percentage:
          type: number
          description: >-
            Completion progress as a percentage (0-100). Calculated as
            steps_completed / (steps_total - steps_skipped) * 100.
          example: 60
        step_progress:
          type: array
          items:
            $ref: '#/components/schemas/TrackEnrolleeStepProgress'
          description: Per-step progress details
      required:
        - object
        - id
        - track_name
        - user_id
        - email
        - display_name
        - slack_user_id
        - department
        - location
        - manager_name
        - manager_email
        - manager_id
        - mentor_user_id
        - mentor_name
        - mentor_email
        - mentor_assigned_at
        - group_names
        - trigger
        - status
        - failure_reason
        - failure_reason_message
        - failed_by
        - started_at
        - delivered_at
        - completed_at
        - failed_at
        - next_step_at
        - added_by_user_id
        - added_by_track_id
        - timezone
        - steps_delivered
        - steps_completed
        - steps_total
        - steps_skipped
        - delivery_progress_percentage
        - completion_progress_percentage
        - step_progress
    GroupTrackRun:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_group_run
        id:
          type: string
        status:
          type: string
          enum:
            - scheduled
            - active
            - delivered
            - failed
            - paused
            - canceled
        track_name:
          type: string
        timezone:
          type: string
        failure_reason:
          type: string
          nullable: true
        failure_reason_message:
          type: string
          nullable: true
        cohort_id:
          type: string
          nullable: true
        next_step_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-02-01T10:30:00.000Z'
        trigger_event_id:
          type: string
          nullable: true
        started_at:
          type: string
          format: date-time
          example: '2026-02-01T10:30:00.000Z'
        finished_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-02-01T10:30:00.000Z'
        total_steps:
          type: integer
        delivered_step_count:
          type: integer
        failed_step_count:
          type: integer
        step_progress:
          type: array
          items:
            $ref: '#/components/schemas/TrackEnrolleeStepProgress'
      required:
        - object
        - id
        - status
        - track_name
        - timezone
        - failure_reason
        - failure_reason_message
        - cohort_id
        - started_at
        - finished_at
        - total_steps
        - delivered_step_count
        - failed_step_count
        - step_progress
    TrackTriggerType:
      type: string
      enum:
        - user_join
        - manual_user_trigger
        - manual_group_trigger
        - schedule
        - schedule_group
        - work_anniversary
        - added_by_another_track
        - self_join
        - cohort_started
        - cohort_member_added
        - mentoring_pair_introduced
        - channel_join
    TrackEnrolleeStatus:
      type: string
      enum:
        - scheduled
        - new
        - active
        - processing
        - active_batch
        - processing_batch
        - delivered
        - completed
        - failed
        - paused
        - paused_awaiting_slack
        - canceled
    MicroProfile:
      type: object
      nullable: true
      properties:
        uid:
          type: string
          description: User ID
          example: 3uWpQ1lpVcvS0BisXwGg
        display_name:
          type: string
          description: User display name
          example: John Doe
        email:
          type: string
          description: User email
          example: john@example.com
        image_token:
          type: string
          nullable: true
          description: Profile image token
          example: U2cIK8VPYKqQxpfEz7iG
        team_id:
          type: string
          nullable: true
          description: User's team ID
          example: DszkbQaLQw4JOIBAZqzT
        team_name:
          type: string
          nullable: true
          description: User's team name
          example: Engineering
        seniority:
          type: number
          nullable: true
          description: User's seniority level
          example: 2
      required:
        - uid
        - display_name
        - email
        - image_token
        - team_id
        - team_name
        - seniority
      description: >-
        User who caused the failure (e.g. the admin who removed the enrollee).
        Null if the failure wasn't caused by a known user.
    TrackEnrolleeStepProgress:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_progress
          description: Object type identifier
          example: track_step_progress
        step_id:
          type: string
          description: Unique step identifier
          example: NKqbhqFnRyGChRhvM6bB
        step_type:
          $ref: '#/components/schemas/StepType'
        channel:
          $ref: '#/components/schemas/StepChannel'
        title:
          type: string
          nullable: true
          description: Step title
          example: Onboarding Survey
        display_title:
          type: string
          nullable: true
          description: >-
            Read-only name to show for the step: `title` if set, otherwise the
            name of the survey or quiz the step sends. Null when neither is
            available. Set `title` to change it.
          example: Onboarding Survey
        order:
          type: integer
          description: Position in the track (1-indexed)
          example: 1
        day:
          type: integer
          description: >-
            Zero-based delivery day this step is anchored to (0 = Day 1 in the
            builder), weekday-counted from the enrollee's first day. Convert to
            a 1-based label for display.
          example: 0
        time:
          type: string
          nullable: true
          pattern: ^([01]\d|2[0-3]):[0-5]\d$
          example: '09:00'
          description: >-
            Clock time of day this step delivers (HH:mm, local to the enrollee's
            timezone). Null means the 09:00 default.
        scheduled_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-16T14:00:00.000Z'
          description: >-
            Projected delivery instant for a step not yet sent (ISO 8601),
            computed the same way the sender schedules it — resolved against the
            enrollee's anchor, timezone, and run-days. Null once the step is
            sent, failed, or skipped, and for pending steps on a finished
            enrollment where it is no longer knowable.
        status:
          allOf:
            - $ref: '#/components/schemas/TrackStepProgressStatus'
            - description: Current step progress status
              example: completed
        started_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-15T10:30:00.000Z'
          description: When the step started (ISO 8601)
        delivered_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-15T11:00:00.000Z'
          description: When the step was delivered to the user (ISO 8601)
        completed_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-16T14:30:00.000Z'
          description: >-
            When the user completed the step (ISO 8601). For user-completable
            steps (quiz, survey, tasks, intro), this is when the user finished.
            For non-user-completable steps (message, delay, mentor), this equals
            delivered_at.
        failed_at:
          type: string
          nullable: true
          format: date-time
          example: null
          description: When the step failed (ISO 8601)
        skipped_at:
          type: string
          nullable: true
          format: date-time
          example: null
          description: When the step was skipped (ISO 8601)
        failure_reason:
          type: string
          nullable: true
          description: Reason for failure if applicable
          example: null
        failure_reason_message:
          type: string
          nullable: true
          description: Human-readable message for the failure reason
          example: No mentor is available for assignment
        variant_id:
          type: string
          nullable: true
          description: >-
            The variant of this step the enrollee got: a variant id, or
            `default` for the step's own content. Null for a step without
            variants. Pass it as the report's `variant_id` filter.
          example: default
        skip_reason:
          type: string
          nullable: true
          enum:
            - pre_start_window_passed
            - variant_audience
            - null
          description: >-
            Why the step was skipped. `pre_start_window_passed`: a
            before-first-day step was reached on or after the enrollee's start
            day, so it was not sent. `variant_audience`: the enrollee matched a
            step variant (or the fallback) set to skip.
          example: null
        skip_reason_message:
          type: string
          nullable: true
          description: Human-readable message for the skip reason
          example: null
        blocked_reason:
          type: string
          nullable: true
          enum:
            - missing_personal_email
            - invalid_personal_email
            - mentor_not_assigned
            - awaiting_slack
            - null
          description: >-
            Why the enrollee is stuck on this step. `missing_personal_email`: a
            pre-start email step is waiting for a personal email.
            `invalid_personal_email`: the hire's personal email bounced and is
            waiting to be corrected. `mentor_not_assigned`: a manual mentor step
            is waiting for someone to pick the mentor. `awaiting_slack`: a Slack
            step is waiting for the enrollee to join Slack.
          example: null
        blocked_reason_message:
          type: string
          nullable: true
          description: Human-readable message for the blocked reason
          example: null
        blocked_at:
          type: string
          nullable: true
          format: date-time
          example: null
          description: When the step became blocked (ISO 8601)
        expires_at:
          type: string
          nullable: true
          format: date-time
          example: null
          description: >-
            When the enrollee's window to respond closes (ISO 8601). Set on a
            delivered survey, poll or quiz step. Null if the step has no
            deadline or step results aren't included.
        destination_type:
          type: string
          nullable: true
          description: >-
            Where this step is delivered (user, manager, mentor, slackChannel,
            etc.)
          example: user
        result:
          $ref: '#/components/schemas/TrackStepResult'
      required:
        - object
        - step_id
        - step_type
        - title
        - display_title
        - order
        - day
        - time
        - scheduled_at
        - status
        - started_at
        - delivered_at
        - completed_at
        - failed_at
        - skipped_at
        - failure_reason
        - failure_reason_message
        - destination_type
        - result
    StepChannel:
      type: string
      enum:
        - slack
        - email
      description: >-
        Delivery channel for a message step; "auto" picks Slack or email per
        recipient at delivery. Absent for step types that don't deliver a
        message.
      example: slack
    TrackStepProgressStatus:
      type: string
      enum:
        - active
        - delivered
        - completed
        - failed
        - skipped
        - canceled
    TrackStepResult:
      anyOf:
        - $ref: '#/components/schemas/TrackStepSurveyResult'
        - $ref: '#/components/schemas/TrackStepQuizResult'
        - $ref: '#/components/schemas/TrackStepIntroResult'
        - $ref: '#/components/schemas/TrackStepTaskResult'
        - $ref: '#/components/schemas/TrackStepMentorResult'
        - $ref: '#/components/schemas/TrackStepMessageResult'
        - $ref: '#/components/schemas/TrackStepDelayResult'
        - $ref: '#/components/schemas/TrackStepAddToTrackResult'
        - nullable: true
      description: >-
        Activity result for this step (survey answers, quiz results, etc.). Only
        populated when include_step_results=true.
    TrackStepSurveyResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_survey_result
          description: Object type identifier
          example: track_step_survey_result
        survey_id:
          type: string
          description: Survey ID
          example: 2XOADZ5X978jbJUbveb9
        survey_instance_id:
          type: string
          nullable: true
          description: Survey instance ID created for this enrollee
          example: 269Z8Xs5tIgUaJcOKCFM
        status:
          type: string
          enum:
            - responded
            - in_progress
            - not_responded
          description: >-
            Whether the enrollee has completed the survey, saved an unfinished
            response, or not responded
          example: responded
        responded_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-16T14:30:00.000Z'
          description: When the enrollee responded (ISO 8601)
        answers:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/TrackStepSurveyAnswer'
          description: The enrollee's answers (null if not responded)
      required:
        - object
        - survey_id
        - survey_instance_id
        - status
        - responded_at
        - answers
    TrackStepQuizResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_quiz_result
          description: Object type identifier
          example: track_step_quiz_result
        quiz_id:
          type: string
          description: Quiz ID
          example: tYYueINbgmmyss8O3LiD
        scheduled_activity_id:
          type: string
          nullable: true
          description: Scheduled activity ID for this quiz delivery
          example: wezg9bCHN8quR2m1c0AF
        status:
          type: string
          enum:
            - not_started
            - in_progress
            - completed
            - expired
          description: Status of the quiz attempt
          example: completed
        score:
          type: number
          nullable: true
          description: Score as a percentage (0-100)
          example: 85
        total_questions:
          type: integer
          description: Total number of questions
          example: 10
        correct_answers:
          type: integer
          description: Number of correct answers
          example: 8
        incorrect_answers:
          type: integer
          description: Number of incorrect answers
          example: 2
        completed_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-15T11:00:00.000Z'
          description: When the quiz was completed (ISO 8601)
        question_responses:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QuestionResponse'
          description: Per-question responses
      required:
        - object
        - quiz_id
        - scheduled_activity_id
        - status
        - score
        - total_questions
        - correct_answers
        - incorrect_answers
        - completed_at
        - question_responses
    TrackStepIntroResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_intro_result
          description: Object type identifier
          example: track_step_intro_result
        matches:
          type: array
          items:
            type: object
            properties:
              match_id:
                type: string
                description: Match ID
                example: YG9xvAARTy5dpxqFyKpA
              instance_id:
                type: string
                description: Introduction instance ID
                example: K2CC1FIYz0JGcnCsNbIa
              participants:
                type: array
                items:
                  $ref: '#/components/schemas/TrackStepIntroMatchParticipant'
                description: Match participants
              matched_at:
                type: string
                format: date-time
                example: '2026-01-15T10:00:00.000Z'
                description: When matched (ISO 8601)
              has_scheduled_event:
                type: boolean
                description: Whether a meeting was scheduled
                example: true
              has_said_met:
                type: boolean
                description: Whether participants confirmed they met
                example: false
            required:
              - match_id
              - instance_id
              - participants
              - matched_at
              - has_scheduled_event
              - has_said_met
          description: Introduction matches for this enrollee
      required:
        - object
        - matches
    TrackStepTaskResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_task_result
          description: Object type identifier
          example: track_step_task_result
        task_id:
          type: string
          nullable: true
          description: Task ID
          example: 84PRq3gmjhtb1Esw3chl
        tasks_completed:
          type: integer
          description: Number of tasks completed
          example: 3
        tasks_total:
          type: integer
          description: Total number of tasks
          example: 5
        tasks:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Task item ID
                example: rpvWmwkhIQn9IVV3cRZQ
              details:
                type: string
                description: Task item details in Markdown
                example: Review the employee handbook
              completed:
                type: boolean
                description: Whether the enrollee completed the task item
                example: true
              completed_at:
                type: string
                nullable: true
                format: date-time
                description: When the task item was completed (ISO 8601)
                example: '2026-01-15T10:00:00.000Z'
            required:
              - id
              - details
              - completed
              - completed_at
          description: Task items in their assigned order
      required:
        - object
        - task_id
        - tasks_completed
        - tasks_total
        - tasks
    TrackStepMentorResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_mentor_result
          description: Object type identifier
          example: track_step_mentor_result
        mentor_user_id:
          type: string
          nullable: true
          description: The assigned mentor's user ID
          example: 27U7XioXk7k08gxOD59X
        mentor_name:
          type: string
          nullable: true
          description: The assigned mentor's display name
          example: Alex Johnson
        mentor_email:
          type: string
          nullable: true
          description: The assigned mentor's email address
          example: alex.johnson@example.com
        assigned_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-15T10:00:00.000Z'
          description: When the mentor was assigned (ISO 8601)
        slack_channel_id:
          type: string
          nullable: true
          description: Slack channel ID for mentor-mentee communication
          example: C01234567
      required:
        - object
        - mentor_user_id
        - mentor_name
        - mentor_email
        - assigned_at
        - slack_channel_id
    TrackStepMessageResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_message_result
          description: Object type identifier
          example: track_step_message_result
        message_id:
          type: string
          nullable: true
          description: The message ID
          example: wBzCuhjnIjdzZJ1nJk2l
        delivered:
          type: boolean
          description: Whether the message was successfully delivered
          example: true
        deliveries:
          type: array
          items:
            $ref: '#/components/schemas/TrackStepMessageDelivery'
          description: Email-provider delivery status for each recipient
      required:
        - object
        - message_id
        - delivered
        - deliveries
    TrackStepDelayResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_delay_result
          description: Object type identifier
          example: track_step_delay_result
        delay_ends_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-01-17T10:00:00.000Z'
          description: When the delay period ends (ISO 8601)
      required:
        - object
        - delay_ends_at
    TrackStepAddToTrackResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_add_to_track_result
          description: Object type identifier
          example: track_step_add_to_track_result
        target_track_id:
          type: string
          nullable: true
          description: The ID of the target track
          example: nKPZftaDeauU7HLfNOKS
        created_instance_id:
          type: string
          nullable: true
          description: The ID of the track instance created in the target track
          example: HXVABZjrhBm3DVLSFf2S
        added_automatically:
          type: boolean
          nullable: true
          description: >-
            Whether the user was added automatically or after accepting an
            invitation
          example: true
      required:
        - object
        - target_track_id
        - created_instance_id
        - added_automatically
    TrackStepSurveyAnswer:
      type: object
      properties:
        question_id:
          type: string
          description: The question ID
          example: t06iKVkbhqv0tiDitrWL
        question_text:
          type: string
          description: The question text
          example: How satisfied are you with your onboarding?
        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
          example: 8
        comment:
          type: string
          nullable: true
          description: Optional comment on the answer
          example: Great experience!
      required:
        - question_id
        - question_text
        - question_type
        - value
        - comment
    QuestionResponse:
      oneOf:
        - $ref: '#/components/schemas/MultipleChoiceQuestionResponse'
        - $ref: '#/components/schemas/FreeTextQuestionResponse'
      discriminator:
        propertyName: type
        mapping:
          multiple_choice: '#/components/schemas/MultipleChoiceQuestionResponse'
          free_text: '#/components/schemas/FreeTextQuestionResponse'
    TrackStepIntroMatchParticipant:
      type: object
      properties:
        user_id:
          type: string
          description: User ID
          example: 06gPNJbvBuM2i8BKRXct
        display_name:
          type: string
          nullable: true
          description: Display name
          example: John Doe
        email:
          type: string
          nullable: true
          description: Email address
          example: john@example.com
      required:
        - user_id
        - display_name
        - email
    TrackStepMessageDelivery:
      type: object
      properties:
        status:
          type: string
          enum:
            - sent
            - deferred
            - unconfirmed
            - delivered
            - bounced
            - spam
            - blocked
          description: Latest email-provider delivery status
          example: delivered
        recipient_type:
          type: string
          enum:
            - to
            - cc
            - bcc
          description: How the recipient was addressed on the email
          example: to
        recipient_address:
          type: string
          format: email
          description: Email address used for this delivery
          example: sam@example.com
        status_at:
          type: string
          format: date-time
          description: When the latest delivery status was reported (ISO 8601)
          example: '2026-01-15T11:00:00.000Z'
      required:
        - status
        - recipient_type
        - recipient_address
        - status_at
    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
    MultipleChoiceQuestionResponse:
      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: t06iKVkbhqv0tiDitrWL
        is_correct:
          type: boolean
          nullable: true
          description: >-
            Whether the answer was correct. False while `grading.status` is
            pending.
          example: true
        grading:
          $ref: '#/components/schemas/QuestionResponseGrading'
        answered_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-02-01T14:22:00.000Z'
          description: When the question was answered (ISO 8601 format)
        type:
          type: string
          enum:
            - multiple_choice
        multiple_choice:
          $ref: '#/components/schemas/MultipleChoiceResponseDetails'
      required:
        - object
        - question_id
        - is_correct
        - grading
        - answered_at
        - type
        - multiple_choice
    FreeTextQuestionResponse:
      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: t06iKVkbhqv0tiDitrWL
        is_correct:
          type: boolean
          nullable: true
          description: >-
            Whether the answer was correct. False while `grading.status` is
            pending.
          example: true
        grading:
          $ref: '#/components/schemas/QuestionResponseGrading'
        answered_at:
          type: string
          nullable: true
          format: date-time
          example: '2026-02-01T14:22:00.000Z'
          description: When the question was answered (ISO 8601 format)
        type:
          type: string
          enum:
            - free_text
        free_text:
          $ref: '#/components/schemas/FreeTextResponseDetails'
      required:
        - object
        - question_id
        - is_correct
        - grading
        - answered_at
        - type
        - free_text
    QuestionResponseGrading:
      type: object
      properties:
        method:
          type: string
          enum:
            - automatic
            - ai
            - owner
          description: >-
            "automatic" for an option pick or an exact accepted-answer match;
            "ai" when a model judged a free-text answer; "owner" when a quiz
            admin set the score by hand.
          example: ai
        status:
          type: string
          enum:
            - completed
            - pending
          description: '"pending" while a free-text answer is waiting to be scored.'
          example: completed
        match:
          type: string
          nullable: true
          enum:
            - clear_match
            - likely_match
            - no_match
            - null
          description: >-
            How closely an AI-scored answer matched an accepted answer. Null
            unless `method` is "ai" and scoring is complete.
          example: likely_match
        matched_answer:
          type: string
          nullable: true
          description: >-
            The accepted answer an AI-scored answer was counted as. Null unless
            it matched.
          example: White
      required:
        - method
        - status
        - match
        - matched_answer
    MultipleChoiceResponseDetails:
      type: object
      properties:
        selected_options:
          type: array
          items:
            $ref: '#/components/schemas/SelectedOption'
          description: The options the participant picked.
      required:
        - selected_options
    FreeTextResponseDetails:
      type: object
      properties:
        text:
          type: string
          description: What the participant wrote.
          example: Password reset emails
      required:
        - text
    SelectedOption:
      type: object
      properties:
        id:
          type: string
          description: The option ID
          example: Q6C1hMzWQM4GkxCRP9Fn
        text:
          type: string
          nullable: true
          description: The option text. Null when the option no longer exists on the quiz.
          example: Paris
      required:
        - id
        - text
  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.