Structured Outputs vs Function Calling: When to Use Which in 2026
Same JSON, different guarantees. Here is how we pick between them on real production systems.
Both give you JSON. Only one guarantees the schema. Only one is designed for the model to decide when to act. Pick wrong and you will fight the framework for a month.
Structured outputs
Use when you know exactly what shape you want and the model should always return it. Great for extraction, classification, and forms. The provider enforces the schema so you skip most validation code.
Function calling / tools
Use when the model must decide whether and which action to take. Great for agents, chat with side effects, and multi-step flows. You still need to validate arguments — providers only guarantee shape, not semantics.
Latency and cost
- Structured outputs add 5–15% latency vs plain text on most providers.
- Tool calling can loop; always cap steps and budget.
Where both break
- Deeply nested schemas — flatten them or accuracy drops.
- Optional-vs-required confusion — be explicit and add examples.
- Enum drift — validate against a source of truth, not the schema alone.
Our default
Structured outputs for anything that is "give me this JSON." Tool calling for anything that is "figure out what to do next."
FAQ
Frequently asked questions
Can I mix them?+
Yes. Tool calls that return structured output are a common pattern for agents.
Which providers support both?+
OpenAI, Anthropic, and Google all support both in 2026, with minor schema quirks.
Building something similar?
Let's talk in 30 minutes.

