Skip to content

Files

Create file upload

Create a resumable upload session and receive either a signed PUT URL or multipart instructions. OAuth scope: `api:write`.

POST/api/v2/files/uploads

Create a resumable upload session and receive either a signed PUT URL or multipart instructions.

OAuth scope: api:write.

Authentication

Send a personal or workspace API key in X-API-Key. See key types and access; operations that reject workspace keys say so in their description.

Send X-API-Key in the request header.

Alternatively

Send a Sim OAuth access token in Authorization: Bearer. See OAuth authentication and scopes.

Authorization: Bearer YOUR_ACCESS_TOKEN

Required scopes: api:write

OAuth flows
json
{
  "authorizationCode": {
    "authorizationUrl": "https://www.sim.ai/api/auth/oauth2/authorize",
    "tokenUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "refreshUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "scopes": {
      "api:read": "Read your workspaces, workflows, files, tables, and logs",
      "api:write": "Read, create, change, run, and delete resources in your workspaces",
      "offline_access": "Stay signed in without asking again"
    }
  }
}

OAuth scope: api:write.

Request body

Required

File metadata required to create an upload session.

object

File metadata required to create an upload session.

5 fields
workspaceIdstringRequired

Workspace in which the file will be registered.

minLength
1
maxLength
128
namestringRequired

File name, including its extension.

minLength
1
maxLength
255
contentTypestringRequired

MIME type of the uploaded file.

minLength
1
maxLength
255
sizeintegerRequired

Exact file size in bytes.

minimum
0
maximum
5368709120
folderPathstring

Canonical destination folder path. Omit for the workspace root.

maxLength
4096

Additional properties are not allowed.

Request example 1

json
{
  "workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
  "name": "archive.zip",
  "contentType": "application/zip",
  "size": 1048576
}

Responses

201

The created upload session and transfer instructions.

object

Upload session, signed control token, and transfer strategy.

1 field
dataobjectRequired

Response data.

3 fields
sessionobjectRequired

New upload session.

8 fields
idstringRequired

Upload session identifier.

statusstringRequired

Current upload session status.

enum
["uploading","completing","finalizing","completed","failed","aborting","aborted","expired"]
namestringRequired

File name supplied when the session was created.

contentTypestringRequired

MIME type supplied when the session was created.

sizeintegerRequired

Expected file size in bytes.

minimum
0
maximum
9007199254740991
expiresAtstringRequired

ISO 8601 time when the upload session expires.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
errorvalueRequired

Failure message, or null when no failure has occurred.

Schema details

Any of

Option 1string
Option 2null
filevalueRequired

Registered file after finalization, or null before finalization completes.

Schema details

Any of

Option 1object

A workspace file exposed by the public v2 API.

11 fields
idstringRequired

Unique file identifier.

webUrlstringRequired

Canonical absolute URL for opening this resource in the Sim web application.

format
uri
namestringRequired

Original file name.

sizenumberRequired

Size in bytes of the stored file. For a generated document (docx, pptx, pdf, xlsx) this is the generation source, not the rendered document, so it does not predict how many bytes downloading the file returns.

minimum
0
typestringRequired

MIME type of the stored file. For a generated document (docx, pptx, pdf, xlsx) this is the generation source type, not the rendered document type a download serves.

keystringRequired

Storage key for the file.

folderPathstringRequired

Canonical containing-folder path. / is the workspace root.

maxLength
4096
uploadedByEmailstringRequired

Current email address of the uploader.

format
email
pattern
^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$
uploadedAtstringRequired

ISO 8601 timestamp when the file was uploaded.

format
date-time
updatedAtstringRequired

ISO 8601 timestamp of the last content or metadata write.

format
date-time
deletedAtvalueRequired

ISO 8601 timestamp when the file was archived by deleting it, or null while the file is active. Only an archived-scope file list returns files with a non-null value.

format
date-time
Schema details

Any of

Option 1string
Option 2null

Additional properties are not allowed.

Option 2null

Additional properties are not allowed.

uploadTokenstringRequired

Signed control token required by later upload-session requests.

minLength
1
transfervalueRequired

Instructions for transferring the file bytes.

Schema details

Exactly one of

Option 1object

Instructions for uploading bytes to one signed URL.

4 fields
methodstringRequired

Upload strategy discriminator.

const
put
urlstringRequired

Signed URL to which the file bytes are uploaded. Upload bytes with PUT and exactly the supplied headers; never construct or modify the signed URL. Treat any 2xx as success. Sim-hosted URLs return an empty 204 and v2 JSON errors. Object-storage URLs may return 200 or 201 and provider-specific errors, often XML.

format
uri
headersobjectRequired

Headers that must be included with the upload request.

Schema details
Additional propertiesstring
expiresAtstringRequired

ISO 8601 expiration time for this signed URL. This is the URL's own expiry and is normally earlier than the upload session's expiresAt: the session stays open for later part, status, completion, and abort requests, but the bytes must be uploaded before this time. Once it passes, the storage provider rejects the upload and a new upload session must be created.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$

Additional properties are not allowed.

Option 2object

Instructions for splitting bytes into a multipart upload.

3 fields
methodstringRequired

Upload strategy discriminator.

const
multipart
partSizeintegerRequired

Required size of each non-final part in bytes.

maximum
9007199254740991
exclusiveMinimum
0
partCountintegerRequired

Total number of upload parts.

maximum
640
exclusiveMinimum
0

Additional properties are not allowed.

Additional properties are not allowed.

Additional properties are not allowed.

Response headers

X-RateLimit-Limitinteger

Maximum requests allowed in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Remaininginteger

Requests remaining in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Resetstring

ISO 8601 timestamp when the current rate-limit window resets.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Was this helpful?
Suggest an edit