reasoningunverifiedHand-written lesson

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
Live from the OpenRouter listing ↗

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.

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

Same board, other models.