---
title: "Retrieve Parse"
method: GET
path: "/job/{job_id}"
---

# Retrieve Parse

`GET /job/{job_id}`

## Request

- Base URL: `https://platform.reducto.ai`
- URL: `https://platform.reducto.ai/job/{job_id}`
- Auth: HTTP bearer

## Path parameters

- `job_id` string, required

## Response `200`

Successful Response

- union
  - AsyncJobResponse
    - `status` 'Pending' | 'Completed' | 'Failed' | 'Idle', required
    - `result` union
      - ParseResponse
        - `response_type` 'parse'
        - `job_id` string, required
        - `duration` number, required: The duration of the parse request in seconds.
        - `pdf_url` string, nullable: The storage URL of the converted PDF file.
        - `studio_link` string, nullable: The link to the studio pipeline for the document.
        - `usage` ParseUsage, required
          - `num_pages` integer, required
          - `credits` number, nullable
          - `credit_breakdown` object, nullable
          - `page_billing_breakdown` object, nullable: Per-page breakdown of features used. Maps 1-indexed page numbers (as strings) to the list of billing features applied on that page (e.g. 'page', 'complex', 'chart_agent').
          - `non_empty_cell_count` integer, nullable: Total non-empty cells across all sheets. Only set for spreadsheet inputs.
          - `usage_breakdown` union: Raw usage quantities. Only set for accounts on the new pricing model; credit fields are omitted for those accounts.
            - ParseUsageBreakdown: Raw parse quantities for accounts on the new (Q3 2026) pricing model. ``parse_model`` is "R-1" for the new parse model, "R-1 Mini" for a job that bills as R1 Mini (its pages are in ``parse_pages``), and "Legacy" for the legacy parse pipeline. A legacy-pipeline parse carries its cost in ``legacy_parse_credits``; add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) apply to the new parse model only.
              - …
            - SplitUsageBreakdown: Raw split quantities for accounts on the new pricing model. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the split job; its page cost is covered by ``split_pages`` but its add-ons are billed separately.
              - …
            - EditUsageBreakdown: Raw edit quantities for accounts on the new pricing model. ``edit_pages`` is the page count billed at the ``edit_model`` rate. A job with both normal and prefilled pages reports ``edit_model="Normal"`` with the prefilled pages in ``prefill_pages``, billed at the "Prefill" rate.
              - …
        - `result` union, required: The response from the document processing service. Note that there can be two types of responses, Full Result and URL Result. This is due to limitations on the max return size on HTTPS. If the response is too large, it will be returned as a presigned URL in the URL response. You should handle this in your application.
          - FullResult
            - `type` 'full', required: type = 'full'
            - `chunks` ParseChunk[], required
              - …
            - `ocr` OCRResult
              - …
            - `custom` unknown
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
        - `document_properties` DocumentProperties: Embedded properties read from the customer's original document.
          - `title` string, nullable: The document title.
          - `author` string, nullable: The document author.
          - `subject` string, nullable: The document subject.
          - `keywords` string, nullable: Keywords embedded in the document.
          - `creator` string, nullable: The application or tool that authored the document.
          - `producer` string, nullable: The application or library that produced the document.
          - `last_modified_by` string, nullable: The user who last modified the document.
          - `created_at` string, nullable: The document creation time as a timezone-aware datetime. Dates without an offset are interpreted as UTC.
          - `modified_at` string, nullable: The document modification time as a timezone-aware datetime. Dates without an offset are interpreted as UTC.
      - ExtractResponse
        - `response_type` 'extract'
        - `job_id` string, nullable
        - `usage` ExtractUsage, required
          - `num_pages` integer, required
          - `num_fields` integer, required
          - `credits` number, nullable
          - `extract_mode` 'super_agent' | 'extract' | 'spreadsheet_agent', nullable
          - `usage_breakdown` ExtractUsageBreakdown: Raw extract quantities for accounts on the new pricing model. ``extract_fields`` is reported but not billed at launch. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the extract job; its page cost is covered by ``extract_pages`` but its add-ons are billed separately. ``tier`` is "Batch" when the job ran on the batch queue, which takes the batch discount on the rate card.
            - `extract_model` 'Extract' | 'Deep Extract', required
            - `tier` 'Default' | 'Batch'
            - `extract_pages` integer
            - `extract_fields` integer
            - `ocr_pages` integer
            - `charts` integer
            - `prompted_blocks` integer
        - `duration` number, nullable: The duration of the extract request in seconds.
        - `studio_link` string, nullable: The link to the studio pipeline for the document.
        - `result` union, required: The extracted response in your provided schema. This is a list of dictionaries. If disable_chunking is True (default), then it will be a list of length one. If force_url_result is True, this is returned as a URL result.
          - unknown[]
            - unknown
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
        - `citations` union, required: The citations corresponding to the extracted response. If force_url_result is True and citations are present, this is returned as a URL result.
          - unknown[]
            - unknown
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
        - `response_confidence` object, nullable: Optional deep extract confidence metadata containing document-level confidence plus a mirrored leaf-level confidence tree.
      - SplitResponse
        - `response_type` 'split'
        - `job_id` string, nullable: The unique identifier for the split job.
        - `usage` ParseUsage, required
          - `num_pages` integer, required
          - `credits` number, nullable
          - `credit_breakdown` object, nullable
          - `page_billing_breakdown` object, nullable: Per-page breakdown of features used. Maps 1-indexed page numbers (as strings) to the list of billing features applied on that page (e.g. 'page', 'complex', 'chart_agent').
          - `non_empty_cell_count` integer, nullable: Total non-empty cells across all sheets. Only set for spreadsheet inputs.
          - `usage_breakdown` union: Raw usage quantities. Only set for accounts on the new pricing model; credit fields are omitted for those accounts.
            - ParseUsageBreakdown: Raw parse quantities for accounts on the new (Q3 2026) pricing model. ``parse_model`` is "R-1" for the new parse model, "R-1 Mini" for a job that bills as R1 Mini (its pages are in ``parse_pages``), and "Legacy" for the legacy parse pipeline. A legacy-pipeline parse carries its cost in ``legacy_parse_credits``; add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) apply to the new parse model only.
              - …
            - SplitUsageBreakdown: Raw split quantities for accounts on the new pricing model. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the split job; its page cost is covered by ``split_pages`` but its add-ons are billed separately.
              - …
            - EditUsageBreakdown: Raw edit quantities for accounts on the new pricing model. ``edit_pages`` is the page count billed at the ``edit_model`` rate. A job with both normal and prefilled pages reports ``edit_model="Normal"`` with the prefilled pages in ``prefill_pages``, billed at the "Prefill" rate.
              - …
        - `duration` number, nullable: The duration of the split request in seconds.
        - `result` union, required: The split result. If force_url_result is True, this is returned as a URL result.
          - SplitResult
            - `section_mapping` object, nullable, required
            - `splits` Split[], required
              - …
          - DeepSplitResult
            - `splits` DeepSplit[], required
              - …
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
      - EditResponse
        - `response_type` 'edit'
        - `job_id` string, nullable: The unique identifier for the edit job.
        - `document_url` string, required: Presigned URL to download the edited document.
        - `form_schema` EditWidget[], nullable: Form schema for PDF forms. List of widgets with their types, descriptions, and bounding boxes.
          - `bbox` BoundingBox, required
            - `left` number, required
            - `top` number, required
            - `width` number, required
            - `height` number, required
            - `page` integer, required: The page number of the bounding box (1-indexed).
            - `original_page` integer: The page number in the original document of the bounding box (1-indexed).
          - `description` string, required: Description of the widget extracted from the document
          - `type` 'text' | 'checkbox' | 'radio' | 'dropdown' | 'barcode', required: Type of the form widget
          - `fill` boolean: If True (default), the system will attempt to fill this widget. If False, the widget will be created but intentionally left unfilled.
          - `value` string, nullable: If provided, this value will be used directly instead of attempting to intelligently determine the field value.
          - `font_size` number, nullable: Font size in points for this specific field. Takes priority over the global font_size in EditOptions. If not set, falls back to the global font_size, then to auto-calculated sizing.
        - `usage` ParseUsage
          - `num_pages` integer, required
          - `credits` number, nullable
          - `credit_breakdown` object, nullable
          - `page_billing_breakdown` object, nullable: Per-page breakdown of features used. Maps 1-indexed page numbers (as strings) to the list of billing features applied on that page (e.g. 'page', 'complex', 'chart_agent').
          - `non_empty_cell_count` integer, nullable: Total non-empty cells across all sheets. Only set for spreadsheet inputs.
          - `usage_breakdown` union: Raw usage quantities. Only set for accounts on the new pricing model; credit fields are omitted for those accounts.
            - ParseUsageBreakdown: Raw parse quantities for accounts on the new (Q3 2026) pricing model. ``parse_model`` is "R-1" for the new parse model, "R-1 Mini" for a job that bills as R1 Mini (its pages are in ``parse_pages``), and "Legacy" for the legacy parse pipeline. A legacy-pipeline parse carries its cost in ``legacy_parse_credits``; add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) apply to the new parse model only.
              - …
            - SplitUsageBreakdown: Raw split quantities for accounts on the new pricing model. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the split job; its page cost is covered by ``split_pages`` but its add-ons are billed separately.
              - …
            - EditUsageBreakdown: Raw edit quantities for accounts on the new pricing model. ``edit_pages`` is the page count billed at the ``edit_model`` rate. A job with both normal and prefilled pages reports ``edit_model="Normal"`` with the prefilled pages in ``prefill_pages``, billed at the "Prefill" rate.
              - …
      - PipelineResponse
        - `response_type` 'pipeline'
        - `job_id` string, required
        - `usage` ParseUsage, required
          - `num_pages` integer, required
          - `credits` number, nullable
          - `credit_breakdown` object, nullable
          - `page_billing_breakdown` object, nullable: Per-page breakdown of features used. Maps 1-indexed page numbers (as strings) to the list of billing features applied on that page (e.g. 'page', 'complex', 'chart_agent').
          - `non_empty_cell_count` integer, nullable: Total non-empty cells across all sheets. Only set for spreadsheet inputs.
          - `usage_breakdown` union: Raw usage quantities. Only set for accounts on the new pricing model; credit fields are omitted for those accounts.
            - ParseUsageBreakdown: Raw parse quantities for accounts on the new (Q3 2026) pricing model. ``parse_model`` is "R-1" for the new parse model, "R-1 Mini" for a job that bills as R1 Mini (its pages are in ``parse_pages``), and "Legacy" for the legacy parse pipeline. A legacy-pipeline parse carries its cost in ``legacy_parse_credits``; add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) apply to the new parse model only.
              - …
            - SplitUsageBreakdown: Raw split quantities for accounts on the new pricing model. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the split job; its page cost is covered by ``split_pages`` but its add-ons are billed separately.
              - …
            - EditUsageBreakdown: Raw edit quantities for accounts on the new pricing model. ``edit_pages`` is the page count billed at the ``edit_model`` rate. A job with both normal and prefilled pages reports ``edit_model="Normal"`` with the prefilled pages in ``prefill_pages``, billed at the "Prefill" rate.
              - …
        - `result` PipelineResult, required
          - `parse` union, required
            - ParseResponse
              - …
            - ParseResponse[]
              - …
          - `extract` union, required
            - ExtractSplitResponse[]
              - …
            - ExtractResponse
              - …
            - V3ExtractResponse
              - …
          - `split` SplitResponse, required
            - `response_type` 'split'
            - `job_id` string, nullable: The unique identifier for the split job.
            - `usage` ParseUsage, required
              - …
            - `duration` number, nullable: The duration of the split request in seconds.
            - `result` union, required: The split result. If force_url_result is True, this is returned as a URL result.
              - …
          - `edit` EditResponse
            - `response_type` 'edit'
            - `job_id` string, nullable: The unique identifier for the edit job.
            - `document_url` string, required: Presigned URL to download the edited document.
            - `form_schema` EditWidget[], nullable: Form schema for PDF forms. List of widgets with their types, descriptions, and bounding boxes.
              - …
            - `usage` ParseUsage
              - …
      - V3ExtractResponse
        - `response_type` 'v3_extract'
        - `job_id` string, nullable
        - `usage` ExtractUsage, required
          - `num_pages` integer, required
          - `num_fields` integer, required
          - `credits` number, nullable
          - `extract_mode` 'super_agent' | 'extract' | 'spreadsheet_agent', nullable
          - `usage_breakdown` ExtractUsageBreakdown: Raw extract quantities for accounts on the new pricing model. ``extract_fields`` is reported but not billed at launch. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the extract job; its page cost is covered by ``extract_pages`` but its add-ons are billed separately. ``tier`` is "Batch" when the job ran on the batch queue, which takes the batch discount on the rate card.
            - `extract_model` 'Extract' | 'Deep Extract', required
            - `tier` 'Default' | 'Batch'
            - `extract_pages` integer
            - `extract_fields` integer
            - `ocr_pages` integer
            - `charts` integer
            - `prompted_blocks` integer
        - `duration` number, nullable: The duration of the extract request in seconds.
        - `studio_link` string, nullable: The link to the studio pipeline for the document.
        - `confidence` 'high' | 'low', nullable: Optional document-level deep extract confidence label.
        - `confidence_reason` string, nullable: Optional explanation for the document-level confidence label.
        - `result` union, required: The extracted response in your provided schema. This is a list of dictionaries. If disable_chunking is True (default), then it will be a list of length one.
          - unknown
          - unknown[]
            - unknown
      - ClassifyResponse: Response from classify job - returned when polling /job/{job_id}
        - `response_type` 'classify'
        - `job_id` string, required
        - `result` union, required
          - ClassifyResponseCategory
            - `category` string, required
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
        - `response_confidence` ResponseConfidence: Overall confidence breakdown for classification response.
          - `categories` CategoryConfidence[], required
            - `category` string, required
            - `confidence` number, required
            - `criteria_confidence` CriteriaConfidence[], required
              - …
        - `usage` ClassifyUsage
          - `num_pages` integer, required
          - `num_categories` integer, required
          - `credits` number, nullable
          - `usage_breakdown` ClassifyUsageBreakdown: Raw classify quantities for accounts on the new pricing model. ``classify_pages`` is capped at 5, the same cap that the classify credit computation uses.
            - `classify_model` 'Classify' | 'Deep Classify', required
            - `classify_pages` integer
        - `extra_metadata` object: Additional metadata for the classify response. Contains `grouping` when the request set `category_groups`. Omitted when empty.
        - `duration` number, nullable: The duration of the classify request in seconds.
      - ChartResponse: Response from synchronous and persisted chart extraction jobs.
        - `response_type` 'chart'
        - `job_id` string, required
        - `result` ChartResult, required
          - `chart_data` object, required
          - `summary` string, required
          - `reconstruction_url` string, required
          - `verified` boolean, required
        - `usage` ChartUsage
          - `num_charts` 1
          - `credits` number
        - `duration` number, nullable
    - `progress` number, nullable
    - `reason` string, nullable
    - `error` ErrorDetail: Structured error body returned to customers. Matches the format specified in ``ERROR_POLICY.md``.
      - `code` integer, required
      - `name` 'TIMEOUT' | 'CAPACITY_TIMEOUT' | 'CUSTOMER_TIMEOUT' | 'INTERNAL_ERROR' | 'SERVICE_UNAVAILABLE' | 'GPU_ALLOCATION_ERROR' | 'GPU_POOL_SATURATED' | 'BATCH_QUEUE_FULL' | 'QUEUE_FULL' | 'JOB_STATE_ERROR' | 'DOCUMENT_CORRUPT' | 'DOCUMENT_EMPTY' | 'DOCUMENT_UNSUPPORTED' | 'DOCUMENT_TOO_LARGE' | 'OFFICE_CONVERSION_TOO_LARGE' | 'IMAGE_TOO_LARGE' | 'IMAGE_TOO_SMALL' | 'IMAGE_INVALID_ASPECT_RATIO' | 'DOCUMENT_PASSWORD_PROTECTED' | 'FORM_FILL_FAILED' | 'INTERNAL_INVARIANT_VIOLATION' | 'GPU_UNAVAILABLE' | 'CONTEXT_WINDOW_EXCEEDED' | 'OUTPUT_LIMIT_EXCEEDED' | 'PROCESSING_FAILED' | 'INFERENCE_METHOD_UNSUPPORTED' | 'SUBPROCESS_CRASHED' | 'BATCH_ORPHANED' | 'OVERSIZED_RESULT' | 'LLM_OUTPUT_PARSE_FAILED' | 'LLM_PROVIDER_ERROR' | 'INVALID_CONFIG' | 'INVALID_SCHEMA' | 'AUTH_ERROR' | 'NOT_APPLICABLE' | 'REGION_UNAVAILABLE' | 'NOT_FOUND' | 'JOB_DELETION_IN_PROGRESS' | 'JOB_DELETED' | 'JOB_NOT_COMPLETE' | 'JOB_CANCELLED' | 'RATE_LIMIT' | 'CELL_COUNT_EXCEEDED' | 'URL_NOT_ALLOWED', required: Machine-readable error names returned in API error responses. Each member maps to a category (Transient / Processing / Input) and a default HTTP status code defined in ``ERROR_CODE_DEFAULTS``. The enum value is the string customers see in the ``error.name`` field.
      - `message` string, required
      - `job_id` string, nullable
  - EnhancedAsyncJobResponse
    - `status` 'Pending' | 'Completed' | 'Failed' | 'Idle', required
    - `result` union
      - ParseResponse
        - `response_type` 'parse'
        - `job_id` string, required
        - `duration` number, required: The duration of the parse request in seconds.
        - `pdf_url` string, nullable: The storage URL of the converted PDF file.
        - `studio_link` string, nullable: The link to the studio pipeline for the document.
        - `usage` ParseUsage, required
          - `num_pages` integer, required
          - `credits` number, nullable
          - `credit_breakdown` object, nullable
          - `page_billing_breakdown` object, nullable: Per-page breakdown of features used. Maps 1-indexed page numbers (as strings) to the list of billing features applied on that page (e.g. 'page', 'complex', 'chart_agent').
          - `non_empty_cell_count` integer, nullable: Total non-empty cells across all sheets. Only set for spreadsheet inputs.
          - `usage_breakdown` union: Raw usage quantities. Only set for accounts on the new pricing model; credit fields are omitted for those accounts.
            - ParseUsageBreakdown: Raw parse quantities for accounts on the new (Q3 2026) pricing model. ``parse_model`` is "R-1" for the new parse model, "R-1 Mini" for a job that bills as R1 Mini (its pages are in ``parse_pages``), and "Legacy" for the legacy parse pipeline. A legacy-pipeline parse carries its cost in ``legacy_parse_credits``; add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) apply to the new parse model only.
              - …
            - SplitUsageBreakdown: Raw split quantities for accounts on the new pricing model. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the split job; its page cost is covered by ``split_pages`` but its add-ons are billed separately.
              - …
            - EditUsageBreakdown: Raw edit quantities for accounts on the new pricing model. ``edit_pages`` is the page count billed at the ``edit_model`` rate. A job with both normal and prefilled pages reports ``edit_model="Normal"`` with the prefilled pages in ``prefill_pages``, billed at the "Prefill" rate.
              - …
        - `result` union, required: The response from the document processing service. Note that there can be two types of responses, Full Result and URL Result. This is due to limitations on the max return size on HTTPS. If the response is too large, it will be returned as a presigned URL in the URL response. You should handle this in your application.
          - FullResult
            - `type` 'full', required: type = 'full'
            - `chunks` ParseChunk[], required
              - …
            - `ocr` OCRResult
              - …
            - `custom` unknown
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
        - `document_properties` DocumentProperties: Embedded properties read from the customer's original document.
          - `title` string, nullable: The document title.
          - `author` string, nullable: The document author.
          - `subject` string, nullable: The document subject.
          - `keywords` string, nullable: Keywords embedded in the document.
          - `creator` string, nullable: The application or tool that authored the document.
          - `producer` string, nullable: The application or library that produced the document.
          - `last_modified_by` string, nullable: The user who last modified the document.
          - `created_at` string, nullable: The document creation time as a timezone-aware datetime. Dates without an offset are interpreted as UTC.
          - `modified_at` string, nullable: The document modification time as a timezone-aware datetime. Dates without an offset are interpreted as UTC.
      - ExtractResponse
        - `response_type` 'extract'
        - `job_id` string, nullable
        - `usage` ExtractUsage, required
          - `num_pages` integer, required
          - `num_fields` integer, required
          - `credits` number, nullable
          - `extract_mode` 'super_agent' | 'extract' | 'spreadsheet_agent', nullable
          - `usage_breakdown` ExtractUsageBreakdown: Raw extract quantities for accounts on the new pricing model. ``extract_fields`` is reported but not billed at launch. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the extract job; its page cost is covered by ``extract_pages`` but its add-ons are billed separately. ``tier`` is "Batch" when the job ran on the batch queue, which takes the batch discount on the rate card.
            - `extract_model` 'Extract' | 'Deep Extract', required
            - `tier` 'Default' | 'Batch'
            - `extract_pages` integer
            - `extract_fields` integer
            - `ocr_pages` integer
            - `charts` integer
            - `prompted_blocks` integer
        - `duration` number, nullable: The duration of the extract request in seconds.
        - `studio_link` string, nullable: The link to the studio pipeline for the document.
        - `result` union, required: The extracted response in your provided schema. This is a list of dictionaries. If disable_chunking is True (default), then it will be a list of length one. If force_url_result is True, this is returned as a URL result.
          - unknown[]
            - unknown
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
        - `citations` union, required: The citations corresponding to the extracted response. If force_url_result is True and citations are present, this is returned as a URL result.
          - unknown[]
            - unknown
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
        - `response_confidence` object, nullable: Optional deep extract confidence metadata containing document-level confidence plus a mirrored leaf-level confidence tree.
      - SplitResponse
        - `response_type` 'split'
        - `job_id` string, nullable: The unique identifier for the split job.
        - `usage` ParseUsage, required
          - `num_pages` integer, required
          - `credits` number, nullable
          - `credit_breakdown` object, nullable
          - `page_billing_breakdown` object, nullable: Per-page breakdown of features used. Maps 1-indexed page numbers (as strings) to the list of billing features applied on that page (e.g. 'page', 'complex', 'chart_agent').
          - `non_empty_cell_count` integer, nullable: Total non-empty cells across all sheets. Only set for spreadsheet inputs.
          - `usage_breakdown` union: Raw usage quantities. Only set for accounts on the new pricing model; credit fields are omitted for those accounts.
            - ParseUsageBreakdown: Raw parse quantities for accounts on the new (Q3 2026) pricing model. ``parse_model`` is "R-1" for the new parse model, "R-1 Mini" for a job that bills as R1 Mini (its pages are in ``parse_pages``), and "Legacy" for the legacy parse pipeline. A legacy-pipeline parse carries its cost in ``legacy_parse_credits``; add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) apply to the new parse model only.
              - …
            - SplitUsageBreakdown: Raw split quantities for accounts on the new pricing model. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the split job; its page cost is covered by ``split_pages`` but its add-ons are billed separately.
              - …
            - EditUsageBreakdown: Raw edit quantities for accounts on the new pricing model. ``edit_pages`` is the page count billed at the ``edit_model`` rate. A job with both normal and prefilled pages reports ``edit_model="Normal"`` with the prefilled pages in ``prefill_pages``, billed at the "Prefill" rate.
              - …
        - `duration` number, nullable: The duration of the split request in seconds.
        - `result` union, required: The split result. If force_url_result is True, this is returned as a URL result.
          - SplitResult
            - `section_mapping` object, nullable, required
            - `splits` Split[], required
              - …
          - DeepSplitResult
            - `splits` DeepSplit[], required
              - …
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
      - EditResponse
        - `response_type` 'edit'
        - `job_id` string, nullable: The unique identifier for the edit job.
        - `document_url` string, required: Presigned URL to download the edited document.
        - `form_schema` EditWidget[], nullable: Form schema for PDF forms. List of widgets with their types, descriptions, and bounding boxes.
          - `bbox` BoundingBox, required
            - `left` number, required
            - `top` number, required
            - `width` number, required
            - `height` number, required
            - `page` integer, required: The page number of the bounding box (1-indexed).
            - `original_page` integer: The page number in the original document of the bounding box (1-indexed).
          - `description` string, required: Description of the widget extracted from the document
          - `type` 'text' | 'checkbox' | 'radio' | 'dropdown' | 'barcode', required: Type of the form widget
          - `fill` boolean: If True (default), the system will attempt to fill this widget. If False, the widget will be created but intentionally left unfilled.
          - `value` string, nullable: If provided, this value will be used directly instead of attempting to intelligently determine the field value.
          - `font_size` number, nullable: Font size in points for this specific field. Takes priority over the global font_size in EditOptions. If not set, falls back to the global font_size, then to auto-calculated sizing.
        - `usage` ParseUsage
          - `num_pages` integer, required
          - `credits` number, nullable
          - `credit_breakdown` object, nullable
          - `page_billing_breakdown` object, nullable: Per-page breakdown of features used. Maps 1-indexed page numbers (as strings) to the list of billing features applied on that page (e.g. 'page', 'complex', 'chart_agent').
          - `non_empty_cell_count` integer, nullable: Total non-empty cells across all sheets. Only set for spreadsheet inputs.
          - `usage_breakdown` union: Raw usage quantities. Only set for accounts on the new pricing model; credit fields are omitted for those accounts.
            - ParseUsageBreakdown: Raw parse quantities for accounts on the new (Q3 2026) pricing model. ``parse_model`` is "R-1" for the new parse model, "R-1 Mini" for a job that bills as R1 Mini (its pages are in ``parse_pages``), and "Legacy" for the legacy parse pipeline. A legacy-pipeline parse carries its cost in ``legacy_parse_credits``; add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) apply to the new parse model only.
              - …
            - SplitUsageBreakdown: Raw split quantities for accounts on the new pricing model. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the split job; its page cost is covered by ``split_pages`` but its add-ons are billed separately.
              - …
            - EditUsageBreakdown: Raw edit quantities for accounts on the new pricing model. ``edit_pages`` is the page count billed at the ``edit_model`` rate. A job with both normal and prefilled pages reports ``edit_model="Normal"`` with the prefilled pages in ``prefill_pages``, billed at the "Prefill" rate.
              - …
      - PipelineResponse
        - `response_type` 'pipeline'
        - `job_id` string, required
        - `usage` ParseUsage, required
          - `num_pages` integer, required
          - `credits` number, nullable
          - `credit_breakdown` object, nullable
          - `page_billing_breakdown` object, nullable: Per-page breakdown of features used. Maps 1-indexed page numbers (as strings) to the list of billing features applied on that page (e.g. 'page', 'complex', 'chart_agent').
          - `non_empty_cell_count` integer, nullable: Total non-empty cells across all sheets. Only set for spreadsheet inputs.
          - `usage_breakdown` union: Raw usage quantities. Only set for accounts on the new pricing model; credit fields are omitted for those accounts.
            - ParseUsageBreakdown: Raw parse quantities for accounts on the new (Q3 2026) pricing model. ``parse_model`` is "R-1" for the new parse model, "R-1 Mini" for a job that bills as R1 Mini (its pages are in ``parse_pages``), and "Legacy" for the legacy parse pipeline. A legacy-pipeline parse carries its cost in ``legacy_parse_credits``; add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) apply to the new parse model only.
              - …
            - SplitUsageBreakdown: Raw split quantities for accounts on the new pricing model. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the split job; its page cost is covered by ``split_pages`` but its add-ons are billed separately.
              - …
            - EditUsageBreakdown: Raw edit quantities for accounts on the new pricing model. ``edit_pages`` is the page count billed at the ``edit_model`` rate. A job with both normal and prefilled pages reports ``edit_model="Normal"`` with the prefilled pages in ``prefill_pages``, billed at the "Prefill" rate.
              - …
        - `result` PipelineResult, required
          - `parse` union, required
            - ParseResponse
              - …
            - ParseResponse[]
              - …
          - `extract` union, required
            - ExtractSplitResponse[]
              - …
            - ExtractResponse
              - …
            - V3ExtractResponse
              - …
          - `split` SplitResponse, required
            - `response_type` 'split'
            - `job_id` string, nullable: The unique identifier for the split job.
            - `usage` ParseUsage, required
              - …
            - `duration` number, nullable: The duration of the split request in seconds.
            - `result` union, required: The split result. If force_url_result is True, this is returned as a URL result.
              - …
          - `edit` EditResponse
            - `response_type` 'edit'
            - `job_id` string, nullable: The unique identifier for the edit job.
            - `document_url` string, required: Presigned URL to download the edited document.
            - `form_schema` EditWidget[], nullable: Form schema for PDF forms. List of widgets with their types, descriptions, and bounding boxes.
              - …
            - `usage` ParseUsage
              - …
      - V3ExtractResponse
        - `response_type` 'v3_extract'
        - `job_id` string, nullable
        - `usage` ExtractUsage, required
          - `num_pages` integer, required
          - `num_fields` integer, required
          - `credits` number, nullable
          - `extract_mode` 'super_agent' | 'extract' | 'spreadsheet_agent', nullable
          - `usage_breakdown` ExtractUsageBreakdown: Raw extract quantities for accounts on the new pricing model. ``extract_fields`` is reported but not billed at launch. The add-on quantities (``ocr_pages``, ``charts``, ``prompted_blocks``) come from the parse bundled into the extract job; its page cost is covered by ``extract_pages`` but its add-ons are billed separately. ``tier`` is "Batch" when the job ran on the batch queue, which takes the batch discount on the rate card.
            - `extract_model` 'Extract' | 'Deep Extract', required
            - `tier` 'Default' | 'Batch'
            - `extract_pages` integer
            - `extract_fields` integer
            - `ocr_pages` integer
            - `charts` integer
            - `prompted_blocks` integer
        - `duration` number, nullable: The duration of the extract request in seconds.
        - `studio_link` string, nullable: The link to the studio pipeline for the document.
        - `confidence` 'high' | 'low', nullable: Optional document-level deep extract confidence label.
        - `confidence_reason` string, nullable: Optional explanation for the document-level confidence label.
        - `result` union, required: The extracted response in your provided schema. This is a list of dictionaries. If disable_chunking is True (default), then it will be a list of length one.
          - unknown
          - unknown[]
            - unknown
      - ClassifyResponse: Response from classify job - returned when polling /job/{job_id}
        - `response_type` 'classify'
        - `job_id` string, required
        - `result` union, required
          - ClassifyResponseCategory
            - `category` string, required
          - UrlResult
            - `type` 'url', required: type = 'url'
            - `url` string, required
            - `result_id` string, required
        - `response_confidence` ResponseConfidence: Overall confidence breakdown for classification response.
          - `categories` CategoryConfidence[], required
            - `category` string, required
            - `confidence` number, required
            - `criteria_confidence` CriteriaConfidence[], required
              - …
        - `usage` ClassifyUsage
          - `num_pages` integer, required
          - `num_categories` integer, required
          - `credits` number, nullable
          - `usage_breakdown` ClassifyUsageBreakdown: Raw classify quantities for accounts on the new pricing model. ``classify_pages`` is capped at 5, the same cap that the classify credit computation uses.
            - `classify_model` 'Classify' | 'Deep Classify', required
            - `classify_pages` integer
        - `extra_metadata` object: Additional metadata for the classify response. Contains `grouping` when the request set `category_groups`. Omitted when empty.
        - `duration` number, nullable: The duration of the classify request in seconds.
      - ChartResponse: Response from synchronous and persisted chart extraction jobs.
        - `response_type` 'chart'
        - `job_id` string, required
        - `result` ChartResult, required
          - `chart_data` object, required
          - `summary` string, required
          - `reconstruction_url` string, required
          - `verified` boolean, required
        - `usage` ChartUsage
          - `num_charts` 1
          - `credits` number
        - `duration` number, nullable
    - `progress` number, nullable
    - `reason` string, nullable
    - `error` ErrorDetail: Structured error body returned to customers. Matches the format specified in ``ERROR_POLICY.md``.
      - `code` integer, required
      - `name` 'TIMEOUT' | 'CAPACITY_TIMEOUT' | 'CUSTOMER_TIMEOUT' | 'INTERNAL_ERROR' | 'SERVICE_UNAVAILABLE' | 'GPU_ALLOCATION_ERROR' | 'GPU_POOL_SATURATED' | 'BATCH_QUEUE_FULL' | 'QUEUE_FULL' | 'JOB_STATE_ERROR' | 'DOCUMENT_CORRUPT' | 'DOCUMENT_EMPTY' | 'DOCUMENT_UNSUPPORTED' | 'DOCUMENT_TOO_LARGE' | 'OFFICE_CONVERSION_TOO_LARGE' | 'IMAGE_TOO_LARGE' | 'IMAGE_TOO_SMALL' | 'IMAGE_INVALID_ASPECT_RATIO' | 'DOCUMENT_PASSWORD_PROTECTED' | 'FORM_FILL_FAILED' | 'INTERNAL_INVARIANT_VIOLATION' | 'GPU_UNAVAILABLE' | 'CONTEXT_WINDOW_EXCEEDED' | 'OUTPUT_LIMIT_EXCEEDED' | 'PROCESSING_FAILED' | 'INFERENCE_METHOD_UNSUPPORTED' | 'SUBPROCESS_CRASHED' | 'BATCH_ORPHANED' | 'OVERSIZED_RESULT' | 'LLM_OUTPUT_PARSE_FAILED' | 'LLM_PROVIDER_ERROR' | 'INVALID_CONFIG' | 'INVALID_SCHEMA' | 'AUTH_ERROR' | 'NOT_APPLICABLE' | 'REGION_UNAVAILABLE' | 'NOT_FOUND' | 'JOB_DELETION_IN_PROGRESS' | 'JOB_DELETED' | 'JOB_NOT_COMPLETE' | 'JOB_CANCELLED' | 'RATE_LIMIT' | 'CELL_COUNT_EXCEEDED' | 'URL_NOT_ALLOWED', required: Machine-readable error names returned in API error responses. Each member maps to a category (Transient / Processing / Input) and a default HTTP status code defined in ``ERROR_CODE_DEFAULTS``. The enum value is the string customers see in the ``error.name`` field.
      - `message` string, required
      - `job_id` string, nullable
    - `type` 'Parse' | 'Extract' | 'Split' | 'Edit' | 'Pipeline' | 'Classify' | 'Chart', nullable
    - `num_pages` integer, nullable
    - `total_pages` integer, nullable
    - `source` unknown
    - `duration` number, nullable
    - `created_at` string, date-time, nullable
    - `raw_config` string, nullable
    - `bucket` unknown

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-05** `2af491884b8b`: 16 warning
  - added the new `R-1 Mini` enum value to the `anyOf[subschema #1: AsyncJobResponse]/result/anyOf[subschema #1]/oneOf[subschema #1: ParseResponse]/usage/usage_breakdown/anyOf[subschema #1: ParseUsageBreakdown]/parse_model` response property for the response status `200`
  - added the new `R-1 Mini` enum value to the `anyOf[subschema #1: AsyncJobResponse]/result/anyOf[subschema #1]/oneOf[subschema #3: SplitResponse]/usage/usage_breakdown/anyOf[subschema #1: ParseUsageBreakdown]/parse_model` response property for the response status `200`
  - added the new `R-1 Mini` enum value to the `anyOf[subschema #1: AsyncJobResponse]/result/anyOf[subschema #1]/oneOf[subschema #4: EditResponse]/usage/anyOf[subschema #1: ParseUsage]/usage_breakdown/anyOf[subschema #1: ParseUsageBreakdown]/parse_model` response property for the response status `200`
  - added the new `R-1 Mini` enum value to the `anyOf[subschema #1: AsyncJobResponse]/result/anyOf[subschema #1]/oneOf[subschema #5: PipelineResponse]/result/edit/anyOf[subschema #1: EditResponse]/usage/anyOf[subschema #1: ParseUsage]/usage_breakdown/anyOf[subschema #1: ParseUsageBreakdown]/parse_model` response property for the response status `200`
  - …12 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/reductoai/apis/reducto-api/changes/job/:job_id/get.md)

---

[API](https://skmtc.dev/reductoai/apis/reducto-api.md) - [All operations](https://skmtc.dev/reductoai/apis/reducto-api/llms.txt) - [OpenAPI document](https://skmtc.dev/reductoai/apis/reducto-api/revisions/2af491884b8b?raw)
