S3 Storage

Upload, download, list, delete, and presign objects in S3-compatible storage. Works with AWS S3, MinIO, Cloudflare R2, DigitalOcean Spaces, and any other S3-compatible service.

Setup

Add your credentials as environment variables on the Env Vars page:

| Variable | Required | Description | |----------|----------|-------------| | AWS_ACCESS_KEY_ID | Yes | Access key ID | | AWS_SECRET_ACCESS_KEY | Yes | Secret access key | | S3_ENDPOINT_URL | No | Custom endpoint for S3-compatible services (e.g. https://<account>.r2.cloudflarestorage.com for R2, http://localhost:9000 for MinIO) |

When S3_ENDPOINT_URL is omitted, the plugin uses the default AWS S3 endpoint.

Operations

Each node run executes a single operation.

upload

Upload content to an object key.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | upload | | bucket | string | Yes | S3 bucket name. Supports {{ }} bindings. | | key | string | Yes | Object key/path (e.g. uploads/report.pdf). | | content | string | Yes | Content to upload. |

download

Download an object by key.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | download | | bucket | string | Yes | S3 bucket name. | | key | string | Yes | Object key/path to download. |

list

List objects in a bucket, optionally filtered by prefix.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | list | | bucket | string | Yes | S3 bucket name. | | prefix | string | No | Key prefix to filter results (e.g. uploads/). |

delete

Delete an object by key.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | delete | | bucket | string | Yes | S3 bucket name. | | key | string | Yes | Object key/path to delete. |

presign

Generate a time-limited presigned URL for an object.

| Field | Type | Required | Description | |-------|------|----------|-------------| | operation | enum | Yes | presign | | bucket | string | Yes | S3 bucket name. | | key | string | Yes | Object key/path. | | expires_in | number | No | URL expiry in seconds (default 3600). |

As an AI Agent Tool

Connect an S3 Storage node to an AI Agent Tools handle to let the agent upload files, list bucket contents, or generate download links.

Use Allowed Operations (Agent) to restrict which storage actions the agent can perform — for example, allow upload and list but exclude delete. This setting is excluded from the tool schema.

When used as a tool, the agent supplies operation, bucket, key, and other relevant fields as tool arguments.

Output

All operations emit a result object on the result handle, accessible downstream as {{ s3.* }}:

| Field | Type | Description | |-------|------|-------------| | success | boolean | Whether the operation succeeded | | url | string | Object URL or presigned URL when applicable | | content | string | Downloaded content (for download) | | objects | array | Listed objects with keys and metadata (for list) | | error | string | Error message if success is false |

{
  "success": true,
  "url": "https://my-bucket.s3.amazonaws.com/uploads/report.pdf",
  "content": null,
  "objects": [{ "key": "uploads/report.pdf", "size": 1024 }],
  "error": null
}
On this page