Skip to content

Object Storage Upload

Overview

The Object Storage Upload node uploads a file or binary payload to an S3-compatible object storage bucket and emits the resulting object URL and metadata on success. Configure it with a storage credential reference, target bucket, and destination key (path); the key supports template variables for dynamic naming. On upload failure the node routes to the error output, carrying the provider error message, so downstream nodes can handle retries or fallback logic without stopping the workflow.

Configuration

FieldTypeRequiredDescription
credentialIdstringYesID of the stored S3-compatible credential (access key + secret + endpoint). Resolved at runtime from the workflow's credential store.
bucketstringYesTarget bucket name. Must already exist; the node does not create buckets.
keystringYesDestination object key (path within the bucket). Supports template variables, e.g. results/{{runId}}/output.json.
contentTypestringNoMIME type set on the uploaded object (e.g. application/json, image/png). Defaults to application/octet-stream when omitted.
aclenumNoCanned ACL applied to the object. One of: private (default), public-read, authenticated-read.
overwritebooleanNoWhen false, the upload fails if an object already exists at the target key. Defaults to true.
regionstringNoAWS region or equivalent for the storage endpoint (e.g. us-east-1). Required for AWS S3; optional for self-hosted providers.

Inputs

PortTypeDescription
filebinary buffer or stringThe file content to upload. Accepts a raw binary Buffer or a base64-encoded string. When a string is provided the node decodes it before upload.
keystringOptional runtime override for the destination object key. Takes precedence over the static key config field when present.

Outputs

PortTypeDescription
outputupload result objectEmitted on successful upload. url is the public or presigned URL of the uploaded object depending on the configured ACL.
errorerror objectEmitted when the upload fails (network error, auth failure, key conflict when overwrite is false, etc.). The workflow continues from this port rather than halting.

Example

json
{
  "nodeType": "object_storage_upload",
  "config": {
    "credentialId": "cred_s3_battle_artifacts",
    "bucket": "lenserfight-battle-results",
    "key": "battles/{{battleId}}/{{runId}}/result.json",
    "contentType": "application/json",
    "acl": "private",
    "overwrite": false
  }
}