Skip to main content
Workspace files.upload is a single multipart POST. The Python and TypeScript SDKs switch to a resumable upload session automatically at 32 MiB. Call the session routes yourself when you need to resume after a drop or stream from a source that is not in memory. The workspace .txt ceiling is 1 GiB. A file at that boundary is uploaded as four 256 MiB parts; it cannot use the 512 MiB single-request route. Other document formats keep their existing format-specific ceilings.

Session lifecycle

  1. POST .../upload-sessions — returns session_id, session_token, chunk_size, total_parts
  2. PUT .../parts/{part_number} — send each chunk with X-Upload-Token
  3. GET .../upload-sessions/{session_id} — list landed parts after a drop
  4. POST .../complete — concatenates parts and writes the ledger row (a Job)
  5. DELETE .../upload-sessions/{session_id} — abort and reclaim staged parts
The session token is not your API key. Send it on every part and on complete. Default session TTL is a server default; ttl_seconds is optional on create.

When to use which

For .txt, the 1 GiB contract covers workspace storage, ingestion, search/read, and Parse. Split, Extract, and Ground currently reject .txt sources above 256 MiB because those operations still materialize text in memory. Uploading still does not ingest. Call ingest after the complete job succeeds.