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

# Get an Ensemble Forecast Job's Progress or Completed Quantile Results



## OpenAPI

````yaml https://quantura.studio/api/openapi.json get /ensemble-forecasts/{forecast_id}
openapi: 3.1.0
info:
  title: Quantura Forecast Intelligence API
  version: 1.0.0
  description: >-
    Versioned access to Quantura forecasts, collaborator-aware workspaces,
    screeners, datasets, and provenance metadata.
  contact:
    name: Quantura
    url: https://quantura.studio/contact
  license:
    name: Quantura API Terms
    url: https://quantura.studio/terms
servers:
  - url: https://quantura.studio/api/v1
security:
  - bearerAuth: []
tags:
  - name: Access
    description: Identity, token scopes, plans, and effective workspace access.
  - name: Workspaces
    description: Resources are authorized against current membership on every request.
  - name: Uploaded CSVs
    description: Workspace-isolated CSV metadata, organization, and authorized exports.
  - name: Datasets
    description: Licensing-aware catalog and schema metadata.
  - name: Forecasts
    description: Prospective forecasts and immutable probability trajectories.
  - name: Ensemble Forecasts
    description: >-
      Asynchronous probabilistic time-series ensemble jobs and reproducible
      presets.
  - name: Backtests
    description: >-
      Asynchronous point-in-time ensemble-quantile simulations and versioned
      strategy exports; never live order execution.
paths:
  /ensemble-forecasts/{forecast_id}:
    get:
      tags:
        - Ensemble Forecasts
      summary: Get an Ensemble Forecast Job's Progress or Completed Quantile Results
      operationId: getEnsembleForecast
      parameters:
        - name: forecast_id
          in: path
          required: true
          description: Forecast id or unique slug.
          schema:
            type: string
      responses:
        '200':
          description: Queued/running progress or completed ensemble predictions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnsembleForecastEnvelope'
              example:
                data:
                  forecast_id: ens_01JEXAMPLE7M6N
                  status: completed
                  progress:
                    completed_models: 1
                    total_models: 1
                    current_model: null
                  status_url: /api/v1/ensemble-forecasts/ens_01JEXAMPLE7M6N
                  result_url: /api/v1/ensemble-forecasts/ens_01JEXAMPLE7M6N
                  quantiles:
                    - 0.1
                    - 0.5
                    - 0.9
                  predictions:
                    - timestamp: '2026-09-21T00:00:00Z'
                      quantiles:
                        '0.1': 98
                        '0.5': 100
                        '0.9': 102
                meta:
                  api_version: v1
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                      - request_id
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      request_id:
                        type: string
                        format: uuid
        '403':
          description: Scope, plan, or workspace authorization denied
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                      - request_id
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      request_id:
                        type: string
                        format: uuid
        '404':
          description: Forecast job not found.
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                      - request_id
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      request_id:
                        type: string
                        format: uuid
components:
  schemas:
    EnsembleForecastEnvelope:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: object
          required:
            - forecast_id
            - status
          properties:
            forecast_id:
              type: string
            status:
              type: string
              enum:
                - queued
                - running
                - completed
                - failed
            progress:
              type:
                - object
                - 'null'
            predictions:
              type: array
              items:
                $ref: '#/components/schemas/EnsemblePrediction'
            historical_validation:
              $ref: '#/components/schemas/HistoricalForecastValidation'
            effective_weights_by_quantile:
              type: object
            status_url:
              type: string
            result_url:
              type: string
        meta:
          type: object
          properties:
            api_version:
              const: v1
    EnsemblePrediction:
      type: object
      required:
        - timestamp
        - quantiles
      properties:
        timestamp:
          type: string
          format: date-time
        quantiles:
          type: object
          additionalProperties:
            type: number
          description: Canonical decimal quantile string to final ensemble value.
    HistoricalForecastValidation:
      type: object
      required:
        - policy
        - method
        - status
        - metrics
      description: >-
        Optional legacy historical-validation summary preserved on older
        results. New forecast requests and reproductions do not run a holdout or
        delay completion for metrics. These legacy scores describe a separate
        forecast, not the requested future predictions.
      properties:
        policy:
          const: chronological_holdout_v1
        method:
          const: chronological_holdout
        status:
          type: string
          enum:
            - completed
            - insufficient_history
            - no_matching_outcomes
            - failed
        training_rows:
          type: integer
          minimum: 2
        holdout_rows:
          type: integer
          minimum: 1
          maximum: 30
        training_end_at:
          type: string
          format: date-time
        validation_start_at:
          type: string
          format: date-time
        validation_end_at:
          type: string
          format: date-time
        requested_models:
          type: array
          items:
            type: string
        effective_weights_by_quantile:
          type: object
        metrics:
          type:
            - object
            - 'null'
          properties:
            count:
              type: integer
              minimum: 0
            point_count:
              type: integer
              minimum: 0
            mae:
              type:
                - number
                - 'null'
              minimum: 0
            rmse:
              type:
                - number
                - 'null'
              minimum: 0
            smape:
              type:
                - number
                - 'null'
              minimum: 0
              maximum: 2
              description: >-
                Ratio, not percent; the UI multiplies by 100. Zero/zero
                contributes zero.
            average_wql:
              type:
                - number
                - 'null'
              minimum: 0
              description: >-
                Mean twice-pinball loss divided by total absolute actual values;
                null for all-zero actuals.
      example:
        policy: chronological_holdout_v1
        method: chronological_holdout
        status: completed
        training_rows: 493
        holdout_rows: 7
        training_end_at: '2026-09-08T20:00:00Z'
        validation_start_at: '2026-09-09T20:00:00Z'
        validation_end_at: '2026-09-17T20:00:00Z'
        metrics:
          count: 7
          point_count: 7
          mae: 1.25
          rmse: 1.6
          smape: 0.012
          average_wql: 0.018
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Quantura API key

````

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