> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mixroute.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GPT 6.1 Sol

> OpenAI reasoning model for complex coding, computer use, and professional work, with text and image input.

OpenAI reasoning model for complex coding, computer use, and professional work, with text and image input.

Use the exact model ID `gpt-6.1-sol`. This is a separate model from `gpt-6-sol`; changing the ID also requires checking reasoning and tool-call settings.

## Model Information

| Field | Description |
| - | - |
| `model` | gpt-6.1-sol |
| `context` | 1,050,000 tokens |
| `max output` | 128,000 tokens |
| `input` | Text and images; no native audio or video input. |
| `output` | Text; supports structured output and function calling through compatible endpoints. |

Context and output sizes are model specifications. Effective limits, model availability, and pricing depend on your MixRoute account and route. Hosted tools are not automatically available on every route.

## Endpoints and Reasoning

| Endpoint | Reasoning field | Allowed values | Function calling |
| - | - | - | - |
| [Responses API](/en/api-reference/endpoint/responses-openai) | `reasoning.effort` | `low`, `medium`, `high`, `xhigh`, `max` | Supported |
| [Chat Completions API](/en/api-reference/endpoint/chat-openai) | `reasoning_effort` | `low`, `medium`, `high`, `xhigh` | Not supported for this model |

The model defaults to `medium` reasoning effort. `low` is the lowest supported level; `none` and `minimal` are invalid. For `max`, use Responses rather than the Chat Completions route.

<Warning>
  Do not use reasoning\_effort="none" as a workaround for Chat Completions tool errors. GPT 6.1 Sol does not accept none. Move tool requests to /v1/responses and use reasoning.effort="low" or a higher supported level.
</Warning>

Omit `temperature`, `top_p`, and `top_logprobs`. Also omit `logprobs` in Chat Completions and `message.output_text.logprobs` from Responses `include`. These sampling/log-probability controls are incompatible with this model's reasoning modes.

## Responses Request

Set `MIXROUTE_API_KEY` before calling.

```bash theme={null}
curl --request POST "https://api.mixroute.ai/v1/responses" \
  --header "Authorization: Bearer $MIXROUTE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "model": "gpt-6.1-sol",
  "input": "Explain the role of database indexes.",
  "reasoning": {
    "effort": "low"
  },
  "max_output_tokens": 1024,
  "store": false
}'
```

### Python

```python theme={null}
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["MIXROUTE_API_KEY"],
    base_url="https://api.mixroute.ai/v1",
)
response = client.responses.create(
    model="gpt-6.1-sol",
    input="Explain the role of database indexes.",
    reasoning={"effort": "low"},
    max_output_tokens=1024,
    store=False,
)
print(response.output_text)
```

| Field | Description |
| - | - |
| `model` | Required; use gpt-6.1-sol. |
| `input` | Required input text or an array of Responses input items. |
| `reasoning.effort` | low / medium / high / xhigh / max; default medium. |
| `max_output_tokens` | Optional budget covering visible output and reasoning tokens. |
| `stream` | Optional boolean; true enables Responses SSE events. |
| `store` | Optional boolean; false disables response storage in this example. |
| `tools` | Optional Responses tool definitions; function fields are not nested under function. |
| `tool_choice` | Optional tool selection policy or a named function object. |

## Chat Completions Without Tools

```bash theme={null}
curl --request POST "https://api.mixroute.ai/v1/chat/completions" \
  --header "Authorization: Bearer $MIXROUTE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "model": "gpt-6.1-sol",
  "messages": [
    {
      "role": "user",
      "content": "Explain the role of database indexes."
    }
  ],
  "reasoning_effort": "low",
  "max_completion_tokens": 1024
}'
```

Use `messages` rather than `input`, `reasoning_effort` rather than the nested `reasoning` object, and `max_completion_tokens` rather than `max_output_tokens`. Read the text from `choices[0].message.content`. Do not attach `tools` to this model on this endpoint.

## Function Calling

```bash theme={null}
curl --request POST "https://api.mixroute.ai/v1/responses" \
  --header "Authorization: Bearer $MIXROUTE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "model": "gpt-6.1-sol",
  "input": "Call lookup_status for service demo.",
  "reasoning": {
    "effort": "low"
  },
  "tools": [
    {
      "type": "function",
      "name": "lookup_status",
      "description": "Return the status of a named service.",
      "parameters": {
        "type": "object",
        "properties": {
          "service": {
            "type": "string"
          }
        },
        "required": [
          "service"
        ],
        "additionalProperties": false
      },
      "strict": true
    }
  ],
  "tool_choice": {
    "type": "function",
    "name": "lookup_status"
  },
  "include": [
    "reasoning.encrypted_content"
  ],
  "max_output_tokens": 1024,
  "store": false
}'
```

A function call appears as a `function_call` item in `output`, with `name`, JSON-encoded `arguments`, and `call_id`. The application validates the arguments and runs its own function; declaring a tool does not execute it on the server.

For a stateless follow-up, append the complete returned `output` array to the conversation input, followed by a `function_call_output` item with the matching `call_id` and a string `output`. Preserve any reasoning items and encrypted content unchanged. Set `tool_choice` back to `"auto"` on the follow-up so the model can answer instead of being forced to call the function again. Do not assume `output[0]` is a text message; the Python SDK provides `response.output_text` for text responses.

```json theme={null}
{
  "type": "function_call_output",
  "call_id": "CALL_ID_FROM_RESPONSE",
  "output": "{\"service\":\"demo\",\"status\":\"ok\"}"
}
```

## Migrating from GPT 6 Sol

1. Change `model` to `gpt-6.1-sol`; keep the old ID only when you intend to use GPT 6 Sol.
2. Replace `none` or `minimal` with `low`, or choose a higher supported reasoning level.
3. Move function-tool workflows from Chat Completions to Responses and use the Responses input/tool formats.
4. Remove unsupported sampling parameters. For maximum reasoning effort, use Responses.
