Create an upload URL
Start an upload that sends the file bytes straight to storage.
Creates the file record and returns a signed URL that accepts the bytes as the body of an HTTP PUT for the next 15 minutes. Send exactly the returned headers on the PUT and no Authorization header, then confirm the upload to make the file visible. The URL only creates the object, never replaces one, and refuses bodies over 500 MB. Asking again for an instrument path whose upload was never confirmed returns a fresh URL for the same file, so a failed PUT can be retried. Asking for an instrument path that holds an API-uploaded file returns a URL for new contents, which replace the file’s contents on confirmation. A path the Sync app uploaded returns a 409. The SDK’s files.upload() runs all three steps; the Upload files guide shows them with curl.
At least one of job_execution_id and instrument_id is required, except in a job script, whose uploads default to the running job’s execution. Pass a job_execution_id for an artifact of a job execution, which also records provenance linking the file to that execution, and pass an instrument_id for data captured off-platform by an instrument the Sync app cannot reach, which attaches the file to that instrument so instrument triggers and parsers pick it up.
Requires an API key with the write scope.
Authentication
Bearer authentication of the form Bearer <token>, where token is your auth token.
Request
MIME type of the file. Defaults to application/octet-stream, which is also substituted for types a browser could render as a page.
The instrument that captured the file, for off-platform data.
Response
Headers the PUT must carry exactly as given; the URL is signed for them. They set the Content-Type, let the object be created but not replaced, and cap the body at the platform’s file size limit.