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.
- Python
- TypeScript
- curl
Session lifecycle
POST .../upload-sessions— returnssession_id,session_token,chunk_size,total_partsPUT .../parts/{part_number}— send each chunk withX-Upload-TokenGET .../upload-sessions/{session_id}— list landed parts after a dropPOST .../complete— concatenates parts and writes the ledger row (aJob)DELETE .../upload-sessions/{session_id}— abort and reclaim staged parts
ttl_seconds is optional on create.
When to use which
Uploading still does not ingest. Call ingest after
the complete job succeeds.