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

# Get simulation by ID

> Get a individual simulation run directly by its ID. This is generally part of a larger simulation run plan job.



## OpenAPI

````yaml /api-reference/openapi.documented.json get /v1/simulation/job/{jobId}
openapi: 3.1.0
info:
  title: Roark Analytics API
  description: >-
    The Roark Analytics API gives you access to the same API that powers the
    award winning Roark Analytics platform.
  version: 1.0.0
servers:
  - description: Production
    url: https://api.roark.ai
security:
  - Bearer: []
tags:
  - name: Agent
  - name: Agent Endpoint
  - name: Call
  - name: Chat
  - name: Metric
  - name: Metric Policy
  - name: Metric Collection Job
  - name: Customer Flow
  - name: Customer Flow Edge Case
  - name: Simulation
  - name: Simulation Persona
  - name: Simulation Environment
  - name: Simulation Scenario
  - name: Simulation Run Plan
  - name: Simulation Template
  - name: Simulation Run Plan Job
  - name: Simulation Job
  - name: HTTP Request Definition
  - name: Webhook
  - name: Issue
  - name: Knowledge Base
  - name: Config
  - name: CLI Auth
  - name: Call Analysis
  - name: Health
paths:
  /v1/simulation/job/{jobId}:
    get:
      tags:
        - Simulation Job
      summary: Get simulation by ID
      description: >-
        Get a individual simulation run directly by its ID. This is generally
        part of a larger simulation run plan job.
      operationId: getV1SimulationJobByJobId
      parameters:
        - in: path
          name: jobId
          schema:
            type: string
            format: uuid
          required: true
          example: 7f3e4d2c-8a91-4b5c-9e6f-1a2b3c4d5e6f
          description: Simulation job ID
      responses:
        '200':
          description: Successfully found simulation job
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/SimulationJobResponse'
                required:
                  - data
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Authentication error
              example:
                type: authentication
                code: unauthorized
                message: Authentication required
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Permission error
              example:
                type: forbidden
                code: permission_denied
                message: You do not have permission to access this resource
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Not found error
              example:
                type: not_found
                code: resource_not_found
                message: The requested resource could not be found
          description: Simulation job not found
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Rate limit error
              example:
                type: rate_limit
                code: too_many_requests
                message: Rate limit exceeded
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Server error
              example:
                type: internal
                code: internal_error
                message: Internal server error
          description: Internal Server Error
      x-codeSamples:
        - lang: JavaScript
          source: >-
            import Roark from '@roarkanalytics/sdk';


            const client = new Roark({
              bearerToken: process.env['ROARK_API_BEARER_TOKEN'], // This is the default and can be omitted
            });


            const response = await
            client.simulationJob.getByID('7f3e4d2c-8a91-4b5c-9e6f-1a2b3c4d5e6f');


            console.log(response.data);
        - lang: Python
          source: |-
            import os
            from roark_analytics import Roark

            client = Roark(
                bearer_token=os.environ.get("ROARK_API_BEARER_TOKEN"),  # This is the default and can be omitted
            )
            response = client.simulation_job.get_by_id(
                "7f3e4d2c-8a91-4b5c-9e6f-1a2b3c4d5e6f",
            )
            print(response.data)
components:
  schemas:
    SimulationJobResponse:
      type: object
      properties:
        simulationJobId:
          type: string
          format: uuid
          description: Simulation job ID
        status:
          type: string
          description: Job status
        processingStatus:
          type: string
          description: Processing status
        callId:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            ID of the call created for this simulation job. Null if the call has
            not been created yet.
        roarkPhoneNumber:
          type:
            - string
            - 'null'
          description: >-
            Phone number provisioned by Roark for this simulation job in E.164
            format. Null if the simulation job is queued and has not been
            assigned a phone number yet.
        runPlan:
          $ref: '#/components/schemas/SimulationRunPlanRef'
        enrichment:
          $ref: '#/components/schemas/SimulationJobEnrichment'
        invalidation:
          oneOf:
            - $ref: '#/components/schemas/SimulationJobInvalidation'
            - type: 'null'
          description: Null while the result counts. See SimulationJobInvalidation.
        persona:
          type: object
          properties:
            id:
              type: string
              format: uuid
              description: Unique identifier of the persona
            name:
              type: string
              description: The name the agent will identify as during conversations
            displayName:
              type:
                - string
                - 'null'
              description: >-
                Label shown in place of the name across the dashboard (e.g. a
                short descriptor like "Irate Escalator"). The persona still
                identifies as `name` on calls. Omit or set null to display the
                name itself.
            description:
              type:
                - string
                - 'null'
              description: Human-readable description of the persona
            language:
              type: string
              enum:
                - EN
                - ES
                - DE
                - HI
                - FR
                - NL
                - AR
                - EL
                - IT
                - ID
                - TH
                - JA
                - TL
                - MS
                - ZH
                - TR
                - PT
                - HE
              description: Primary language ISO 639-1 code for the persona
            secondaryLanguage:
              type:
                - string
                - 'null'
              enum:
                - EN
              description: >-
                Secondary language ISO 639-1 code for code-switching (e.g.,
                Hinglish, Spanglish)
            understoodLanguages:
              type: array
              items:
                type: string
                enum:
                  - EN
                  - ES
                  - DE
                  - HI
                  - FR
                  - NL
                  - AR
                  - EL
                  - IT
                  - ID
                  - TH
                  - JA
                  - TL
                  - MS
                  - ZH
                  - TR
                  - PT
                  - HE
              minItems: 1
              description: >-
                Languages the persona can understand. Multilingual combinations
                are limited by multilingual speech recognition support.
            accent:
              type: string
              enum:
                - US
                - US_X_SOUTH
                - GB
                - ES
                - DE
                - IN
                - FR
                - NL
                - SA
                - GR
                - AU
                - IT
                - ID
                - TH
                - JP
                - NZ
                - PH
                - SG
                - MY
                - HK
                - TR
                - PT
                - IL
              description: >-
                Accent of the persona, defined using ISO 3166-1 alpha-2 country
                codes with optional variants
            age:
              type: string
              enum:
                - CHILD
                - TEENAGER
                - ADULT
                - ELDERLY
              default: ADULT
              description: >-
                How old the caller sounds and behaves. Only ages the persona's
                accent has a voice for are accepted; defaults to ADULT, which
                every accent supports.
            gender:
              type: string
              enum:
                - MALE
                - FEMALE
              description: Gender of the persona
            backgroundNoise:
              type: string
              enum:
                - NONE
                - AIRPORT
                - CHILDREN_PLAYING
                - CITY
                - COFFEE_SHOP
                - DRIVING
                - OFFICE
                - THUNDERSTORM
              default: NONE
              description: Background noise setting
            speechPace:
              type: string
              enum:
                - SUPER_SLOW
                - SLOW
                - NORMAL
                - FAST
                - SUPER_FAST
              default: NORMAL
              description: Speech pace of the persona
            speechClarity:
              type: string
              enum:
                - CLEAR
                - VAGUE
                - RAMBLING
              default: CLEAR
              description: Speech clarity of the persona
            hasDisfluencies:
              type: boolean
              default: false
              description: Whether the persona uses filler words like "um" and "uh"
            baseEmotion:
              type: string
              enum:
                - NEUTRAL
                - CHEERFUL
                - CONFUSED
                - FRUSTRATED
                - SKEPTICAL
                - RUSHED
                - DISTRACTED
                - ANGRY
                - ANXIOUS
                - SAD
              default: NEUTRAL
              description: Base emotional state of the persona
            intentClarity:
              type: string
              enum:
                - CLEAR
                - INDIRECT
                - VAGUE
              default: CLEAR
              description: How clearly the persona expresses their intentions
            confirmationStyle:
              type: string
              enum:
                - EXPLICIT
                - VAGUE
              default: EXPLICIT
              description: How the persona confirms information
            memoryReliability:
              type: string
              enum:
                - HIGH
                - LOW
              default: HIGH
              description: How reliable the persona's memory is
            responseTiming:
              type: string
              enum:
                - RELAXED
                - NORMAL
                - QUICK
              default: NORMAL
              description: >-
                Controls how quickly the persona responds to pauses in
                conversation (QUICK, NORMAL, RELAXED)
            backstoryPrompt:
              type:
                - string
                - 'null'
              description: Background story and behavioral patterns for the persona
              example: A busy professional calling during lunch break
            idleMessages:
              type:
                - array
                - 'null'
              items:
                type: string
              description: >-
                Messages the persona will say when the agent goes silent during
                a call. null = "Automatic": language-appropriate defaults are
                used at call time.
            idleTimeoutSeconds:
              type: integer
              minimum: 5
              maximum: 60
              default: 10
              description: Seconds of silence before the persona sends an idle message
            idleMessageMaxSpokenCount:
              type: integer
              minimum: 1
              maximum: 10
              default: 3
              description: >-
                Maximum number of idle messages the persona will send before
                giving up
            idleMessageResetCountOnUserSpeechEnabled:
              type: boolean
              default: true
              description: Whether the idle message counter resets when the agent speaks
            properties:
              type: object
              additionalProperties: {}
              default: {}
              description: Additional custom properties about the persona
              example:
                age: 35
                zipCode: '94105'
                occupation: Software Engineer
            createdAt:
              type: string
              description: Creation timestamp
            updatedAt:
              type: string
              description: Last update timestamp
          required:
            - id
            - name
            - language
            - understoodLanguages
            - accent
            - age
            - gender
            - backgroundNoise
            - speechPace
            - speechClarity
            - hasDisfluencies
            - baseEmotion
            - intentClarity
            - confirmationStyle
            - memoryReliability
            - responseTiming
            - idleMessages
            - idleTimeoutSeconds
            - idleMessageMaxSpokenCount
            - idleMessageResetCountOnUserSpeechEnabled
            - properties
            - createdAt
            - updatedAt
        scenario:
          $ref: '#/components/schemas/ScenarioResponse'
        agentEndpoint:
          $ref: '#/components/schemas/AgentEndpointResponse'
        createdAt:
          type: string
          description: When the job was created
        startedAt:
          type:
            - string
            - 'null'
          description: When the job started
        completedAt:
          type:
            - string
            - 'null'
          description: When the job completed
      required:
        - simulationJobId
        - status
        - processingStatus
        - runPlan
        - enrichment
        - invalidation
        - persona
        - scenario
        - agentEndpoint
        - createdAt
      description: Simulation job with related entities
      example:
        simulationJobId: 7f3e4d2c-8a91-4b5c-9e6f-1a2b3c4d5e6f
        status: COMPLETED
        processingStatus: PROCESSED
        callId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        roarkPhoneNumber: '+15551234567'
        runPlan:
          id: b2c3d4e5-f6a7-8901-bcde-f12345678901
          name: Billing Flow Test
          variables:
            promptToUse: v1
            accountTier: premium
        enrichment:
          requested: true
          outcome: TIMED_OUT
          waitStartedAt: '2025-01-15T14:28:32.789Z'
          waitEndedAt: '2025-01-15T14:43:32.789Z'
          metricsScoredOnSimulationInstead: 4
          metricsNotCollected: 1
        invalidation: null
        persona:
          id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
          name: Sarah Johnson - Anxious Patient
          displayName: Anxious Patient
          language: EN
          secondaryLanguage: null
          understoodLanguages:
            - EN
          accent: US
          age: ADULT
          gender: FEMALE
          backgroundNoise: OFFICE
          speechPace: NORMAL
          speechClarity: CLEAR
          hasDisfluencies: false
          baseEmotion: FRUSTRATED
          intentClarity: CLEAR
          confirmationStyle: EXPLICIT
          memoryReliability: HIGH
          responseTiming: NORMAL
          backstoryPrompt: A busy professional calling during lunch break
          idleMessages: null
          idleTimeoutSeconds: 10
          idleMessageMaxSpokenCount: 3
          idleMessageResetCountOnUserSpeechEnabled: true
          properties:
            age: '35'
            zipCode: '94105'
          createdAt: '2025-01-10T12:00:00.000Z'
          updatedAt: '2025-01-10T12:00:00.000Z'
        scenario:
          id: f8e7d6c5-b4a3-9281-7069-5f4e3d2c1b0a
          description: >-
            Patient calling to schedule an urgent dental appointment due to
            severe tooth pain
        agentEndpoint:
          id: 3c2b1a09-8f7e-6d5c-4b3a-291807060504
          name: PHONE
          phoneNumber: '+15555551234'
          type: PHONE
        createdAt: '2025-01-15T14:23:45.123Z'
        startedAt: '2025-01-15T14:24:15.456Z'
        completedAt: '2025-01-15T14:28:32.789Z'
    ErrorResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - validation
            - authentication
            - forbidden
            - not_found
            - conflict
            - payment_required
            - rate_limit
            - internal
          description: The error type category
          examples:
            - validation
            - authentication
        code:
          type: string
          description: Machine-readable error code identifier
          examples:
            - invalid_parameter
            - missing_required_field
            - unauthorized
        message:
          type: string
          description: Human-readable error message
          examples:
            - The request was invalid
            - Authentication required
        param:
          type: string
          description: The parameter that caused the error (if applicable)
          examples:
            - email
            - user_id
        details:
          description: Additional error context information
      required:
        - type
        - code
        - message
    SimulationRunPlanRef:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Run plan ID
        name:
          type: string
          description: Run plan name
        variables:
          type: object
          additionalProperties:
            type: string
          description: >-
            Run-plan-level variables resolved for this job, keyed by variable
            name. Values are stringified by their declared type.
      required:
        - id
        - name
        - variables
    SimulationJobEnrichment:
      type: object
      properties:
        requested:
          type: boolean
          description: >-
            Whether the run plan asked for the customer's live conversation to
            be merged into this run.
        outcome:
          type: string
          enum:
            - NOT_REQUESTED
            - WAITING
            - MERGED
            - TIMED_OUT
            - SKIPPED
            - UNKNOWN
          description: >-
            How the wait for the live conversation resolved. `WAITING` means the
            run is holding open for it right now. `MERGED` means it arrived and
            live-sourced metrics were scored against it. `TIMED_OUT` and
            `SKIPPED` both mean it never arrived, so scoring fell back to the
            simulated side: read `metricsScoredOnSimulationInstead` and
            `metricsNotCollected` for what that cost. `UNKNOWN` is a run that
            finished before Roark started recording this.
        waitStartedAt:
          type:
            - string
            - 'null'
          description: >-
            When the run began holding open for the live conversation. Null if
            it never waited.
        waitEndedAt:
          type:
            - string
            - 'null'
          description: >-
            When the wait ended, however it ended. Null if it never waited or is
            still waiting.
        metricsScoredOnSimulationInstead:
          type:
            - integer
            - 'null'
          description: >-
            Metrics that asked for the live side and were scored against the
            simulated side because no live conversation arrived. Null on runs
            that predate this recording.
        metricsNotCollected:
          type:
            - integer
            - 'null'
          description: >-
            Metrics that only support the live side and so were not scored at
            all. Null on runs that predate this recording.
      required:
        - requested
        - outcome
      description: >-
        What happened to this run's live-conversation enrichment, and what
        scoring fell back to when none arrived.
    SimulationJobInvalidation:
      type: object
      properties:
        reason:
          type: string
          enum:
            - SCRIPT_DIVERGED
          description: >-
            Why the result does not count. `SCRIPT_DIVERGED`: a strict flow went
            off script at a step whose off-script policy is HANG_UP_INVALIDATE.
        detail:
          type:
            - string
            - 'null'
          description: >-
            One sentence: where the script was left and what your agent did
            instead.
        invalidatedAt:
          type: string
          description: When the run was invalidated.
      required:
        - reason
        - invalidatedAt
      description: >-
        Present when the run was invalidated: it keeps its transcript and
        recording, but nothing scored it and it is excluded from every run
        total.
    ScenarioResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Scenario ID
        description:
          type:
            - string
            - 'null'
          description: Scenario description
      required:
        - id
      description: Scenario used in a simulation
    AgentEndpointResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Agent endpoint ID
        name:
          type: string
          description: Agent endpoint name
        phoneNumber:
          type:
            - string
            - 'null'
          description: Agent endpoint phone number
        type:
          type: string
          enum:
            - PHONE
            - WEBSOCKET
            - LIVEKIT
            - SMALL_WEBRTC
            - ELEVENLABS_WS
            - KORE
            - GOOGLE_CES
            - DAILY
          description: Agent endpoint type
      required:
        - id
        - name
        - phoneNumber
        - type
      description: Agent endpoint used in a simulation
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````