Skip to main content
For files larger than 100MB, use the presigned URL method. This uploads directly to cloud storage, bypassing the 100MB limit of the standard Upload endpoint.

How It Works

  1. Request a presigned URL from Reducto (no file attached)
  2. Upload your file directly to cloud storage using the presigned URL
  3. Use the file_id with Parse, Split, or Extract endpoints

Step 1: Request a Presigned URL

Call the upload endpoint without attaching a file:
Response:
Save the file_id now. You’ll need it in Step 3. The presigned URL is only for uploading — you can’t use it to process the document.

Step 2: Upload to Presigned URL

Upload your file using a PUT request to the presigned URL:
No Content-Type header needed. When uploading to presigned URLs, you don’t need to set a Content-Type header — the file will be accepted as-is.

Step 3: Process with Parse, Split, or Extract

Use the file_id from Step 1 (not the presigned URL) with any Reducto endpoint:

Complete Example

Here’s the full workflow in one script:

Troubleshooting

Cause: The presigned URL has expired.Fix: Presigned URLs expire after a short time (typically 1 hour). Request a new presigned URL and try again.
Cause: You might be passing the presigned_url instead of the file_id.Fix: Always use the file_id (starts with reducto://) with Parse, Split, or Extract — not the presigned URL.
Cause: Large files on slow connections can timeout.Fix:
  • Use a wired connection if possible
  • Consider chunked/multipart upload for files >1GB
  • Implement retry logic with exponential backoff
Cause: Using incompatible upload methods or headers.Fix:
  • Don’t include a Content-Type header — presigned URLs don’t require it
  • For cURL, use -T filename instead of --data-binary @filename
  • In Go, use bytes.NewReader() to ensure proper Content-Length handling

Direct Upload

For files under 100MB — simpler, one-step upload.

Parse

Extract text, tables, and figures from uploaded documents.

Batch Processing

Process many large files in parallel.

Async Processing

Use webhooks for long-running jobs.