Skip to main content
The Workflows API behavior changes based on whether you provide a research_plan in your template. This gives you control over how structured or exploratory your research workflow should be.

How Research Plans Affect Execution

Without a Research Plan

When no research plan is provided, the agent operates dynamically:
  • Agent analyzes the prompt and creates a research strategy on the fly
  • Multiple research iterations may occur as the agent explores the topic
  • Agent decides when sufficient information has been gathered
  • More exploratory, suitable for open-ended questions

Example: Dynamic Research

With a Research Plan

When a research plan is provided, the agent follows your predefined structure:
  • Agent follows the predefined steps in order
  • Structured, predictable execution
  • Progress is tracked per step (NOT_STARTED, IN_PROGRESS, COMPLETED, SKIPPED, FAILED)
  • Better for standardized reports and consistent outputs

Example: Structured Research

Processing Streaming Responses

Workflows with and without a research plan emit the same sequence of typed SSE events. The full reference for every public message type — including a canonical Python handler that dispatches on type — lives in the Concepts section:

Streaming responses

All 11 message types, their fields, when each is emitted, and a copy-paste handler.

Grounding and citations

How GROUNDING references map to spans of the answer text.
Workflows wrap each event’s typed payload in a delta field, so dispatch on event["delta"]["type"]. The Research Agent uses an analogous message field. Everything else about the message types is identical between the two services.

Model Selection

Both approaches support model selection via model_name:
Available models:
  • base - Default, balanced performance
  • pro - Enhanced reasoning

When to Use Research Plans

Next Steps

Creating Templates

Learn template anatomy and best practices

Example Templates

Ready-to-use financial analysis templates