Skip to main content
POST
Request a presigned upload URL

Authorizations

Authorization
string
header
required

User session JWT (Bearer ). Must be paired with the X-Team-ID request header on team-scoped endpoints so the server knows which team's resources to operate on.

Headers

X-Team-ID
string<uuid>

UUID of the team to scope the request to. Used by dual-auth endpoints (runtime + scoped management):

  • JWT callers MUST send it — a user may belong to multiple teams and the runtime cannot otherwise know which one to operate on. Missing header → 400.
  • Credential callers (sk-, dk-) can omit it because the team is derived from the credential row itself. Any value sent is ignored.
Example:

"019abc12-4567-7890-abcd-ef1234567891"

Body

application/json
file_name
string
required

Original filename including extension (e.g. "photo.png", "clip.mp4").

Example:

"input_image.png"

file_size
integer<int64>
required

Exact file size in bytes.

Example:

1048576

content_type
string
required

MIME type of the file.

Example:

"image/png"

Response

Presigned upload URL generated

file_key
string
required

Opaque file reference to use as a parameter value when running a workflow. Pass this string as the value for any type: file parameter.

Example:

"inputs/019abc12-3456-7890-abcd-ef1234567890/550e8400-e29b/aW1hZ2UvcG5n/input_image.png"

upload_url
string<uri>
required

S3 PUT URL with a signed query string. Upload the file by sending a PUT request to this URL with the file as the request body. You must include all headers listed in upload_headers.

Security guarantees (enforced by the signature):

  • Content-Length — upload must match the declared file_size exactly.
  • If-None-Match: * — upload fails with 412 if the object already exists (prevents overwrite).

Example upload (curl):

Example upload (JavaScript):

Example:

"https://s3.example.com/bucket/key?X-Amz-Signature=..."

upload_headers
object
required

Required HTTP headers for the PUT upload. These headers are signed into the presigned URL — the request will fail with 403 if any header is missing or has a different value.