Flow step types overview

Build a Flow by combining steps that each perform one job. Steps can call AI models, fetch data, or branch based on logic. Open the Flow builder. Choose steps from four categories: AI, Context, Actions, and Replies.

Use this page to choose a step for each job in your Flow.

AI

Use AI steps to call models and generate responses.

Run Task

Send a prompt to an AI model and get a response. Set the response format to JSON when a later step needs structured data. Configure model access before you run the step.

Use Run Task for text generation, summarization, classification, analysis, structured data extraction, and question answering.

Run Agent

Run a conversational AI step with message history and tool calling. Run Agent uses previous messages to maintain context across turns and can call Tools.

Use Run Agent for multi-turn conversations, workflows that call tools, and tasks that need iterative reasoning.

For multi-turn conversations or external tool calls, choose Run Agent. For single prompts, choose Run Task.

Context

Use Context steps to gather, store, and prepare data for your Flow.

Crawl Website

Crawl a website and extract content from multiple pages. Use this step when you need information from more than one page.

Use Crawl Website to scrape documentation sites, pull structured content from web pages, or provide website data to AI steps.

Requests come from data center IP addresses

Crawl Website and Fetch URL send requests from Runtype data center IP ranges. Sites can identify these requests as automated traffic. News sites, social platforms, and e-commerce sites can block or rate-limit them. Sites behind a web application firewall (WAF) or anti-bot service can do the same. They can return a challenge page, a 403 response, or empty content. A request that works in your browser can produce a different result.

When direct requests are blocked, use a Firecrawl or Massive fetch method. You can also use the firecrawl or massive built-in tools or the Exa AI Search step. These providers retrieve content through their own infrastructure. They support rendering and anti-bot handling. You can fetch directly first, then use Firecrawl, Massive, or Exa as a fallback.

Fetch URL

Fetch content from one URL. Choose a fetch method such as Firecrawl or Massive when you need richer scraping or content that is difficult to retrieve.

Use Fetch URL to read web pages, pull data from public endpoints, or fetch files and documents by URL.

Get Record

Load one Record from the Runtype data store by ID, type, name, or filter. If several Records match, the step returns the one with the newest update. For an overview of Records, see What are Records?.

Use Get Record to look up one customer, check a cache entry, or reference one saved item.

List Records

Load Records that match a type, name, or filter as an array. The step orders the results from newest to oldest.

Use List Records when the number of matching Records can vary. For example, load a customer’s tickets or a knowledge base collection.

Upsert Record

Create a Record or update an existing Record. Use this step to save data to Runtype for later use. For more information, see Creating and managing records.

Use Upsert Record to save conversation history, cache AI results, store processed data, or build a knowledge base.

Update Record

Modify specific fields on an existing Record without replacing the entire Record.

Use Update Record to update a Record’s status, append metadata, or change individual fields.

Search the web with Exa or a model-based search provider.

Use AI Search to find current information, research topics, or add web data to an AI response.

Generate Embedding

Convert text into vector embeddings with an AI model. The step returns an embedding for use in semantic search.

Use Generate Embedding to prepare data for similarity search or a retrieval-augmented generation (RAG) pipeline.

Find similar content by comparing vector embeddings in a connected vector store. Choose Weaviate, pgvector, or Vectorize as the vector store.

Use Vector Search for semantic search, related-document retrieval, or RAG systems.

Store Vector

Save vector embeddings to a connected vector store so another step can search them later.

Use Store Vector to index content for a searchable embedding database or a RAG system.

Paginate API

Fetch all pages from an API that returns paginated results. Choose cursor, offset, page-number, or link-header pagination.

Use Paginate API to collect complete datasets from APIs that spread results across multiple pages.

Render Template

Render a Liquid template as HTML, email HTML, markdown, PDF, or plain text. Use Render Template when your data is ready and the output is a structured document.

Use Render Template to generate invoices, receipts, email bodies, reports, or other documents from data.

Store Asset

Save a file to asset storage from a URL or inline base64 content. The step returns a public URL or a time-limited signed URL.

Use Store Asset to persist generated files, store downloaded content, or make files available by URL.

Generate PDF

Render HTML or markdown as a PDF, store it in asset storage, and return a shareable URL.

Use Generate PDF to create downloadable reports, invoices, certificates, or other PDF documents.

Actions

Use the Actions category to call APIs, run code, send messages, and control your Flow.

Make API Call

Send an HTTP request with control over the method, headers, body, and authentication.

Use Make API Call to call third-party APIs, send webhooks, or integrate with external services.

Wait Until

Pause your Flow for a set amount of time, or poll an API until a condition is met. You can check a status code or a response value.

Use Wait Until to wait for an external process, poll for readiness, or add a delay between steps.

Send Email

Send an email with HTML or plain-text content.

Use Send Email for notifications, alerts, customer communication, or AI-generated reports.

Run Code

Run custom code in a sandbox to transform data, calculate values, or apply logic that other step types do not cover.

Run Code supports helper utilities. Support for async/await depends on the selected sandbox provider.

Send Event

Send an analytics event to PostHog. To send an event to another analytics service, use Make API Call with that service’s ingestion endpoint.

Use Send Event to track usage, log events, or trigger analytics workflows.

Set Variable

Set a Flow variable to a static value, a template string, or a JSON object without running code. A reference inside other text becomes part of a string. A value that consists of one {{reference}} keeps its original type, such as an object, array, number, boolean, or null.

Use Set Variable to initialize variables, set defaults, copy a nested field, or pass data between steps.

Execute Agent

Run an existing Agent with a message and capture its response. Use this step to combine a Flow with an Agent.

Use Execute Agent to delegate work to an Agent or combine Flow control with Agent behavior.

Conditional Logic

Branch your Flow based on a condition. Define the steps that run when the condition is true and the steps that run when it is false.

Use Conditional Logic for if/else logic, data-based routing, error handling, or skipped steps.

Bounded Loop

Repeat a fixed body until a deterministic verdict expression passes, with a required maximum of 1–10 rounds. Every round shares the same Flow variables.

Use a loop step for draft/review/revise, generate/validate/repair, and other bounded refinement sequences. For configuration examples, see Using bounded loops.

Bounded loops are currently authored through API JSON, MCP, or the TypeScript SDK. They are not yet selectable or editable in the Dashboard Flow builder.

Tool Call

Invoke a tool directly from a Flow step. Pass parameters explicitly and capture the result without using an AI model for tool selection. toolId takes a saved tool’s ID, its tool:<name> reference, or a built-in / platform catalog ID such as builtin:store_asset or platform:orthogonal:apollo:people_match. Supply per-tool settings for a catalog tool — the values a prompt step’s tool configuration collects, such as a vector-search provider or a Slack integrationId — with the optional config.toolConfig object. A catalog ID no tool answers to is rejected at save time: see Tool-call step points at an unknown catalog tool.

Use Tool Call for deterministic tool execution, saved-tool API calls, or data pipelines.

A Tool Call step is deterministic and has no approval gate: it runs whenever the Flow reaches it, with the parameters you wrote. That is true for a catalog tool too, so a step on builtin:send_email or a builtin:browser:* tool sends and browses unattended. Approval gating applies to model-chosen tool calls in an Agent or a prompt step.

Replies

Use the Replies category to send data from your Flow to the client.

Send Stream of Data

Stream data to the client while your Flow runs instead of waiting for the complete result.

Use Send Stream of Data to show progress updates, stream AI responses, or provide real-time feedback.

Working with external services

Some steps connect to external services:

  • AI Search uses Exa or a model-based search provider.
  • Fetch URL supports Firecrawl and Massive for enhanced web scraping.
  • Vector Search and Store Vector use connected vector stores, such as Weaviate, pgvector, or Vectorize.

For actions such as creating GitHub issues, sending Slack messages, or posting to Linear, use Make API Call for direct integrations. You can also add Tools to a Run Agent step.

For GitHub content, use Make API Call with the GitHub REST API (https://api.github.com). You can also add the GitHub tool to a Run Agent step. For integration details, see GitHub integration. To clone a repository and work on it, use Run Code with a container sandbox provider.

Common flow patterns

Use the following sequence as a starting point for a typical Flow:

  1. Validate and prepare: Use Run Code or Conditional Logic to check and shape incoming data.
  2. Gather context: Load Records, call APIs, or search the web for information that the AI needs.
  3. Process with AI: Use Run Task or Run Agent to generate or analyze content.
  4. Format the output: Transform results into the shape that your application expects.
  5. Save and notify: Use Upsert Record, Send Email, Make API Call, or Send Stream of Data.

You do not need every step in every Flow. Start with one Run Task step, then add steps as your Flow needs them.

Next steps

Continue with one of these guides: