> ## 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 a track instance

> Retrieve a track instance by ID. Per-person instances include step progress and permitted results; broadcast instances include delivery progress.



## OpenAPI

````yaml /openapi.json get /v1/tracks/{trackId}/instances/{instanceId}
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/{trackId}/instances/{instanceId}:
    get:
      tags:
        - Tracks
      summary: Get a track instance
      description: >-
        Retrieve a track instance by ID. Per-person instances include step
        progress and permitted results; broadcast instances include delivery
        progress.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 128
            pattern: ^[A-Za-z0-9_-]+$
          required: true
          name: trackId
          in: path
        - schema:
            type: string
            minLength: 1
            maxLength: 128
            pattern: ^[A-Za-z0-9_:-]+$
            description: The unique identifier of the track instance
            example: inst_abc123
          required: true
          description: The unique identifier of the track instance
          name: instanceId
          in: path
      responses:
        '200':
          description: Track instance with step progress
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/TrackEnrollee'
                  - $ref: '#/components/schemas/GroupTrackRun'
        '400':
          description: Invalid path 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 or insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Track or enrollment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKey: []
components:
  schemas:
    TrackEnrollee:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_enrollee
          description: Object type identifier
          example: track_enrollee
        id:
          type: string
          description: Workflow instance ID
          example: inst_abc123
        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: user_abc123
        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: user_mgr456
        mentor_id:
          type: string
          nullable: true
          description: Assigned mentor's user ID
          example: user_mentor123
        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
          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.
          example: '2026-01-15T11:00:00.000Z'
        groups:
          type: array
          items:
            type: string
          description: 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_workflow)
              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
          description: When the enrollee started the track (ISO 8601)
          example: '2026-01-15T10:30:00.000Z'
        delivered_at:
          type: string
          nullable: true
          description: >-
            When all steps were delivered to the enrollee (ISO 8601). Null if
            not all steps have been delivered yet.
          example: '2026-01-20T10:00:00.000Z'
        completed_at:
          type: string
          nullable: true
          description: >-
            When the enrollee completed all user-completable steps in the track
            (ISO 8601). Null if not yet completed.
          example: null
        failed_at:
          type: string
          nullable: true
          description: When the enrollment failed (ISO 8601)
          example: null
        next_step_at:
          type: string
          nullable: true
          description: When the next step is scheduled to run (ISO 8601)
          example: '2026-01-20T09:00:00.000Z'
        added_by_user_id:
          type: string
          nullable: true
          description: User ID of who manually enrolled this user (if applicable)
          example: user_admin789
        added_by_workflow_id:
          type: string
          nullable: true
          description: If enrolled via an addToWorkflow step, the source workflow ID
          example: wf_source456
        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
        delivery_progress_percentage:
          type: number
          description: >-
            Delivery progress as a percentage (0-100). Calculated as
            steps_delivered / steps_total * 100.
          example: 80
        completion_progress_percentage:
          type: number
          description: >-
            Completion progress as a percentage (0-100). Calculated as
            steps_completed / steps_total * 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_id
        - mentor_name
        - mentor_email
        - mentor_assigned_at
        - groups
        - 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_workflow_id
        - timezone
        - steps_delivered
        - steps_completed
        - steps_total
        - delivery_progress_percentage
        - completion_progress_percentage
        - step_progress
    GroupTrackRun:
      type: object
      properties:
        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
        trigger_event_id:
          type: string
          nullable: true
        started_at:
          type: string
        finished_at:
          type: string
          nullable: true
        total_steps:
          type: integer
        delivered_step_count:
          type: integer
        failed_step_count:
          type: integer
        step_progress:
          type: array
          items:
            $ref: '#/components/schemas/TrackEnrolleeStepProgress'
      required:
        - 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
    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
    TrackTriggerType:
      type: string
      enum:
        - user_join
        - manual_user_trigger
        - manual_group_trigger
        - schedule
        - schedule_group
        - work_anniversary
        - added_by_another_workflow
        - self_join
        - cohort_started
        - cohort_member_added
    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: user_123
        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: img_abc123
        team_id:
          type: string
          nullable: true
          description: User's team ID
          example: team_123
        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: step_abc123
        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
          description: >-
            Clock time of day this step delivers (HH:mm, local to the enrollee's
            timezone). Null means the 09:00 default.
          example: '09:00'
        scheduled_at:
          type: string
          nullable: true
          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.
          example: '2026-01-16T14:00:00.000Z'
        status:
          allOf:
            - $ref: '#/components/schemas/TrackStepProgressStatus'
            - description: Current step progress status
              example: completed
        started_at:
          type: string
          nullable: true
          description: When the step started (ISO 8601)
          example: '2026-01-15T10:30:00.000Z'
        delivered_at:
          type: string
          nullable: true
          description: When the step was delivered to the user (ISO 8601)
          example: '2026-01-15T11:00:00.000Z'
        completed_at:
          type: string
          nullable: true
          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.
          example: '2026-01-16T14:30:00.000Z'
        failed_at:
          type: string
          nullable: true
          description: When the step failed (ISO 8601)
          example: null
        skipped_at:
          type: string
          nullable: true
          description: When the step was skipped (ISO 8601)
          example: null
        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
        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
    StepType:
      type: string
      enum:
        - message
        - email
        - quiz
        - poll
        - survey
        - individualIntroductions
        - mentorAssignment
        - addToWorkflow
        - tasks
        - webhook
      description: Type of step
      example: survey
    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/TrackStepAddToWorkflowResult'
        - 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: survey_abc123
        survey_instance_id:
          type: string
          nullable: true
          description: Survey instance ID created for this enrollee
          example: inst_xyz789
        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
          description: When the enrollee responded (ISO 8601)
          example: '2026-01-16T14:30:00.000Z'
        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: quiz_abc123
        scheduled_activity_id:
          type: string
          nullable: true
          description: Scheduled activity ID for this quiz delivery
          example: act_xyz789
        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
          description: When the quiz was completed (ISO 8601)
          example: '2026-01-15T11:00:00.000Z'
        question_responses:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/TrackStepQuizQuestionResponse'
          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: match_abc123
              instance_id:
                type: string
                description: Introduction instance ID
                example: inst_abc123
              participants:
                type: array
                items:
                  $ref: '#/components/schemas/TrackStepIntroMatchParticipant'
                description: Match participants
              matched_at:
                type: string
                description: When matched (ISO 8601)
                example: '2026-01-15T10:00:00.000Z'
              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: task_abc123
        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: task_item_abc123
              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: user_mentor123
        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
          description: When the mentor was assigned (ISO 8601)
          example: '2026-01-15T10:00:00.000Z'
        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: msg_abc123
        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
          description: When the delay period ends (ISO 8601)
          example: '2026-01-17T10:00:00.000Z'
      required:
        - object
        - delay_ends_at
    TrackStepAddToWorkflowResult:
      type: object
      properties:
        object:
          type: string
          enum:
            - track_step_add_to_workflow_result
          description: Object type identifier
          example: track_step_add_to_workflow_result
        target_workflow_id:
          type: string
          nullable: true
          description: The ID of the target workflow
          example: wf_target123
        created_instance_id:
          type: string
          nullable: true
          description: The ID of the workflow instance created in the target workflow
          example: inst_new789
        added_automatically:
          type: boolean
          nullable: true
          description: >-
            Whether the user was added automatically or after accepting an
            invitation
          example: true
      required:
        - object
        - target_workflow_id
        - created_instance_id
        - added_automatically
    TrackStepSurveyAnswer:
      type: object
      properties:
        question_id:
          type: string
          description: The question ID
          example: q_abc123
        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
    TrackStepQuizQuestionResponse:
      type: object
      properties:
        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 first submitted answer (kept for back-compat; see
            submitted_answers)
        submitted_answers:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              answer:
                type: string
                nullable: true
            required:
              - id
              - answer
          description: >-
            All answers the participant selected (multiple for multi-answer
            questions)
        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)
          example: '2026-01-15T11:00:00.000Z'
      required:
        - question_id
        - submitted_answer
        - is_correct
        - answered_at
    TrackStepIntroMatchParticipant:
      type: object
      properties:
        user_id:
          type: string
          description: User ID
          example: user_abc123
        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
            - 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
  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.