| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Purpose: Use this endpoint to obtain one or more upload URLs before uploading document files. Submit a list of file types (1–500 files per request) and receive a unique upload URL for each file. Upload your files directly to these URLs, then pass the returned file_path values to the Submit Documents for AI Processing endpoint.
NOTE
Upload URLs expire after 10 minutes.
Supported Doc Types
- PDF (
pdf) - JPEG (
jpeg) - JPG (
jpg) - WEBP (
webp) - PNG (
png)
Rate Limits
This endpoint has a rate limit of 10 requests for every 60 seconds.
How to upload a file to S3
Use the presigned upload details returned by POST /v4/documents/bulk/upload_urls to upload each file directly to S3. This flow uses an S3 POST upload, not PUT.
Send the upload request as multipart/form-data. Include every key-value pair from upload_fields in the form body before the file field.
curl -X POST "<upload_url>" \
-F "key=<upload_fields.key>" \
-F "Content-Type=<upload_fields.Content-Type>" \
-F "policy=<upload_fields.policy>" \
-F "x-amz-credential=<upload_fields.x-amz-credential>" \
-F "x-amz-algorithm=<upload_fields.x-amz-algorithm>" \
-F "x-amz-date=<upload_fields.x-amz-date>" \
-F "x-amz-signature=<upload_fields.x-amz-signature>" \
-F "file=@/path/to/document.pdf"
If the upload succeeds, S3 returns 204 No Content.
After the upload completes, call POST /v4/documents/bulk/process and pass the returned file_path as file_location so Motive can begin asynchronous document processing.
Important notes
- The presigned URL expires after 600 seconds.
- S3 enforces the upload policy server-side. If the
Content-Typedoes not match the generated policy, or the file exceeds the maximum allowed size, S3 returns a 4xx error directly. - Supported file types are
png,jpeg,jpg,pdf, andwebp.
File constraints
| Constraint | Value |
|---|---|
| Max files per request | 500 |
| Max file size | 50 MB |
| Supported formats | png, jpeg, jpg, pdf, webp |
| URL expiry | 600 seconds |
Response Parameters
files
- Type: Array (Object)
- Description: A list of file objects containing pre-signed URL details for uploading documents.
upload_url
- Type: String (URL)
- Description: The target endpoint URL where the file payload should be uploaded.
upload_method
- Type: String
- Description: The HTTP method required for the upload request (POST - default)
upload_fields
- Type: Object
- Description: A collection of required metadata fields and authentication parameters to include in the form-data payload.
key
- Type: String
- Description: The specific destination path and filename where the file will be stored in the object storage repository.
Content-Type
- Type: String
- Description: The MIME type of the document being uploaded.
policy
- Type: String (Base64)
- Description: The security policy statement specifying the permitted request conditions and expiration limits.
x-amz-credential
- Type: String
- Description: The AWS credential scope mapping the request signer to a specific access key, date, and region.
x-amz-algorithm
- Type: String
- Description: The cryptographic hashing algorithm used to secure the signature framework.
x-amz-date
- Type: String (Timestamp)
- Description: The exact timestamp designating when the pre-signed request credentials become valid.
x-amz-signature
- Type: String
- Description: The security signature hash validating the authenticity and integrity of the request.
file_path
- Type: String
- Description: The underlying object storage destination path for the uploaded file asset.
expires_in_seconds
- Type: Integer
- Description: The remaining lifetime duration of the pre-signed credentials and target upload window. By default the pre-signed URL expires in 600 seconds or 10 minutes.
