Request a presigned upload URL
Request a presigned S3 PUT URL to upload a file for use as a workflow input.
Usage flow
- Call this endpoint with the file name and content type.
- Upload the file directly to the returned
upload_urlusing HTTP PUT. - Use the returned
file_keyas the value for atype: fileparameter when running a workflow.
Uploaded input files are stored in S3 and automatically cleaned up after 1 day via S3 lifecycle policy. Output artifacts from task execution are retained for 7 days.
File size limit: Configured on the server (default 500 MB).
Accepts JWT Bearer, sk- integration credential, or dk- device credential.
Documentation Index
Fetch the complete documentation index at: https://docs.cyberun.cloud/llms.txt
Use this file to discover all available pages before exploring further.
Authorizations
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
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.
"019abc12-4567-7890-abcd-ef1234567891"
Body
Response
Presigned upload URL generated
Opaque file reference to use as a parameter value when running a workflow.
Pass this string as the value for any type: file parameter.
"inputs/019abc12-3456-7890-abcd-ef1234567890/550e8400-e29b/aW1hZ2UvcG5n/input_image.png"
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 declaredfile_sizeexactly.If-None-Match: *— upload fails with 412 if the object already exists (prevents overwrite).
Example upload (curl):
curl -X PUT \
-H "Content-Length: 1048576" \
-H "If-None-Match: *" \
--upload-file photo.png \
"<upload_url>"Example upload (JavaScript):
await fetch(uploadUrl, {
method: 'PUT',
headers: uploadHeaders,
body: file,
});"https://s3.example.com/bucket/key?X-Amz-Signature=..."
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.
