Skip to main content

API Reference

All methods are available in both TypeScript and Python SDKs. TypeScript uses camelCase, Python uses snake_case.

Nodes

Read and write node data in the workflow.

nodes.getOutput(nodeId)

Read a node’s last execution output. Returns whatever exists, which may be from a cron run, manual execution, or webhook trigger.

nodes.getConfig(nodeId)

Read a node’s configuration fields.

nodes.setConfig(nodeId, config)

Set configuration fields on a node (merges with existing config).

nodes.list()

List all nodes in the workflow.

Execution

Run nodes and track results.

execution.runNodesAndGetOutput(runNodes, targetNodes)

Run nodes and stream output as each target node completes. Parameters:
  • runNodes: nodes to execute. String IDs or { id, config } objects with temporary config overrides.
  • targetNodes: node IDs whose output to collect.
With config overrides (temporary, doesn’t save):

execution.runNodesInBackground(runNodes)

Fire-and-forget execution. Returns immediately.

execution.stop()

Stop the current workflow execution.

execution.onNodeState(nodeId, handler)

Subscribe to a node’s execution state changes. Works for any trigger (manual, cron, webhook).

execution.onNodeOutput(nodeId, handler)

Subscribe to a node’s output in real-time. Fires whenever the node produces output, from any source.

State

Persistent key-value storage via state-manager nodes. Requires a State Manager node in the workflow.

state.get(key)

state.set(key, value)

state.del(key)

Remove a key entirely.

state.update(key, updater)

Read-modify-write with an updater function. The function runs locally (not on the server).

state.keys()

List all available state keys.

state.onChange(key, handler)

Subscribe to state changes. Fires on set and del from any source.

Auth

Credential management and OAuth flows.

auth.listCredentials()

List all available credentials for the user.

auth.hasCredential(credentialType)

Check if a credential of the given type exists.

auth.requestCredential(credentialType)

Only available in custom components (iframe context). Opens the NoClick OAuth popup.
Trigger an OAuth flow. Scopes are automatically resolved from node schemas.

auth.createCredential(credentialType, data, name?)

Create a non-OAuth credential (API key, token, etc). The component provides its own input UI.

Resources

File and blob storage via R2. Scoped to the workflow.

resources.upload(name, mimeType, sizeBytes)

Create a resource and get a presigned upload URL. PUT the file body to the URL.

resources.getUrl(resourceId)

Get a presigned download URL.

resources.list(resourceType?)

List resources in the workflow. Optionally filter by type ('file', 'image', 'dataset', etc).

resources.remove(resourceId)

Delete a resource and its stored data.

Dataset

Tabular data with CRUD operations. Backed by PostgreSQL, scalable for large datasets. Rows are schemaless JSONB.

dataset.create(name)

Create a new dataset. Returns the resource ID.

dataset.list()

List all datasets in the workflow.

dataset.appendRows(resourceId, rows)

Append rows to a dataset. Each row is an arbitrary JSON object.

dataset.getRows(resourceId, options?)

Get paginated rows from a dataset.

dataset.updateRow(resourceId, rowId, data)

Update a single row’s data.

dataset.deleteRows(resourceId, rowIds)

Delete rows by their UUIDs.

Workflow

workflow.getInfo()

Get information about the current workflow.

workflow.nodeId (TypeScript only)

The current component’s node ID. Set automatically in iframe context.