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

# Run Workflow

> Once a workflow has been created on the Extend Platform, this endpoint can be used to send file(s) to be run.

### Body

<ParamField body="workflowId" type="string" required>
  The ID of the workflow that files will be run through. This ID can be fetched
  from viewing the workflow on the Extend platform.
</ParamField>

<ResponseField name="files" type="File[]">
  An array of Files. Either files or rawTexts must be provided. Supported file
  types can be found [here](/api-reference/supported_file_types).

  <ResponseField name="File" type="File">
    <Expandable title="properties" defaultOpen>
      <ResponseField name="fileUrl" type="string" required>
        A presigned URL for the file. Though we will download immediately, we
        recommend a 5 - 15 minute expiration time.
      </ResponseField>

      <ParamField body="fileId" type="string" optional>
        If you already have an Extend file id (for instance from running a parser or a previous file creation) then you can
        run a processor via file id, and any parsed data will be reused.
      </ParamField>

      <ResponseField name="fileName" type="string" optional>
        The name of the file. Optional, but recommended to improve legibility in run history in the Extend dashboard
      </ResponseField>

      <ResponseField name="outputs" type="Output[]" optional>
        Predetermined outputs that can be used to override the outputs
        generated. Generally not recommended for most use cases, however, can be
        useful in cases of overriding a classification in workflow or a subset
        of extraction fields when data is known.
      </ResponseField>

      <ResponseField name="Output" type="Output">
        <Expandable title="properties" defaultOpen>
          <ResponseField name="processorId" type="string" required>
            The id of the processor that the output is associated with.
          </ResponseField>

          <ResponseField name="output" type="object" required>
            The output that is being overridden. Output types can be found
            [here](https://docs.extend.app/api-reference/guides/output_types).
          </ResponseField>
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>
</ResponseField>

<ParamField body="rawTexts" type="string[]">
  An array of raw strings. Can be used in place of files when passing raw data.
  The raw data will be converted to .txt files and run through the workflow. If
  the data follows a specific format, it is recommended to use the files
  parameter instead. Either files or rawTexts must be provided.
</ParamField>

<ParamField body="version" type="string">
  An optional version of the workflow that files will be run through. This
  number can be found when viewing the workflow on the Extend platform. When a
  version number is not supplied, the most recent version of the workflow will
  be used. To run the "draft" version of a workflow, use "draft" as the version.
</ParamField>

<ParamField body="priority" type="number">
  An optional value used to determine the relative order of WorkflowRuns when
  rate limiting is in effect. Priority values must be an integer between 1 and
  100 inclusive. Lower values will be prioritized before higher values. The
  default priority value is 50.
</ParamField>

<ParamField body="metadata" type="any">
  An optional object that can be passed in to identify the WorkflowRun. It will
  be returned in the response and webhooks.
</ParamField>

### Response

<ResponseField name="success" type="boolean">
  A true or false value for whether the workflow run was created successfully or
  not.
</ResponseField>

<ResponseField name="workflowRuns" type="WorkflowRun[]">
  An array of WorkflowRun objects, with each WorkflowRun corresponding to a
  single File that was passed in.

  <ResponseField name="WorkflowRun" type="object">
    <Expandable title="properties" defaultOpen>
      <ResponseField name="object" type="string">
        The type of response, in this case it will always be "workflow\_run".
      </ResponseField>

      <ResponseField name="id" type="string">
        An ID corresponding to a specific File x Workflow combination representing the specific WorkflowRun for a File.
      </ResponseField>

      <ResponseField name="status" type="string">
        The status of a WorkflowRun. This will either be "PENDING" as the WorkflowRun has just started, or "PROCESSING" if the WorkflowRun is immediately started.
      </ResponseField>

      <ResponseField name="metadata" type="any">
        The metadata that was passed in when running the Workflow.
      </ResponseField>

      <ResponseField name="initialRunAt" type="string">
        The time (in UTC) at which the workflow was started.
      </ResponseField>

      <ResponseField name="outputs" type="array">
        An array of outputs that were generated by the WorkflowRun. This will be empty as the WorkflowRun has just started.

        The shape of the outputs will match the shape of a [processor run's output](/api-reference/objects/processor_run).

        And the `output` field will conform to the shape of [output types](/api-reference/guides/output_types).
      </ResponseField>

      <ResponseField name="workflow" type="object">
        The details about the Workflow that was used in this WorkflowRun.

        <Expandable title="properties" defaultOpen>
          <ResponseField name="id" type="string">
            The Workflow ID that can be fetched from the Extend Platform.
          </ResponseField>

          <ResponseField name="name" type="string">
            The name of the Workflow.
          </ResponseField>

          <ResponseField name="version" type="string">
            The version of the Workflow.
          </ResponseField>
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>
</ResponseField>

<RequestExample>
  ```bash Example Request theme={null}
  curl --location --request POST 'https://api-prod.extend.app/workflow_runs' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <API_TOKEN>' \
  --data '{
      "workflowId": "workflow_1234",
      "version": "1",
      "files": [{
        "fileName":"example_file_name",
        "fileUrl":"https://test.s3.amazonaws.com/example+file+name.pdf"
      }],
      "priority": 50,
      "metadata": {
        "internal_id": "id_1234"
      }
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json Example Response theme={null}
  {
    "success": true,
    "workflowRuns": [
      {
        "object": "workflow_run",
        "id": "workflow_run_1234",
        "status": "PENDING",
        "metadata": {
          "internal_id": "id_1234"
        },
        "initialRunAt": "2023-01-01T09:41:00.000Z",
        "outputs": [],
        "workflow": {
          "object": "workflow",
          "id": "workflow_1234",
          "name": "test_workflow",
          "version": "1"
        }
      }
    ]
  }
  ```
</ResponseExample>
