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

# Get a job's last run

> Fetch the state, configuration, and result of a job's most recent run.



## OpenAPI

````yaml /api-reference/5.9/fusion-api-job-launcher.json get /job-launcher/launcher/status/{id}
openapi: 3.0.3
info:
  title: Job Launcher Service API
  description: Launch and control Spark jobs.
  contact:
    name: Lucidworks
    url: www.lucidworks.com
    email: support@lucidworks.com
  license:
    name: License of the API
    url: https://lucidworks.com/legal/developer-license-agreement/
  version: '5.9'
servers:
  - url: https://{FUSION_HOST}
    description: Fusion
    variables:
      FUSION_HOST:
        default: FUSION_HOST
        description: Your environment host.
security: []
tags:
  - name: Job Management
    description: >-
      APIs to list, retrieve, and manage Spark jobs, including job history and
      metadata
  - name: Job Launching
    description: APIs to launch Spark jobs with specified configurations and parameters
  - name: Job Logs
    description: APIs to retrieve log output and diagnostic information from launched jobs
  - name: Job Status and Progress
    description: >-
      APIs to check the current state, progress, and result of running or
      completed jobs
  - name: Job Configuration
    description: >-
      APIs to define, modify, or retrieve job configurations and runtime
      parameters
externalDocs:
  description: Lucidworks Documentation
  url: https://doc.lucidworks.com/
paths:
  /job-launcher/launcher/status/{id}:
    get:
      tags:
        - Job Status and Progress
      summary: Get a job's last run
      description: Fetch the state, configuration, and result of a job's most recent run.
      operationId: getJobStatus
      parameters:
        - name: id
          description: The name of the job.
          example: api-test-app_click_signals_aggregation
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SparkJobStatus'
components:
  schemas:
    SparkJobStatus:
      type: object
      properties:
        state:
          type: string
          enum:
            - unknown
            - idle
            - starting
            - running
            - finishing
            - cancelling
            - finished
            - cancelled
            - error
            - skipped
          example: finished
        jobId:
          type: string
          description: >-
            The job run ID. This is distinct from `id` which is the name of the
            job configuration.
          example: hhzitrwancwv
        jobConfig:
          $ref: '#/components/schemas/SparkJobConfig'
        hostname:
          type: string
          example: driver-api-test-app-click-signal-sjnamxwxsyhq
        result:
          $ref: '#/components/schemas/SparkJobResult'
        startTime:
          type: string
          example: '2025-10-16T19:49:15.106Z'
        endTime:
          type: string
          example: '2025-10-16T19:49:42.276Z'
        duration:
          type: integer
          format: int64
          example: 27170
    SparkJobConfig:
      type: object
      properties:
        id:
          type: string
          description: >-
            The name of the job configuration. This is distinct from the job run
            ID (found in job status responses), which identifies a specific job
            run.
          example: api-test-app_click_signals_aggregation
        sparkConfig:
          type: array
          description: >-
            The configuration for this Spark job. The available keys depend on
            the job type. You can use the `/spark/schema` endpoint to fetch the
            configuration schemas for all Spark job types.
          items:
            $ref: '#/components/schemas/KeyValue'
        type:
          type: string
          enum:
            - aggregation
            - als_recommender
            - argo-classification
            - argo-data-augmentation
            - argo-delete-model
            - argo-delete-ray-model
            - argo-deploy-model
            - argo-deploy-ray-model
            - argo-item-recommender-content
            - argo-item-recommender-user
            - argo-milvus-create-collections
            - argo-milvus-create-indexes
            - argo-milvus-delete-collections
            - argo-milvus-delete-indexes
            - argo-qna-coldstart
            - argo-qna-evaluate
            - argo-qna-supervised
            - argo-upload-model
            - build-training
            - cluster_labeling
            - custom_python_job
            - custom_spark_scala_job
            - doc_clustering
            - experiment_sql
            - ground_truth
            - headTailAnalysis
            - logistic_regression_classifier_trainer
            - outlier_detection
            - parallel-bulk-loader
            - query_similarity
            - random_forests_classifier
            - ranking_metrics
            - script
            - similar_queries
            - sip
            - sql_template
            - synonymDetection
            - tokenPhraseSpellCorrection
            - transfer
            - trending-recommender
            - word2vec
          description: The Spark job type.
      discriminator:
        propertyName: type
      example:
        type: aggregation
        id: api-test-app_click_signals_aggregation
        inputCollection: api-test-app_signals
        sourceCatchup: true
        sourceRemove: false
        sql: >-
          WITH sigs_with_filters AS ( SELECT c.query as query, c.doc_id,
          q.filters_s as filters, c.type, c.ref_time, coalesce(c.count_i,1) as
          count_i, c.timestamp_tdt, greatest(coalesce(c.weight_d,0.1),0.0) as
          weight_d FROM api-test-app_signals c LEFT JOIN (SELECT id, filters_s
          FROM api-test-app_signals WHERE type='response') q ON q.id =
          c.fusion_query_id WHERE c.type IN ('click','cart','purchase') AND
          c.timestamp_tdt >= c.catchup_timestamp_tdt ), signal_type_groups AS (
          SELECT SUM(count_i) AS typed_aggr_count_i, query, doc_id, type,
          filters, time_decay(count_i, timestamp_tdt, "30 days", ref_time,
          weight_d) AS typed_weight_d FROM sigs_with_filters GROUP BY doc_id,
          query, filters, type ) SELECT concat_ws('|', query, doc_id, filters)
          as id, SUM(typed_aggr_count_i) AS aggr_count_i, query AS query_s,
          query AS query_t, doc_id AS doc_id_s, filters AS filters_s,
          SPLIT(filters, ' \\$ ') AS filters_ss, weighted_sum(typed_weight_d,
          type, 'click:1.0,cart:10.0,purchase:25.0') AS weight_d FROM
          signal_type_groups GROUP BY query, doc_id, filters
        rollupSql: |-
          SELECT concat_ws('|', query_s, doc_id_s, filters_s) as id,
            query_s,
            query_s as query_t,
            doc_id_s,
            filters_s,
            first(aggr_type_s) AS aggr_type_s,
            SPLIT(filters_s, ' \\$ ') AS filters_ss,
            SUM(weight_d) AS weight_d,
            SUM(aggr_count_i) AS aggr_count_i
            FROM api-test-app_signals_aggr
            GROUP BY query_s, doc_id_s, filters_s
        referenceTime: '2025-10-17T18:56:14.660Z'
        skipCheckEnabled: true
        readOptions:
          - key: splits_per_shard
            value: '4'
        skipJobIfSignalsEmpty: true
        parameters:
          - key: signalTypeWeights
            value: click:1.0,cart:10.0,purchase:25.0
          - key: signalTypes
            value: _regex/signalTypeWeights/([\w\-\.]*):([\d\.\-]*)(,|$)/'$1'$3/g
        selectQuery: '*:*'
        outputCollection: api-test-app_signals_aggr
        useNaturalKey: true
        optimizeSegments: 0
        dataFormat: solr
        sparkSQL: SELECT * from spark_input
        sparkPartitions: 200
    SparkJobResult:
      type: object
      properties:
        jobConfigId:
          type: string
        jobRunId:
          type: string
        exception:
          type: object
          additionalProperties:
            type: object
      example:
        jobConfigId: api-test-app_click_signals_aggregation
        jobRunId: sjnamxwxsyhq
        aggrClass: SQL
        query: >-
          WITH sigs_with_filters AS (SELECT c.query as query, c.doc_id,
          q.filters_s as filters, c.type, c.ref_time, coalesce(c.count_i,1) as
          count_i, c.timestamp_tdt, greatest(coalesce(c.weight_d,0.1),0.0) as
          weight_d FROM api_test_app_signals c LEFT JOIN (SELECT id, filters_s
          FROM api_test_app_signals WHERE type='response') q ON q.id =
          c.fusion_query_id WHERE c.type IN ('click','cart','purchase') AND
          c.timestamp_tdt >= c.catchup_timestamp_tdt ), signal_type_groups AS
          (SELECT SUM(count_i) AS typed_aggr_count_i, query, doc_id, type,
          filters, time_decay(count_i, timestamp_tdt, "30 days", ref_time,
          weight_d) AS typed_weight_d FROM sigs_with_filters GROUP BY doc_id,
          query, filters, type) SELECT concat_ws('|', query, doc_id, filters) as
          id, SUM(typed_aggr_count_i) AS aggr_count_i, query AS query_s, query
          AS query_t, doc_id AS doc_id_s, filters AS filters_s, SPLIT(filters, '
          \\$ ') AS filters_ss, weighted_sum(typed_weight_d, type,
          'click:1.0,cart:10.0,purchase:25.0') AS weight_d FROM
          signal_type_groups GROUP BY query, doc_id, filters
        state: finished
        aggregated: 0
        applicationId: spark-0424dda9215441c0b232210af1d7cb67
        podId: driver-api-test-app-click-signal-sjnamxwxsyhq
        aggr_type_s: click@doc_id,filters,query
    KeyValue:
      type: object
      properties:
        key:
          type: string
        value:
          type: string

````