Skip to main content

Object Storage Functions

An object bucket stores whole objects under a name. Use it for anything too big for a key-value bucket: a generated document, an inbound attachment, a nightly export. Five functions are available to a Function step: Buckets are per-account. There is no delete function — remove a bucket or an object from the platform UI.
An object is addressed by name, not key. The two storage families use different parameter names for the same idea.

Text in, text out

These functions move text, not binary. put-object-by-key stringifies anything that is not already a string and writes the UTF-8 bytes; get-object-from-bucket decodes the bytes back as UTF-8. A JSON document, a CSV or an XML payload round-trips exactly. A PDF or an image does not — base64-encode it first with base64-encode and decode it on the way out. Bucket names must match [a-zA-Z0-9_-]+.

create-object-store-bucket

string
required
Bucket name. Must be unique in the account and match [a-zA-Z0-9_-]+.
string
Free text shown alongside the bucket.
integer
Maximum total size of the bucket in bytes.
string
"file" or "memory". Default "file". Lower case — a capitalised value is rejected.
integer
Copies kept across the cluster. Default 1, maximum 5.
boolean
Compress the underlying storage.
object
Arbitrary string key-value pairs stored against the bucket.
Payload
Returns
A bucket that already exists comes back as {"status_code": 409, "body": {"error": "..."}}.
The ttl field this function’s form offers does nothing. The bucket configuration the platform actually reads names that setting max_age, so a ttl value is dropped and objects never expire. Delete objects you no longer want, or send max_age (in nanoseconds) through the JSON editor.

put-object-by-key

Writes an object. Writing an existing name replaces it.
string
required
Bucket to write into. The bucket must already exist.
string
required
Object name.
string | object
required
The content. Anything that is not a string is serialised to JSON first.
Payload
Returns
A write that fails returns {"status_code": 500, "body": {"error": "..."}} — and that is still a successful step. See Failure.

get-object-from-bucket

string
required
Bucket to read from.
string
required
Object to read.
boolean
Parse the decoded text as JSON. Leave it off to get the raw text.
Payload
Returns
A missing object returns {"status_code": 404, "body": {"error": "Not found"}} — note the shallower shape: there is no body.body to read. Test $.STEP_ID.status_code before reaching for the value. If json is set and the text is not valid JSON, the raw text is returned rather than an error.

list-object-store-buckets

Lists every object bucket in the account. Takes no parameters — an empty payload {} is correct. Returns
size is the bucket’s total bytes. The function’s declared output schema names this field entryTotal; the field on the wire is size.

list-object-keys

Lists object metadata — never the content.
string
required
Bucket to list.
integer
Maximum entries in one page. Defaults to 500.
integer
Sequence to start from.
Payload
Returns
results_total counts the rows in this page, not the bucket. When a page is cut short — by your limit or by the reply’s own size budget — the body also carries truncated: true and a next_cursor string; send that string back as cursor to continue. Treat the cursor as opaque. To get the content of each object you need a get-object-from-bucket call per name.

Failure

Every function on this page catches its own errors and returns a body containing error. That is a successful step — the run continues and the next step reads an object with an error key where it expected data. Branch on it before using the result:
See Building Reliable Flows for what a part-completed run leaves behind.

Key-Value Storage

For small values addressed by key

Utilities

base64, templating, format conversion, SFTP

Upload Trigger

Starting a flow from a file

Functions Overview

The full catalogue