OpenAI
GPT-6.1 Sol
openai/gpt-6.1-sol
OpenAI's GPT-6 series model below the flagship Astra, suited to agentic coding, computer use, and document-heavy professional work. Takes files and images directly.
RoleThe document-heavy agent
$2
In / M
$10
Out / M
1.1M
Context
- AA intelligence index
- 54.6
- Inputs
- file, image, text
- Outputs
- text
- Tools
- Listed
- Structured output
- Listed
- Reasoning
- Listed
- Weights
- Not verified
- Listed
- Sep 29, 2026
01 · What it's good at
Use it for this.
Three jobs this model is built for, and the ones to give to something else.
01
Agentic coding with tool calls
02
Document-heavy work: contracts, reports, spreadsheets, PDFs
03
Computer-use style tasks that step through an interface
Skip it for
- Latency-critical chat. Reasoning is on by default
- Bulk classification. GPT-6 Luna or a decision model is cheaper
02 · Example tasks
What you'd actually send it.
Real inputs, not a benchmark. Paste one into the snippet below to try it.
You send
Here are three vendor contracts (PDF). Extract term, renewal, liability cap, and termination clauses into one comparison table with page references.
Why this model
File input plus long context means you can skip a separate OCR step.
03 · Your stack
Where it sits: Plan & reason.
Use it as the main agent model, or as the document worker behind an internal tool: upload PDFs and spreadsheets, get structured output back, and store it.
Layer 01
Retrieve
Layer 02 · this model
Plan & reason
Layer 03
Do the volume
Layer 04
Gate & route
Layer 05
Draw, speak, listen
04 · Wire it up
One request. Paste and run.
Uses OpenRouter, so one key works for every model on this site. Set OPENROUTER_API_KEY and swap the prompt for one of the tasks above.
// OpenRouter speaks the OpenAI Chat Completions format.
const res = await fetch("https://openrouter.ai/api/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"model": "openai/gpt-6.1-sol",
"messages": [
{
"role": "user",
"content": "Extract the term, renewal, liability cap, and termination clause from this contract text: <paste contract>"
}
],
"reasoning": {
"effort": "medium"
},
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "contract_terms",
"strict": true,
"schema": {
"type": "object",
"properties": {
"term_months": {
"type": "number"
},
"auto_renews": {
"type": "boolean"
},
"liability_cap": {
"type": "string"
},
"termination": {
"type": "string"
}
},
"required": [
"term_months",
"auto_renews",
"liability_cap",
"termination"
],
"additionalProperties": false
}
}
}
}),
});
const data = await res.json();
const result = JSON.parse(data.choices[0].message.content);
console.log(result);
05 · Watch out for
Gotchas.
Reasoning is on by default (effort: medium on the listing).
The Pro listing is the same model with a heavier reasoning mode, and it spends far more per request.
Moving from older GPT models? Read OpenRouter's GPT-6 migration guide for the tool-calling changes.
Sources
Lessons are written from each model's listing and the linked docs. We don't publish our own benchmark numbers; the index above is Artificial Analysis, as shown on OpenRouter.
Keep learning