Overview
Documents are uploaded via short-lived presigned URLs, then registered with the API as case documents. This guide walks through each step.The 3-Step Upload Flow
Step 1: Request Presigned Upload URL
Request a temporary upload URL from the Enterprise API v2:
Response:
Step 2: Upload the File
Upload your file using the presigned URL:- Use PUT method (not POST)
- Set
Content-Typeheader matching the file type from Step 1 - Send raw binary file data (not multipart/form-data)
- Upload must complete within 15 minutes
Step 3: Create Document Record
After a successful upload, create the document record:
Response:
The
upload_id expires after 1 hour. Complete Step 3 within this window or the upload will be discarded.Complete Example
Python
Node.js
Batch Upload
For uploading multiple files:File Constraints
Error Handling
Common Errors
Upload URL Expired
Upload ID Not Found
- Upload ID expired (>1 hour old)
- File was never uploaded to S3 (Step 2 failed)
- Upload ID already used
File Not Uploaded
Best Practices
1. Check File Size Before Upload
2. Handle Timeouts
3. Verify Upload Success
4. Use Virtual Paths for Organization
Organize documents by provider or document type:5. Clean Up on Failure
Security Considerations
- Never expose upload URLs - They grant write access for the file you signed
- Don’t reuse upload IDs - Each upload requires a fresh
upload_id - Validate file types - Ensure uploaded files match the
file_typeyou signed for