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

# get_job_request

> Read back the request a document operation ran under. Cost class: fast.

What a finished run was *asked* for — the page selection, the schema, the
targets — so a caller can show the settings that produced a result, rebuild
the call that made it, or submit it again. ``Job.source`` names the document;
this names everything else.

Its own route rather than a field on ``Job``: an extract schema or a ground
target list is large, and ``GET /v1/jobs`` returns up to 200 rows.

Retention is the same as the result's — the request is read from the stored
payload, so it dies with it rather than outliving it.



## OpenAPI

````yaml /openapi.json get /v1/jobs/{job_id}/request
openapi: 3.1.0
info:
  description: >-
    Document intelligence: parse, split, classify, extract, and ground files, or
    build a searchable workspace. Authenticate with ``X-API-Key``.
  title: NDI Platform API
  version: 0.1.0
servers:
  - url: https://ndi-api.nace.ai
security: []
tags: []
paths:
  /v1/jobs/{job_id}/request:
    get:
      tags:
        - operations
      summary: get_job_request
      description: >-
        Read back the request a document operation ran under. Cost class: fast.


        What a finished run was *asked* for — the page selection, the schema,
        the

        targets — so a caller can show the settings that produced a result,
        rebuild

        the call that made it, or submit it again. ``Job.source`` names the
        document;

        this names everything else.


        Its own route rather than a field on ``Job``: an extract schema or a
        ground

        target list is large, and ``GET /v1/jobs`` returns up to 200 rows.


        Retention is the same as the result's — the request is read from the
        stored

        payload, so it dies with it rather than outliving it.
      operationId: get_job_request_v1_jobs__job_id__request_get
      parameters:
        - description: Job identifier.
          in: path
          name: job_id
          required: true
          schema:
            description: Job identifier.
            format: uuid
            title: Job Id
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    categorize:
                      $ref: '#/components/schemas/CategorizeRequestEcho'
                    classify:
                      $ref: '#/components/schemas/ClassifyRequestEcho'
                    extract:
                      $ref: '#/components/schemas/ExtractRequestEcho'
                    ground:
                      $ref: '#/components/schemas/GroundRequestEcho'
                    parse:
                      $ref: '#/components/schemas/ParseRequestEcho'
                    split:
                      $ref: '#/components/schemas/SplitRequestEcho'
                  propertyName: request_type
                oneOf:
                  - $ref: '#/components/schemas/ParseRequestEcho'
                  - $ref: '#/components/schemas/SplitRequestEcho'
                  - $ref: '#/components/schemas/ClassifyRequestEcho'
                  - $ref: '#/components/schemas/CategorizeRequestEcho'
                  - $ref: '#/components/schemas/ExtractRequestEcho'
                  - $ref: '#/components/schemas/GroundRequestEcho'
                title: Response Get Job Request V1 Jobs  Job Id  Request Get
          description: Successful Response
        '504':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Gateway Timeout
        default:
          content:
            application/json:
              example:
                error:
                  code: invalid_request
                  detail: null
                  message: >-
                    Request body has extra fields that this operation does not
                    accept.
                  request_id: req-01j9k2n3p4q5r6s7t8v9
                  retryable: false
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: >-
            Typed error envelope used by every 4xx and 5xx. ``error.code``
            distinguishes the failure; HTTP status is a consequence of the code.
      security:
        - APIKeyHeader: []
components:
  schemas:
    CategorizeRequestEcho:
      additionalProperties: false
      description: A stored ``categorize`` request, read back.
      properties:
        allow_unknown:
          default: true
          title: Allow Unknown
          type: boolean
        corpus_sources:
          description: >-
            Workspace files visible in the run tray, including files not
            submitted by this request.
          items:
            $ref: '#/components/schemas/WorkspaceFileSource'
          maxItems: 50
          title: Corpus Sources
          type: array
        domain_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Domain Id
        name:
          anyOf:
            - maxLength: 200
              type: string
            - type: 'null'
          description: >-
            Display name for this run. The console calls a named run a
            'project'.
          title: Name
        project_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: >-
            Caller-minted grouping id; jobs submitted together share it. Not a
            server-side resource.
          title: Project Id
        request_type:
          const: categorize
          default: categorize
          title: Request Type
          type: string
        source:
          anyOf:
            - discriminator:
                mapping:
                  parse_result:
                    $ref: '#/components/schemas/ParseResultSource'
                  upload:
                    $ref: '#/components/schemas/UploadSource'
                  url:
                    $ref: '#/components/schemas/UrlSource'
                  workspace_file:
                    $ref: '#/components/schemas/WorkspaceFileSource'
                propertyName: type
              oneOf:
                - $ref: '#/components/schemas/UploadSource'
                - $ref: '#/components/schemas/UrlSource'
                - $ref: '#/components/schemas/WorkspaceFileSource'
                - $ref: '#/components/schemas/ParseResultSource'
            - type: 'null'
          title: Source
        sources:
          anyOf:
            - items:
                discriminator:
                  mapping:
                    parse_result:
                      $ref: '#/components/schemas/ParseResultSource'
                    upload:
                      $ref: '#/components/schemas/UploadSource'
                    url:
                      $ref: '#/components/schemas/UrlSource'
                    workspace_file:
                      $ref: '#/components/schemas/WorkspaceFileSource'
                  propertyName: type
                oneOf:
                  - $ref: '#/components/schemas/UploadSource'
                  - $ref: '#/components/schemas/UrlSource'
                  - $ref: '#/components/schemas/WorkspaceFileSource'
                  - $ref: '#/components/schemas/ParseResultSource'
              maxItems: 50
              minItems: 1
              type: array
            - type: 'null'
          title: Sources
        taxonomy:
          anyOf:
            - $ref: '#/components/schemas/CategorizeTaxonomy'
            - type: 'null'
        vocabulary:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Vocabulary
      title: CategorizeRequestEcho
      type: object
    ClassifyRequestEcho:
      additionalProperties: false
      description: A stored ``classify`` request, read back.
      properties:
        classes:
          items:
            $ref: '#/components/schemas/ClassifyClass'
          minItems: 1
          title: Classes
          type: array
        corpus_sources:
          description: >-
            Workspace files visible in the run tray, including files not
            submitted by this request.
          items:
            $ref: '#/components/schemas/WorkspaceFileSource'
          maxItems: 50
          title: Corpus Sources
          type: array
        granularity:
          default: document
          enum:
            - document
            - page
          title: Granularity
          type: string
        name:
          anyOf:
            - maxLength: 200
              type: string
            - type: 'null'
          description: >-
            Display name for this run. The console calls a named run a
            'project'.
          title: Name
        output:
          $ref: '#/components/schemas/ClassifyOutputOptions'
        page_ranges:
          anyOf:
            - items:
                $ref: '#/components/schemas/PageRange'
              maxItems: 200
              minItems: 1
              type: array
            - type: 'null'
          title: Page Ranges
        project_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: >-
            Caller-minted grouping id; jobs submitted together share it. Not a
            server-side resource.
          title: Project Id
        request_type:
          const: classify
          default: classify
          title: Request Type
          type: string
        source:
          discriminator:
            mapping:
              parse_result:
                $ref: '#/components/schemas/ParseResultSource'
              upload:
                $ref: '#/components/schemas/UploadSource'
              url:
                $ref: '#/components/schemas/UrlSource'
              workspace_file:
                $ref: '#/components/schemas/WorkspaceFileSource'
            propertyName: type
          oneOf:
            - $ref: '#/components/schemas/UploadSource'
            - $ref: '#/components/schemas/UrlSource'
            - $ref: '#/components/schemas/WorkspaceFileSource'
            - $ref: '#/components/schemas/ParseResultSource'
          title: Source
        unknown_policy:
          default: allow
          enum:
            - allow
            - force_best
          title: Unknown Policy
          type: string
      required:
        - source
        - classes
      title: ClassifyRequestEcho
      type: object
    ExtractRequestEcho:
      additionalProperties: true
      type: object
    GroundRequestEcho:
      additionalProperties: false
      description: A stored ``ground`` request, read back.
      properties:
        claims:
          anyOf:
            - items:
                $ref: '#/components/schemas/Claim'
              maxItems: 30
              minItems: 1
              type: array
            - type: 'null'
          title: Claims
        corpus_sources:
          description: >-
            Workspace files visible in the run tray, including files not
            submitted by this request.
          items:
            $ref: '#/components/schemas/WorkspaceFileSource'
          maxItems: 50
          title: Corpus Sources
          type: array
        name:
          anyOf:
            - maxLength: 200
              type: string
            - type: 'null'
          description: >-
            Display name for this run. The console calls a named run a
            'project'.
          title: Name
        options:
          $ref: '#/components/schemas/GroundOptions-Output'
        project_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: >-
            Caller-minted grouping id; jobs submitted together share it. Not a
            server-side resource.
          title: Project Id
        request_type:
          const: ground
          default: ground
          title: Request Type
          type: string
        source:
          discriminator:
            mapping:
              parse_result:
                $ref: '#/components/schemas/ParseResultSource'
              upload:
                $ref: '#/components/schemas/UploadSource'
              url:
                $ref: '#/components/schemas/UrlSource'
              workspace_file:
                $ref: '#/components/schemas/WorkspaceFileSource'
            propertyName: type
          oneOf:
            - $ref: '#/components/schemas/UploadSource'
            - $ref: '#/components/schemas/UrlSource'
            - $ref: '#/components/schemas/WorkspaceFileSource'
            - $ref: '#/components/schemas/ParseResultSource'
          title: Source
        targets:
          anyOf:
            - items:
                $ref: '#/components/schemas/GroundTarget'
              maxItems: 30
              minItems: 1
              type: array
            - type: 'null'
          title: Targets
      required:
        - source
      title: GroundRequestEcho
      type: object
    ParseRequestEcho:
      additionalProperties: true
      type: object
    SplitRequestEcho:
      additionalProperties: false
      description: A stored ``split`` request, read back.
      properties:
        classes:
          description: >-
            Document classes to split the packet into; spreadsheets classify
            worksheets against these classes.
          items:
            $ref: '#/components/schemas/SplitCategory'
          minItems: 1
          title: Classes
          type: array
        corpus_sources:
          description: >-
            Workspace files visible in the run tray, including files not
            submitted by this request.
          items:
            $ref: '#/components/schemas/WorkspaceFileSource'
          maxItems: 50
          title: Corpus Sources
          type: array
        name:
          anyOf:
            - maxLength: 200
              type: string
            - type: 'null'
          description: >-
            Display name for this run. The console calls a named run a
            'project'.
          title: Name
        output:
          $ref: '#/components/schemas/SplitOutputOptions'
        overlap_policy:
          default: exclusive
          enum:
            - exclusive
            - shared_boundary_page
          title: Overlap Policy
          type: string
        page_ranges:
          anyOf:
            - items:
                $ref: '#/components/schemas/PageRange'
              maxItems: 200
              type: array
            - type: 'null'
          title: Page Ranges
        project_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: >-
            Caller-minted grouping id; jobs submitted together share it. Not a
            server-side resource.
          title: Project Id
        quality:
          default: auto
          enum:
            - auto
            - fast
            - accurate
          title: Quality
          type: string
        request_type:
          const: split
          default: split
          title: Request Type
          type: string
        source:
          discriminator:
            mapping:
              parse_result:
                $ref: '#/components/schemas/ParseResultSource'
              upload:
                $ref: '#/components/schemas/UploadSource'
              url:
                $ref: '#/components/schemas/UrlSource'
              workspace_file:
                $ref: '#/components/schemas/WorkspaceFileSource'
            propertyName: type
          oneOf:
            - $ref: '#/components/schemas/UploadSource'
            - $ref: '#/components/schemas/UrlSource'
            - $ref: '#/components/schemas/WorkspaceFileSource'
            - $ref: '#/components/schemas/ParseResultSource'
          title: Source
        split_rules:
          anyOf:
            - type: string
            - type: 'null'
          title: Split Rules
        unknown_policy:
          default: include
          enum:
            - include
            - force
            - error
          title: Unknown Policy
          type: string
      required:
        - source
        - classes
      title: SplitRequestEcho
      type: object
    ErrorEnvelope:
      description: Every non-2xx body on ``/v1``.
      example:
        error:
          code: invalid_request
          detail: null
          message: Request body has extra fields that this operation does not accept.
          request_id: req-01j9k2n3p4q5r6s7t8v9
          retryable: false
      properties:
        error:
          $ref: '#/components/schemas/Error'
      required:
        - error
      title: ErrorEnvelope
      type: object
    WorkspaceFileSource:
      additionalProperties: false
      description: >-
        A file already in a workspace.


        The single seam between the two contexts: a granular operation may read
        a

        workspace file and still write nothing back. The file need **not** be

        ingested — granular operations read source bytes, not representations.
      properties:
        file_id:
          format: uuid
          title: File Id
          type: string
        type:
          const: workspace_file
          default: workspace_file
          title: Type
          type: string
        workspace_id:
          format: uuid
          title: Workspace Id
          type: string
      required:
        - workspace_id
        - file_id
      title: WorkspaceFileSource
      type: object
    ParseResultSource:
      additionalProperties: false
      description: >-
        A prior Parse job whose parsed artifact can be reused by downstream
        methods.
      properties:
        job_id:
          format: uuid
          title: Job Id
          type: string
        type:
          const: parse_result
          default: parse_result
          title: Type
          type: string
      required:
        - job_id
      title: ParseResultSource
      type: object
    UploadSource:
      additionalProperties: false
      description: Bytes staged through ``POST /v1/uploads``. Single-use, TTL-bound.
      properties:
        type:
          const: upload
          default: upload
          title: Type
          type: string
        upload_id:
          format: uuid
          title: Upload Id
          type: string
      required:
        - upload_id
      title: UploadSource
      type: object
    UrlSource:
      additionalProperties: false
      description: A public or presigned HTTPS location we fetch server-side.
      properties:
        file_name:
          maxLength: 512
          title: File Name
          type: string
        type:
          const: url
          default: url
          title: Type
          type: string
        url:
          maxLength: 2048
          pattern: ^https://
          title: Url
          type: string
      required:
        - url
        - file_name
      title: UrlSource
      type: object
    CategorizeTaxonomy:
      additionalProperties: false
      properties:
        allow_freeform:
          default: false
          title: Allow Freeform
          type: boolean
        categories:
          items:
            $ref: '#/components/schemas/CategorizeTaxonomyCategory'
          minItems: 1
          title: Categories
          type: array
      required:
        - categories
      title: CategorizeTaxonomy
      type: object
    ClassifyClass:
      additionalProperties: false
      properties:
        criteria:
          items:
            type: string
          title: Criteria
          type: array
        description:
          default: ''
          title: Description
          type: string
        id:
          title: Id
          type: string
        label:
          title: Label
          type: string
        subclasses:
          items:
            $ref: '#/components/schemas/ClassifySubclass'
          title: Subclasses
          type: array
      required:
        - id
        - label
      title: ClassifyClass
      type: object
    ClassifyOutputOptions:
      additionalProperties: false
      properties:
        include_reason:
          default: true
          title: Include Reason
          type: boolean
        max_alternatives:
          default: 3
          maximum: 10
          minimum: 1
          title: Max Alternatives
          type: integer
      title: ClassifyOutputOptions
      type: object
    PageRange:
      additionalProperties: false
      description: One-based inclusive page range shared by document operations.
      properties:
        end:
          minimum: 1
          title: End
          type: integer
        start:
          minimum: 1
          title: Start
          type: integer
      required:
        - start
        - end
      title: PageRange
      type: object
    Claim:
      additionalProperties: false
      description: |-
        Legacy input shape for locating text in a document.

        ``hint`` is an optional free-text description of where in the document
        the text is expected to appear; it helps the retrieval step focus.
      properties:
        claim_id:
          title: Claim Id
          type: string
        hint:
          anyOf:
            - type: string
            - type: 'null'
          title: Hint
        text:
          title: Text
          type: string
      required:
        - claim_id
        - text
      title: Claim
      type: object
    GroundOptions-Output:
      additionalProperties: false
      properties:
        include_previews:
          default: false
          title: Include Previews
          type: boolean
        max_matches:
          default: 10
          maximum: 50
          minimum: 1
          title: Max Matches
          type: integer
        minimum_semantic_score:
          anyOf:
            - maximum: 1
              minimum: 0
              type: number
            - type: 'null'
          title: Minimum Semantic Score
        require_visual_region:
          default: false
          title: Require Visual Region
          type: boolean
        use_word_level_grounding:
          default: false
          description: >-
            Experimental. Match targets against word-level OCR bboxes. PDF
            sources only. Targets shorter than 2 normalized characters return
            status failed with error needle_too_short.
          title: Use Word Level Grounding
          type: boolean
      title: GroundOptions
      type: object
    GroundTarget:
      additionalProperties: false
      description: >-
        One piece of text to locate in the source document.


        ``hint`` is nearby free-text context. ``page_hints`` carries 1-based
        pages

        to prioritize during visual/document search. ``sheet`` names the

        spreadsheet tab to search when the source is a workbook — the same name

        search and tool citations publish as ``component`` — so a 30-sheet

        workbook is not searched whole. Ignored for non-spreadsheet sources.
      properties:
        hint:
          anyOf:
            - type: string
            - type: 'null'
          title: Hint
        id:
          title: Id
          type: string
        page_hints:
          anyOf:
            - items:
                minimum: 1
                type: integer
              type: array
            - type: 'null'
          title: Page Hints
        sheet:
          anyOf:
            - type: string
            - type: 'null'
          title: Sheet
        text:
          title: Text
          type: string
      required:
        - id
        - text
      title: GroundTarget
      type: object
    SplitCategory:
      additionalProperties: false
      properties:
        description:
          default: ''
          title: Description
          type: string
        id:
          title: Id
          type: string
        instance_key:
          anyOf:
            - $ref: '#/components/schemas/SplitInstanceKey'
            - type: 'null'
        label:
          title: Label
          type: string
        subclasses:
          items:
            $ref: '#/components/schemas/SplitSubclass'
          title: Subclasses
          type: array
      required:
        - id
        - label
      title: SplitCategory
      type: object
    SplitOutputOptions:
      additionalProperties: false
      properties:
        include_content:
          default: false
          title: Include Content
          type: boolean
        materialize_files:
          default: false
          title: Materialize Files
          type: boolean
      title: SplitOutputOptions
      type: object
    Error:
      description: The error object, per spec 12 §1.8.
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        detail:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          description: Structured payload, when the code carries one.
          title: Detail
        message:
          description: Human- and model-readable; says what to do differently.
          title: Message
          type: string
        request_id:
          description: Per-request correlation id; matches the ``X-Request-Id`` header.
          title: Request Id
          type: string
        retryable:
          description: Whether retrying the identical request could succeed.
          title: Retryable
          type: boolean
      required:
        - code
        - message
        - retryable
        - request_id
      title: Error
      type: object
    CategorizeTaxonomyCategory:
      additionalProperties: false
      properties:
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        key:
          title: Key
          type: string
        subcategories:
          items:
            $ref: '#/components/schemas/CategorizeTaxonomySubcategory'
          minItems: 1
          title: Subcategories
          type: array
      required:
        - key
        - subcategories
      title: CategorizeTaxonomyCategory
      type: object
    ClassifySubclass:
      additionalProperties: false
      properties:
        criteria:
          items:
            type: string
          title: Criteria
          type: array
        description:
          default: ''
          title: Description
          type: string
        id:
          title: Id
          type: string
        label:
          title: Label
          type: string
      required:
        - id
        - label
      title: ClassifySubclass
      type: object
    SplitInstanceKey:
      additionalProperties: false
      properties:
        description:
          title: Description
          type: string
        name:
          title: Name
          type: string
        required:
          default: false
          title: Required
          type: boolean
      required:
        - name
        - description
      title: SplitInstanceKey
      type: object
    SplitSubclass:
      additionalProperties: false
      properties:
        description:
          default: ''
          title: Description
          type: string
        id:
          title: Id
          type: string
        label:
          title: Label
          type: string
      required:
        - id
        - label
      title: SplitSubclass
      type: object
    ErrorCode:
      description: |-
        Every error the ``/v1`` surface can return.

        Clients must treat this as an **open** enum: a new member is an additive
        change (spec 12 §9), and a client that crashes on an unknown code makes
        every future error a breaking change.
      enum:
        - invalid_request
        - unsupported_file_type
        - file_too_large
        - invalid_schema
        - invalid_sql
        - invalid_path_prefix
        - command_not_permitted
        - batch_too_large
        - domain_validation_failed
        - default_label_required
        - wait_required_for_zero_retention
        - workspace_not_found
        - file_not_found
        - job_not_found
        - upload_not_found
        - node_not_found
        - schema_not_found
        - domain_not_found
        - session_not_found
        - access_label_not_found
        - path_conflict
        - schema_version_conflict
        - access_label_name_taken
        - workspace_name_taken
        - access_label_in_use
        - upload_expired
        - file_not_ingested
        - workspace_deleting
        - workspace_not_deletable
        - ingestion_in_progress
        - job_not_cancellable
        - confirmation_required
        - domain_not_published
        - domain_in_use
        - reserved_domain_slug
        - kg_not_built
        - kg_build_in_progress
        - session_busy
        - range_not_satisfiable
        - result_expired
        - access_denied
        - access_backstop_violation
        - access_mode_not_implemented
        - rate_limited
        - concurrency_limit_reached
        - quota_exceeded
        - corrupt_file
        - zero_byte_file
        - encrypted_file
        - parse_failed
        - ocr_failed
        - conversion_failed
        - sheetless_workbook
        - unplayable_media
        - unclassified_pages
        - job_cancelled
        - job_timeout
        - upstream_unavailable
        - internal_error
        - unauthorized
        - not_implemented
      title: ErrorCode
      type: string
    CategorizeTaxonomySubcategory:
      additionalProperties: false
      properties:
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        key:
          title: Key
          type: string
      required:
        - key
      title: CategorizeTaxonomySubcategory
      type: object
  securitySchemes:
    APIKeyHeader:
      in: header
      name: X-API-Key
      type: apiKey

````