{"model": "Qwen/Qwen3.5-27B",
"messages": [{"role": "user", "content": "Is this output valid?"}],
"response_format": {"type": "json_schema", "json_schema": {
"name": "check",
"schema": {"type": "object",
"properties": {"valid": {"type": "boolean"}},
"required": ["valid"]}}}}Which provider breaks your agent's tool calls? Daily data for every open model.
Outputs your systems can use, every time.
A JSON object that matches the complete schema. A query your database can answer. A document in your own format. .json runs inside the inference engine and enforces your schema exactly, or rejects it and names what it can't enforce. Never a silently loosened result.
Every JSON Schema keyword your tools use, enforced.
Many engines quietly skip the parts of a schema they can't enforce and return invalid output with a 200. .json enforces bounds, patterns, conditionals and recursive references exactly, or fails the request with the keyword named. Across 5,047 real-world schemas it rejected no valid output and accepted no invalid one, where the open-source engines got millions wrong between them.
Your schema in, valid JSON out
Send the schema with the request, through the OpenAI-compatible interface your engine already exposes.
Source Code Example
Output
{"valid": true}Beyond JSON
SQL and Cypher, held to your schema
Give us your tables or your graph schema. A query that uses a table, column or relationship your data doesn't have can't be written, so every query the model writes runs.
Your own formats
In-house languages, configuration files and DSLs, described once as a grammar.
Your schema is data
When your schema changes, you send the new one. Nothing is rebuilt.
Inside your engine
vLLM, SGLang, TensorRT-LLM and ONNX Runtime GenAI, licensed to run in your own stack.
Through a provider
In Doubleword's API, and on device with Liquid AI.
Outlines
The open-source library the team created, for developers who run a model themselves.
Documentation
Guides and reference for structured outputs.