storageEntryId exists only after the session reaches FINALIZED.
Choose an upload mode
writeMode is a separate setting for structured CSV/XLSX row materialization. It does not choose how raw bytes are transferred. See Structured files.
Direct frontend upload
Create the session in trusted backend or low-code logic, return only the temporary upload contract to the frontend, and keep the session ID for status checks.finalizeUploadSession() for the managed direct path. Storage owns finalization after it confirms the completed transfer.
- successful
fetch()means the temporary target accepted the transfer; FINALIZEDmeans Storage published the governed file entry;- only the finalized entry should trigger later reads, Events, or Jobs.
Incremental generated upload
Incremental mode is the default choice for one producer that appends data in order. OmitpartNumber during normal writes; Storage assigns it.
rows or sheets instead of manually serializing delimiters. One part must contain exactly one of data, rows, or sheets.
Chunked and repairable upload
Use chunked mode when part numbers belong to the caller:Platform API lifecycle
The default Explorer routes are:
Writable workspaces expose their own create-session route. After creation, use the returned session ID with the normal lifecycle operations. Use the generated Platform API reference for exact request and response schemas.
Lease, retention, and recovery
Session expiry is an upload lease, not file retention:- every accepted part renews the lease;
- use
extendUploadSession()only for an intentional idle gap; retention.ttlSecondsbegins when the file is finalized;retention: nullmeans the finalized file does not expire;- an expired, failed, or aborted session cannot be resumed.
FINALIZED— use the target entry; do not upload again;RESERVEDorUPLOADING— inspect the manifest and continue deliberately;FINALIZING— wait and read again;FAILED,ABORTED, orEXPIRED— create a new session.
Next steps
- Structured files — declare CSV/TSV/XLSX columns and choose schema policy.
- Storage overview — workspaces, access, retention, and readers.
- SDK storage and batching — apply the same lifecycle from Node.js.
- Storage low-code reference — inspect exact
storage.*signatures.

