Skip to main content
POST
Create an upload URL
1

Get an upload URL

Call this endpoint with the file’s name, content type and exact size in bytes. Keep presignedUrl, fileKey and bucketName from the response.
2

Upload the bytes

Send the file to presignedUrl within one hour, without your API key:
Content-Type and Content-Length must match mimeType and fileSize exactly.
3

Create the file

Call Create a file with storageKey set to fileKey and url set to https://{bucketName}.s3.amazonaws.com/{fileKey}. Until then the file is not listed anywhere and workers cannot read it.
In the Heliyos MCP server: heliyos_files_upload.

Authorizations

Authorization
string
header
required

A workspace API key, sent as Authorization: Bearer heliyos_.... Create one in Heliyos under Settings → API keys. A key acts as a workspace admin in the one workspace it was created in.

Body

application/json
fileName
string
required

The file's name, up to 1,000 characters. It becomes part of the storage key, with separators and control characters replaced.

Maximum string length: 1000
Example:

"pricing-2026.pdf"

mimeType
string
required

The file's content type, one of the accepted types listed above (case-insensitive). Send exactly this value as Content-Type with the upload.

Maximum string length: 200
Example:

"application/pdf"

fileSize
integer
required

The file's exact size in bytes, from 1 to 26,214,400 (25 MB). Send exactly this value as Content-Length with the upload.

Required range: 1 <= x <= 26214400
Example:

482113

objectType
string | null

Optional. The type of record the file will be attached to: company, people, deal (or deals). Files for these types are stored in a separate folder per type. Any other value, an empty string or null stores the file in the workspace's main folder.

Example:

"company"

Response

The upload URL and the key to create the file with.

meta
object
required
data
object
required