Overview
When you enable structured output, your agent will:- Process the input normally
- Extract information according to your schema
- Return validated, typed data matching your specification
- Ensure type safety and consistency
Structured output uses runtime schema generation and validation to ensure your agents return properly formatted data.
When to Use Structured Output
Data Extraction
Extract structured information from unstructured text (resumes, invoices, documents)
API Integration
Generate responses that match your API schema requirements
Database Inserts
Create records with validated fields for database operations
Multi-Agent Pipelines
Pass typed data between agents in complex workflows
Basic Configuration
Add thestructured_output field to your agent configuration:
Type Notation
Define field types using our type notation syntax:Basic Types
type
Text data
type
Integer numbers
type
Decimal numbers
type
Boolean values (true/false)
Collection Types
type
List of items of type T
type
Dictionary mapping keys of type K to values of type V
Nullable Types
type
Optional/nullable value of type T
Optional[T] syntax:
Enum types are not currently supported. Use
str type with clear descriptions for fields that should have restricted values. Guide the LLM via your system prompt to output specific allowed values.Quick Start Example
Extract contact information from text:Multi-Agent Data Passing
Use structured output to pass typed data between agents in workflows. Downstream agents can access structured outputs from previous agents using template variables in their system prompts.Accessing Structured Output in Prompts
Use the{{ agent_name.output.field }} syntax to inject structured output into agent prompts:
{{ agent_name.output.field }}— Access specific field from structured output{{ agent_name.output.nested.field }}— Access nested fields (dot-separated path){{ agent_name.output }}— Access entire structured output as JSON string{{ variables.name }}— Access custom variables (see Variables System){{ user_input }}— Latest user message{{ history[N] }}— Last N messages from conversation (structured output NOT included)
Multi-Agent Example
Pass structured data between agents:Best Practices
Configuration Reference
Schema Structure
Thestructured_output field has the following structure:
object
Configuration for structured output generation
Field Specification
Each field in the schema must have:string
required
Type notation for the fieldSee Type Notation Reference for all supported types.Supported types:
str, int, float, bool, list[T], dict[K, V], T | None, Optional[T], Anystring
Human-readable description of what this field represents (optional but strongly recommended).The agent uses this description to understand what data to extract. Be specific and clear. Fields without descriptions may produce less accurate results.
Agent Type Support
llm_agent: ✅ Fully supported - LLM agents can generate structured output for any schema
react_agent: ✅ Fully supported - ReAct agents generate structured output after completing their tool-calling iterations
Validation and Error Handling
The system automatically validates structured output:Type Checking: Values must match the declared type
Required Fields: All fields in the schema must be present in the output
Format Validation: Basic format checking for strings, numbers, etc.
Common Errors
Example Error Response
If validation fails, you’ll receive a detailed error:Variable Assignments
Structured output fields can be automatically mapped to system variables usingvariable_assignments. This creates a data pipeline: structured output → variables → downstream prompt substitution.
type. See Variables System for details.
Limitations
- Structured output is currently supported for
llm_agentandreact_agenttypes - Complex nested objects may require careful prompt engineering
- Very large schemas (>20 fields) may impact performance
- Use
str | NoneorOptional[str]for optional fields - Output must be valid JSON
- Enum types are not supported
Next Steps
Conditional Edges
Learn how to route agents based on structured output values