---
title: "Pipeline"
method: POST
path: "/pipeline"
---

# Pipeline

`POST /pipeline`

## Request body

- V3PipelineConfig
  - `input` union, required — For parse/split/extract pipelines, the URL of the document to be processed. You can provide one of the following: 1. A publicly available URL 2. A presigned S3 URL 3. A reducto:// prefixed URL obtained from the /upload endpoint after directly uploading a document 4. A jobid:// prefixed URL obtained from a previous /parse invocation 5. A list of URLs (for multi-document pipelines, V3 API only) For edit pipelines, this should be a string containing the edit instructions
    - string
    - string[]
    - UploadResponse
      - `file_id` string, required
      - `presigned_url` string, nullable
  - `pipeline_id` string, required — The ID of the pipeline to use for the document.
  - `settings` PipelineSettings — Settings for pipeline execution that override pipeline defaults.
    - `document_password` string, nullable — Password to decrypt password-protected documents.

## Response `200`

Successful Response

- PipelineResponse
  - `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').
  - `result` PipelineResult, required
    - `parse` union, required
      - ParseResponse
        - `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').
        - `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
      - ParseResponse[]
        - `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').
        - `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
    - `extract` union, required
      - ExtractSplitResponse[]
        - `split_name` string, required
        - `page_range` integer[], required
        - `partition` string, nullable
        - `result` union, required
          - ExtractResponse
            - `job_id` string, nullable
            - `usage` ExtractUsage, required
              - …
            - `studio_link` string, nullable — The link to the studio pipeline for the document.
            - `result` unknown[], 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.
              - …
            - `citations` unknown[], nullable, required — The citations corresponding to the extracted response.
              - …
          - V3ExtractResponse
            - `job_id` string, nullable
            - `usage` ExtractUsage, required
              - …
            - `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.
              - …
      - ExtractResponse
        - `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
        - `studio_link` string, nullable — The link to the studio pipeline for the document.
        - `result` unknown[], 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
        - `citations` unknown[], nullable, required — The citations corresponding to the extracted response.
          - unknown
      - V3ExtractResponse
        - `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
        - `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.
          - unknown
          - unknown[]
            - unknown
    - `split` SplitResponse, 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').
      - `result` union, required — The split result.
        - SplitResult
          - `section_mapping` object, nullable, required
          - `splits` Split[], required
            - `name` string, required
            - `pages` integer[], required
            - `conf` 'high' | 'low'
            - `partitions` SplitPartition[], nullable
              - …
        - DeepSplitResult
          - `splits` DeepSplit[], required
            - `name` string, required
            - `pages` DeepSplitPageEvidence[], required
              - …
            - `partitions` DeepSplitPartition[], nullable
              - …
    - `edit` EditResponse
      - `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').

## Other responses

- `422` — Validation Error

## Changes

- **2026-06-12** `909015e871ed` — 10 info
  - added the optional property `result/edit/anyOf[subschema #1: EditResponse]/usage/anyOf[subschema #1: ParseUsage]/page_billing_breakdown` to the response with the `200` status
  - added the optional property `result/parse/anyOf[subschema #1: ParseResponse]/usage/page_billing_breakdown` to the response with the `200` status
  - added the optional property `result/parse/anyOf[subschema #2]/items/usage/page_billing_breakdown` to the response with the `200` status
  - added the optional property `result/split/anyOf[subschema #1: SplitResponse]/usage/page_billing_breakdown` to the response with the `200` status
  - …6 more
- **2026-03-20** `1cdad79931d9` — 1 info
  - added the optional property `result/edit/anyOf[subschema #1: EditResponse]/form_schema/anyOf[subschema #1]/items/font_size` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/reductoai/apis/reducto-api/changes/pipeline/post.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-service-production.skmtc.workers.dev/v1/apis/reductoai/reducto-api/revisions/909015e871ed/schema)
