Generate document upload URLs

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

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-Type does 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, and webp.

File constraints

ConstraintValue
Max files per request500
Max file size50 MB
Supported formatspng, jpeg, jpg, pdf, webp
URL expiry600 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.

Body Params
files
array of objects
required

The object that includes the doc_type array. NOTE: Max 500 files per request.

files*
Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json