Skip to main content
POST
Create a file (presigned upload)

Authorizations

Authorization
string
header
required

Personal API key, e.g. Authorization: Bearer sajn_sk_.... Not scope-limited — acts as the issuing user.

Headers

Sajn-Version
enum<string>

API version for this request. Without it, the request uses the organization's default version; an organization without a default is pinned to the latest version by its first request.

Available options:
2026-09,
2026-10
Sajn-Workspace
string

ID of the workspace this request acts in, from GET /api/v1/workspaces. Without it, an API key acts in its default workspace. The token's user must be a member of the workspace; an OAuth token only accepts the workspace it was granted for. A workspace that doesn't exist or can't be reached returns 403 WORKSPACE_ACCESS_DENIED.

Idempotency-Key
string

Makes retries safe. A retry with the same key and the same request replays the stored response for 24 hours (header Idempotent-Replayed: true); the same key with a different request returns 400.

Maximum string length: 255

Body

application/json

Body

Request a presigned upload URL and create a pending file record

fileName
string
required

Original filename including its extension

Required string length: 1 - 255
mimeType
enum<string>
required

MIME type of the file

Available options:
application/pdf,
application/msword,
application/vnd.openxmlformats-officedocument.wordprocessingml.document,
application/vnd.ms-excel,
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
application/vnd.ms-powerpoint,
application/vnd.openxmlformats-officedocument.presentationml.presentation,
video/mp4,
video/quicktime,
video/x-msvideo,
video/webm,
image/jpeg,
image/png,
image/gif,
image/webp,
image/svg+xml
size
integer
required

File size in bytes (max 25 MB)

Required range: x <= 26214400
checksum
string
required

Base64-encoded SHA-256 checksum of the file. S3 enforces it on upload, so a mismatch rejects the bytes.

Minimum string length: 1
visibility
enum<string>
default:PRIVATE

File visibility (default PRIVATE)

Available options:
PRIVATE,
PUBLIC

Response

The created file and the URL to upload its bytes to

The created file and the URL to upload its bytes to

id
string
required

Unique file identifier

filename
string
required

Original filename

mimeType
string
required

MIME type of the file

size
number
required

File size in bytes

visibility
enum<string>
required

File visibility

Available options:
PRIVATE,
PUBLIC
url
string<uri>
required

URL to access the file (signed URL for private, direct URL for public)

createdAt
string<date-time>
required

Date and time when file was uploaded

updatedAt
string<date-time>
required

Date and time when file was last updated

uploadedBy
object
required

The user who uploaded the file

key
string
required

The storage key of the file. Set it as a PDF field's fieldMeta.value to render the file.

uploadUrl
string<uri>
required

Presigned PUT URL (valid 15 minutes). Upload the bytes here with headers Content-Type: and x-amz-checksum-sha256: .