Lifecycle
new
The name of the pipeline.
List of nodes to include in the pipeline.
A new Pipeline instance.
save
deploy=True vs deploy=False — the branch model
Think of a pipeline like a Git repo:
- Working tree — the
Pipelineobject in your Python process. Everypipeline.add(...)mutation lives here. - Main branch — the
branch_idon the server.save(deploy=False)writes your working tree to this branch as a new commit. Anything reading bybranch_id(the platform editor, ad-hocpipeline.run(...)from this SDK process) immediately sees the change. - Deployed version — what callers of the published pipeline get. Chatbots, integrations, scheduled runs, and the platform’s “Run published” button all read this version.
save(deploy=True)(the default) promotes the current main-branch state to be the new deployed version.
bump attaches a semantic-version tag ("major", "minor", or "patch") to the deploy. Consumers can then pin to that version via Pipeline.fetch(id=..., version="1.2.0") instead of always tracking latest.
In practice:
- Iterating on a draft?
save(deploy=False)— keeps the deployed version stable while you tweak. - Ready to ship?
save(deploy=True)(default) — optionally withbump="patch"+description="..."for a labelled release.
When
True, promotes the saved state to be the new deployed version (the one chatbots, integrations, and the “Run published” path will hit). When False, only updates the working/main branch — the deployed version is untouched until the next save(deploy=True).Semantic-version bump level:
"major", "minor", or "patch". Only meaningful with deploy=True. See BumpLevel.Updates the pipeline description; also used as the changelog entry when bumping a version.
returns
dict: A dictionary containing the status of the save operation.
If the pipeline update fails.
fetch
branch_id and version only apply when fetching by id.
Parameters
The unique identifier of the pipeline to fetch.
The name of the pipeline to fetch. When multiple pipelines share the same name, the most recently modified one is returned.
Fetch the pipeline for a specific branch (id-fetch only).
Semantic version to fetch (e.g.
"1.2.0"), or "latest" (id-fetch only).The username of the pipeline owner.
The organization name of the pipeline owner.
Pipeline: The fetched Pipeline instance.
If neither id nor name is provided.
list
Filter pipelines by folder.
Include shared pipelines.
Include full pipeline details.
Pagination offset.
Maximum number of pipelines to return.
A list of Pipeline instances.
delete
returns
dict: A dictionary containing the status of the deletion operation.
If the pipeline couldn’t be deleted.
duplicate
Name for the duplicate. Auto-generated if omitted.
Description for the duplicate.
Folder to place the duplicate in.
A new Pipeline instance for the duplicated pipeline.
Building
add
add_batch
execution_mode='batch'.
Usage
Node catalogue
pipeline.add(name=, id=).<node_type>(...) exposes every node type as a typed builder method. There are ~500 node types in total. The biggest categories:
| Category | Representative builders |
|---|---|
| I/O | input, output, text, file, image, audio |
| LLM & AI | llm, ai_routing, ai_filter_list, ai_operations, ai_text_to_image, ai_image_to_text, ai_text_to_speech, ai_speech_to_text, ai_fill_pdf, categorizer |
| Knowledge & retrieval | knowledge_base_reader, knowledge_base_writer, web_scraper, arxiv, wikipedia, deep_research, semantic_search, parallel_ai_search |
| Control flow | condition, ai_routing, merge, combine_text, pipeline (sub-pipeline), agent (agent-as-tool) |
| Transforms | text_formatter, combine_text, split_text, transformation (custom Python), generate_chart |
| Data sources | read_json, read_csv, dataframe_*, excel_*, append_files, file_save |
| Integrations | gmail, slack, notion, airtable, salesforce, hubspot, … (every connected service exposes a node) |
| Interaction | button, chat_*, browser_extension, api |
.text, .response, .results, .path_0, etc.) you wire into downstream nodes. The full surface ships as a .pyi stub (vectorshift/pipeline/node_adder.pyi) — your editor’s autocomplete is the canonical browseable catalogue.
add_node
The node to add to the pipeline.
remove_node
ID of the node to remove.
Name of the node to remove.
\{"status": "success", "node_id": "\<resolved_node_id>"\}Running
run
Dictionary of input nodes -> input values for the pipeline. eg: {“input_node”: “Hello, world!”}
Whether to stream the response. (Set true only when pipeline has an output node with a streaming llm input)
Whether to stream all outputs as they arrive.
Optional session ID for run grouping and tracing. Groups multiple runs under the same session for analytics and observability. Note: this does not provide conversational memory to LLM nodes — each run’s LLM nodes only see the current inputs.
Optional per-node input overrides.
Whether to send intermediate results (default: True on server).
Union[dict[str, Any], Generator]: A dictionary containing pipeline outputs and run_id. If stream is True, returns a generator that yields response chunks.
If the pipeline execution fails.
bulk_run
List of dictionaries of input values for the pipeline.
A list of dictionaries containing the run_id and outputs for each set of inputs.
If the pipeline execution fails.
run_status
The run/task ID returned by :meth:
start.A :class:
RunStatus dict with keys task_id, status, and
optionally error or result. See RunStatus.Background runs
start
Dictionary of input values for the pipeline.
Optional session ID for run grouping and tracing. Groups multiple runs under the same session for analytics and observability. Note: this does not provide conversational memory to LLM nodes — each run’s LLM nodes only see the current inputs.
Optional per-node input overrides.
Whether to send intermediate results.
URL to call when the run completes.
Pipeline version to run.
Trace ID for observability.
A :class:
RunHandler for the background run.terminate
The pipeline run ID to terminate.
\{"status": "success"\}Streaming
stream
Dictionary of input values for the pipeline.
Whether to stream all outputs as they arrive.
Optional session ID for run grouping and tracing. Groups multiple runs under the same session for analytics and observability. Note: this does not provide conversational memory to LLM nodes — each run’s LLM nodes only see the current inputs.
Optional per-node input overrides.
Pipeline version to run.
A generator of :class:
StreamChunk objects.Sharing & publishing
share
User ID to share with.
Organization ID to share with.
Permission role (
"viewer" or "editor").Display name for the shared entity.
\{"status": "success"\}unshare
User ID to unshare.
Organization ID to unshare.
\{"status": "success"\}publish
Marketplace listing title.
Marketplace listing description.
Optional list of tags.
If True, publish as internal-only.
\{"status": "success", "id": "\<marketplace_object_id>"\}unpublish
The marketplace listing ID to remove.
\{"status": "success"\}move_to_folder
Target folder ID.
\{"status": "success"\}Versioning
revert
Semantic version string, e.g.
"1.2.3".\{"status": "success"\}Serialization
to_dict
from_json
serialize_inputs
Types
Configuration objects, response shapes, and enums used by the methods above.BumpLevel
Members
PATCH="patch"MINOR="minor"MAJOR="major"
RunResult
Response from :meth:Pipeline.run / :meth:Pipeline.arun.
Fields
RunStatus
Response from :meth:Pipeline.run_status / :meth:RunHandler.run_status.
Fields
StartResult
Response from :meth:Pipeline.start background run initiation.
Fields
