Skip to main content
POST
Vault — Get Upload URL
Step 1 of the Vault upload flow. Returns a single-use presigned upload (PUT) URL.

Flow

  1. POST /v2/vault/presigned_url{ presigned_url, file_key, document_id }
  2. PUT the file to presigned_url with a matching Content-Type header
  3. POST /v2/vault/confirm → registers the document and triggers processing
  4. GET /v2/vault/status → poll until status is Synced (for the slow tail)
The presigned URL is single-use and expires after ~10 minutes. The PUT request’s Content-Type must match the content_type you sent here.

Authorizations

X-API-KEY
string
header
required

Body

application/json
file_name
string
required

Original file name (with extension).

Example:

"Q4_report.pdf"

content_type
string
required

MIME type of the file.

Example:

"application/pdf"

workspace
enum<string>
default:personal

Vault scope the document is uploaded into. Must match between presigned_url and confirm. Note: the analytics SSE search must use the same workspace to retrieve the document.

Available options:
personal,
organization
organization_id
string<uuid>

Organization ID (optional).

user_id
string<uuid>

User id (optional).

user_email
string<email>

User email (optional).

user_name
string

User name (optional).

Response

Presigned upload URL generated

presigned_url
string<uri>

Single-use presigned upload (PUT) URL. Upload the file body via PUT with header Content-Type matching the request content_type.

file_key
string

Server-generated file key. Pass back to POST /v2/vault/confirm.

document_id
string

Document id for this upload. Pass back to confirm.

expiration_seconds
integer
Example:

600