90 days of the enterprise, pro and team plans free, no card needed. See the plans
Best models
Every model in the live reference catalogue with structured output, ranked by the intelligence index (Artificial Analysis, 0-100) with vendor list prices per million tokens. 12 qualify today.
Strongest first; price breaks ties. Value is index points per blended dollar. Click a model for its full specification, or compare two side by side.
| # | Model | Intelligence index | Input / 1M | Output / 1M | Context | Value | Compare |
|---|---|---|---|---|---|---|---|
| 1 | 58 | $4.00 | $20.0 | 1M | 7 | ||
| 2 | 56 | $2.00 | $10.0 | 1M | 14 | vs Claude Opus 5.5 | |
| 3 | 53 | $10.0 | $50.0 | 1M | 3 | vs Claude Opus 5.5 | |
| 4 | 53 | $10.0 | $50.0 | 1.1M | 3 | vs Claude Opus 5.5 | |
| 5 | 53 | $2.00 | $10.0 | 1.0M | 13 | vs Claude Opus 5.5 | |
| 6 | 52 | $2.00 | $10.0 | 1.1M | 13 | vs Claude Opus 5.5 | |
| 7 | 51 | $5.00 | $25.0 | 1M | 5 | vs Claude Opus 5.5 | |
| 8 | 50 | $10.0 | $50.0 | 1M | 2 | vs Claude Opus 5.5 | |
| 9 | 48 | $1.25 | $4.25 | 1.0M | 24 | vs Claude Opus 5.5 | |
| 10 | 48 | $2.00 | $10.0 | 1.1M | 12 | vs Claude Opus 5.5 | |
| 11 | 47 | $4.00 | $20.0 | 1.1M | 6 | vs Claude Opus 5.5 | |
| 12 | 46 | $2.00 | $6.00 | 500K | 15 | vs Claude Opus 5.5 |
When a program parses the answer, the model's job is to produce exactly the shape asked for - a JSON object matching a schema, a label from a fixed set, a table. Only models offering structured (schema-constrained) output qualify here; a model that is merely asked nicely for JSON returns prose often enough to break a pipeline.
Extraction and classification are high-volume and short, so price matters as much as the index - the value ranking below is usually the right one. The index still earns its place: a model that constrains the shape but misreads the document fills the schema with wrong values.
The router adds two things. It only considers models that honour the schema when the request carries one, and it learns from your outcomes - a parse failure or a rejected extraction reported as feedback moves the next similar request to a model that holds up. Extraction pipelines also benefit from the output guard: a response that does not match the schema is caught before it reaches your code, retried on the next admissible model, and counted against the first model's quality estimate so the ranking the router uses reflects what actually parsed.
Declare the models as targets and let the rule send the hard requests to the strongest one and the rest to the best value; the trace names the rule that fired.
# rules.yaml - structured-output: the strongest qualifying model for the hard requests, the best value for the rest
rules:
- name: structured-output-hard
when: { actions: [extract, classify] }
prefer: [claude-opus-5.5]
weight: 0.8
- name: structured-output-default
when: { max_complexity: 0.45 }
prefer: [muse-spark-1.3]
weight: 0.6