longrun.
Extract Selected Files

Docs

File actions / Extract Selected Files

Extract Selected Files

Use Extract Selected Files to process your inputs. Submit the request, then retrieve the run to get its result.

POSThttps://uselongrun.app/v1/files/extract-selected
Request
curl --request POST "https://uselongrun.app/v1/files/extract-selected" \
  --header "Authorization: Bearer ${API_KEY}" \
  --header "Content-Type: application/json" \
  --data "$(jq -n --arg FILE_ID "${FILE_ID}" '{
  "inputs": {
    "file": $FILE_ID
  },
  "options": {
    "names": [
      "example"
    ]
  }
}')"
Accepted · 202
{
  "id": "run_example",
  "status": "queued",
  "outputs": null,
  "error": null,
  "retry_of_run_id": null,
  "created_at": "2026-10-22T10:00:00.000Z",
  "updated_at": "2026-10-22T10:00:00.000Z"
}

The request is accepted, but processing has not finished. Retrieve the run using its ID to get the result.

Completed run · 200
{
  "id": "run_example",
  "status": "completed",
  "outputs": {
    "files": [
      {
        "saved": false,
        "retained": false,
        "id": "file_result",
        "name": "2026-10-22_10-00-03-000.pdf",
        "mime_type": "application/pdf",
        "size": 76800,
        "category": "PDF",
        "storage": "longrun",
        "url": "https://uselongrun.app/v1/files/file_result/content",
        "access": "authenticated",
        "source": "action",
        "created_at": "2026-10-22T10:00:03.000Z",
        "expires_at": "2026-10-23T10:00:03.000Z",
        "expired": false,
        "source_run_id": "run_example",
        "source_name": "Generated file"
      },
      {
        "saved": false,
        "retained": false,
        "id": "file_result_2",
        "name": "2026-10-22_10-00-04-000.pdf",
        "mime_type": "application/pdf",
        "size": 76800,
        "category": "PDF",
        "storage": "longrun",
        "url": "https://uselongrun.app/v1/files/file_result_2/content",
        "access": "authenticated",
        "source": "action",
        "created_at": "2026-10-22T10:00:03.000Z",
        "expires_at": "2026-10-23T10:00:03.000Z",
        "expired": false,
        "source_run_id": "run_example",
        "source_name": "Generated file"
      }
    ]
  },
  "error": null,
  "retry_of_run_id": null,
  "created_at": "2026-10-22T10:00:00.000Z",
  "updated_at": "2026-10-22T10:00:03.000Z"
}

Example result from Get a run after processing completes. File examples use temporary storage; metadata and values will vary with your inputs.

Get the run result

Request parameters

header
Idempotency-KeystringOptional

Scoped to workspace and operation; same key and payload reuses the run during its seven-day retention period. Changed payload returns 409.

Example
"receipt-1042-v1"

Maximum length: 200 characters.

Request body

Send a JSON body with the following inputs. Put processing settings inside options.

Inputs

inputs.fileArchive fileRequired

The Archive file to process. Upload it first and use the returned file ID.

Example
"${FILE_ID}"

Use an uploaded file ID or a supported file reference. Learn how to send files

Options

options.namesarray of textRequired

Names of archive entries to select. Use names as they appear in the archive.

Example
[
  "receipt.pdf"
]
options.max_entriesnumberOptional

Maximum number of archive entries allowed during extraction.

Example
100

Minimum: 1

Maximum: 100

options.max_expanded_bytesnumberOptional

Maximum total uncompressed size allowed, in bytes.

Example
10485760

Minimum: 1

Maximum: 209715200

options.max_rationumberOptional

Maximum permitted ratio of expanded size to compressed size.

Example
100

Minimum: 1

Maximum: 1000

Delivery

outputobjectOptional

Choose where the result is delivered. Omit this to use temporary LongRun storage.

Example
{
  "storage": "temporary"
}

Storage guide · Bubble delivery setup

Show child fields
output.storagestringOptional

temporary stores results in LongRun. bubble delivers them to a connected Bubble app. These are the only supported values. A published workflow uses its configured destination unless you override it.

Example
"temporary"

Default: "temporary"

Allowed values: temporary bubble

output.connection_idstringConditionally required

Required when storage is bubble. Copy the connection ID from Settings → Integrations → Bubble. Not used for temporary storage.

Example
"${STORAGE_CONNECTION_ID}"
output.privatebooleanOptional

Only for Bubble delivery. true creates a private file and requires attach_to. false requests a public upload; access still depends on the receiving app configuration.

Example
false

Default: false

output.attach_tostringConditionally required

Required when storage is bubble and private is true. The Bubble Thing ID that owns the file. See the Bubble integration guide for setup.

Example
"${BUBBLE_THING_ID}"
output.file_namestringOptional

Optional output filename, such as receipt.pdf. Omit it to use the generated timestamp-based name. Applies to either destination.

Example
"receipt.pdf"

Maximum length: 255 characters.

webhook_idsarray of stringOptional

IDs of configured webhook endpoints to notify for this run. Omit this to send no webhooks for a direct action.

Example
[
  "${WEBHOOK_ID}"
]

Returns

Returns 202 Accepted with a run ID. Processing continues after the response. Retrieve the run until its status is completed, failed, or cancelled.

Retrieve a run →

Outputs when completed

These fields appear inside outputs on the completed run.

outputs.filesarray of File file

Limits

Input file
100 MiB
Generated files
200 MiB combined across all output files
Processing deadline
120 seconds; processing may stop earlier if a renderer or resource limit is reached
options.names items
100 maximum
Archive entries
100 maximum; max_entries can lower this
Uncompressed archive data
100 MiB by default; max_expanded_bytes can raise this to 200 MiB. The input-file limit still applies.
Archive expansion ratio
100 by default; max_ratio can raise this to 1,000